feat(old-items): complete reuse workflow and refine miniapp home
This commit is contained in:
@@ -306,3 +306,73 @@ Phase 0 提供:
|
||||
- `POST /api/v1/admin/financial-disclosures/:publicId/transition`
|
||||
|
||||
创建、发布和归档使用客户端 UUID 幂等;编辑只允许草稿且要求 expectedRevision。状态为 `DRAFT → PUBLISHED → ARCHIVED`,状态变化与历史、审计事务一致。DOCX 在管理端浏览器转换为富文本,API 只接受并白名单清洗富文本,不执行 Office 文件。
|
||||
|
||||
---
|
||||
|
||||
## 13. 旧物善用 Phase 1 API
|
||||
|
||||
公众只读接口:
|
||||
|
||||
- `GET /api/v1/old-items/stats`
|
||||
- `GET /api/v1/old-items/needs`、`GET /api/v1/old-items/needs/:publicId`
|
||||
- `GET /api/v1/old-items/drop-off-points`
|
||||
|
||||
微信会话接口:
|
||||
|
||||
- `POST /api/v1/old-items/media/upload-intents`、`POST /api/v1/old-items/media/:publicId/confirm`
|
||||
- `GET /api/v1/old-items/me/media/:publicId/download`(本人私有图片短期 URL)
|
||||
- `POST /api/v1/old-items/donations`
|
||||
- `GET /api/v1/old-items/me/donations`、`GET /api/v1/old-items/me/donations/:publicId`
|
||||
|
||||
管理端接口:
|
||||
|
||||
- `GET /api/v1/admin/old-items/donations`、`GET /api/v1/admin/old-items/donations/:publicId`
|
||||
- `GET /api/v1/admin/old-items/assignees`
|
||||
- `GET /api/v1/admin/old-items/media/:publicId/download`(授权管理人员短期 URL)
|
||||
- `POST /api/v1/admin/old-items/donations/:publicId/transition`
|
||||
- `GET/POST /api/v1/admin/old-items/needs`、`GET/PATCH /api/v1/admin/old-items/needs/:publicId`
|
||||
- `POST /api/v1/admin/old-items/needs/:publicId/transition`
|
||||
- `POST /api/v1/admin/old-items/drop-off-points`
|
||||
|
||||
捐赠创建、需求创建及全部状态变化使用客户端 UUID 幂等。状态变化要求 `expectedRevision`,通过条件更新、只追加历史和审计在一个数据库事务中提交。本人接口按 donor user 强制隔离;管理端敏感详情查看单独审计。图片最多六张,使用私有对象前缀、短期预签名上传和对象元数据确认,不返回永久公开地址。
|
||||
|
||||
捐赠主流程为 `SUBMITTED → WAITING_PICKUP/WAITING_DROP_OFF → RECEIVED → PROCESSING → COMPLETED`;审核可进入 `REJECTED`,接收前可进入 `CANCELLED`。完成定向捐赠时在同一事务增加需求已满足数量。统计直接从已接收或已完成捐赠事实计算,不提供人工覆盖接口。
|
||||
|
||||
---
|
||||
|
||||
## 14. 旧物善用 Phase 2 台账 API
|
||||
|
||||
管理端接口:
|
||||
|
||||
- `GET/POST /api/v1/admin/old-items/inventory`
|
||||
- `GET /api/v1/admin/old-items/inventory/:publicId`
|
||||
- `POST /api/v1/admin/old-items/inventory/import`
|
||||
- `POST /api/v1/admin/old-items/inventory/:publicId/transition`
|
||||
- `GET /api/v1/admin/old-items/inventory-export/file`
|
||||
|
||||
权限拆分为 `old_item_inventory:read/manage/import/export`。手工入库和批量导入都创建 `IN_STOCK` 主记录与 `INBOUND` 事件;批量导入最多 500 行、全有或全无。状态只允许 `IN_STOCK → SORTED → DISINFECTED → OUTBOUND → DELIVERED`。出库必须绑定定向需求、有效受助对象或帮扶区域之一,落地必须填写实际帮扶人数。所有创建/导入/状态变更使用客户端 UUID、请求指纹、revision、条件更新、只追加事件和事务审计。
|
||||
|
||||
导出最多 5000 条,返回用于浏览器生成 `.xlsx` 的最小化结构化行,不包含联系人、手机号、详细地址、受助对象姓名和内部备注,并记录导出审计。小程序既有捐赠详情响应增加 `inventoryTrace`,仅包含状态、时间以及出库/落地的粗粒度地区。
|
||||
|
||||
---
|
||||
|
||||
## 15. 旧物善用 Phase 3 荣誉 API
|
||||
|
||||
微信会话接口:
|
||||
|
||||
- `GET /api/v1/old-items/me/rewards`
|
||||
- `GET /api/v1/old-items/me/certificates/:publicId`
|
||||
|
||||
管理端接口:
|
||||
|
||||
- `GET /api/v1/admin/old-items/reward-config`
|
||||
- `POST /api/v1/admin/old-items/reward-config/activate`
|
||||
- `GET /api/v1/admin/old-items/reward-accounts`
|
||||
- `POST /api/v1/admin/old-items/reward-accounts/:userPublicId/adjust`
|
||||
- `GET /api/v1/admin/old-items/certificates`
|
||||
- `POST /api/v1/admin/old-items/donations/:publicId/certificate`
|
||||
- `POST /api/v1/admin/old-items/certificates/:publicId/revoke`
|
||||
|
||||
管理端权限拆分为 `old_item_rewards:read/manage`。规则激活、补发、撤销和积分调整使用客户端 UUID、请求指纹及事务审计;积分调整还要求账户 `expectedRevision`,不允许调整为负余额。证书模板仅允许固定纯文本占位符,由服务端渲染并作为快照保存,不接受 HTML。本人接口按用户资源归属隔离;不存在公众证书查询接口。
|
||||
|
||||
捐赠直接完成或关联物资台账落地时,证书与积分随 `COMPLETED` 状态在同一事务生成。证书补发不会重复计分;规则变更不追溯修改既有证书和流水。
|
||||
|
||||
Reference in New Issue
Block a user