fix(consignment): 确认加好友与上传赠送截图恢复为卖家操作,客服兜底
问题:卖家「我的寄卖」里"已匹配-待加好友"的货点不了确认加好友,提示还写着"等待客服确认加好友"。 原因:批次 I 把能力位绑在"订单接单人 = 当前卖家"(selfFulfilling)上,而内部现货履约的订单 根本没有接单打手(assigned_worker_id 为空),于是状态机关掉按钮、后端归属校验还会 403。 业务定调:卖家可以确认加好友,冷却到期后也能自己上传赠送成功截图,客服只是兜底。 - 能力位改成按阶段给:material_submitted 可确认;内部现货履约在 material_required 也可确认 (与客服侧一致);冷却结束可提交赠送截图;提示改成卖家视角 - 后端归属只认"这张提报单就是当前卖家的"(别人的单仍 404),删除"订单接单人必须是卖家"的 403 - 卖家提交凭证走 asConsignmentSupplier 选项:跳过接单人校验(归属由寄卖单保证), 冷却是否结束、必须带图等校验全部保留 - 客服侧按钮不变,谁先点谁生效,后点者拿到明确 409 真实库端到端验证:卖家列表按钮=true → 确认加好友 gift_phase=friend_countdown(+72h) → 冷却中被拒 work_order_gift_cooldown_active → 冷却到期后卖家上传赠送截图成功(工单转 pending_acceptance)。
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
| `632dddc4` | 上一轮:H5 渠道整体下线 + 凭据字段修复 + 状态机封闭(撤销守卫 / 库存绑定唯一性 / 生命周期解绑)+ 押金归属取台账 | 迁移 `079`、`consignment-*` 五个文件、`work-order-*` 三个仓库、两个前端面板 |
|
||||
| `5d11bf20` | 批次 C+D:指派部分成功补偿、凭证核销如实反馈、空规格不放行 + 履约/指派服务端规格复检 | `consignment-fulfillment-service.ts`、`consignment-matching-service.ts`、`consignment-repo.ts`、履约路由、`WorkOrdersPanel.tsx` |
|
||||
| `d6f6219f` | 批次 F1:内部现货履约停在「待加好友」,客服确认后才进赠送冷却 + 备注快捷项 | `work-order-gift-repo.ts`、履约服务、`WorkOrdersPanel.tsx`、`utils/gift-phase.ts` |
|
||||
| 本批提交(批次 P,同一提交内含本文档,故不写自身 hash) | 批次 P:确认加好友/上传赠送截图恢复为卖家操作,客服兜底 | `consignment-item-stage.ts`、`consignment-worker-service.ts`、`worker-acceptance-service.ts` |
|
||||
| 本批提交(批次 O,同一提交内含本文档,故不写自身 hash) | 批次 O:文件链接去掉签名与有效期(修客服端凭证裂图),寄卖出参统一归一化 | `file-storage-service.ts`、`routes/files.ts`、`consignment-admin-service.ts` |
|
||||
| 本批提交(批次 N,同一提交内含本文档,故不写自身 hash) | 批次 N:删掉按库存号的卖家入口,卖家动作只按寄卖单号定位 | `consignment-worker-service.ts`、`routes/worker/consignment.ts`、`WorkerConsignmentPage.tsx` |
|
||||
| 本批提交(批次 M,同一提交内含本文档,故不写自身 hash) | 批次 M:停用客服手动入库(前端入口删除 + 后端 409 守卫),寄卖货源只走平台提报 | `consignment-admin-service.ts`、`consignment-repo.ts`、`ConsignmentInventoryPanel.tsx` |
|
||||
@@ -285,6 +286,43 @@
|
||||
前端在"部分匹配"候选上先 `modal.confirm` 危险确认,再带 `allowPartial: true` 重试,高配充低配的合法玩法保留但不可误触。
|
||||
3. ⏳ 匹配下推 SQL + 批量匹配接口 + 工单列表角标(P2-8)未做:当前仍是"取全量在库 → 内存比对"。
|
||||
|
||||
### 批次 P · 「确认加好友 / 上传赠送截图」恢复为卖家操作(本轮)
|
||||
|
||||
**问题(用户截图:卖家端的货点不了确认加好友)**:卖家「我的寄卖」里那件"已匹配-待加好友"的货,
|
||||
提示写着「等待客服确认加好友」,**没有按钮**。
|
||||
|
||||
**原因**:批次 I 把这两个动作的能力位绑在"订单接单人 = 当前卖家"上(`selfFulfilling`),
|
||||
而内部现货履约的订单**根本没有接单打手**(`assigned_worker_id` 为空),于是:
|
||||
状态机把按钮关掉 + 提示写成"等客服";后端归属校验也会 403(`consignment_fulfillment_not_owned`)。
|
||||
|
||||
**业务定调**(用户):**卖家可以确认加好友,冷却到期后也能自己上传赠送成功截图**,客服只是兜底。
|
||||
|
||||
**改法**:
|
||||
|
||||
1. ✅ 状态机能力位改成按阶段给(不再看接单人):
|
||||
- `material_submitted`(赠送资料已交)→ 卖家可点「确认加好友」;
|
||||
- 内部现货履约没有"先交赠送资料"这一步 → `material_required` 阶段卖家也可直接确认(与客服侧能力一致);
|
||||
- 冷却结束(`gift_ready`)→ 卖家可「提交赠送截图」。
|
||||
- 提示统一改成卖家视角:「请先加上买家好友,加好后点『确认加好友』:确认即进入赠送冷却期,
|
||||
未完成赠送押金不退(客服也可代为确认)」。
|
||||
2. ✅ 后端归属只认「这张提报单就是当前卖家的」(别人的单仍 404 `consignment_item_not_found`),
|
||||
删掉"订单接单人必须是卖家"的 403 —— 内部现货单没有接单人,按接单人卡会把卖家自己的货挡在外面。
|
||||
3. ✅ 卖家提交赠送凭证走 `submitWorkerOrderAcceptance(..., { asConsignmentSupplier: true })`:
|
||||
跳过"必须是接单打手"的校验(归属已由寄卖单保证),**冷却是否结束、必须带图**等校验全部保留。
|
||||
4. ✅ 客服侧按钮不变,谁先点谁生效,后点的会拿到明确的 409 提示。
|
||||
|
||||
**真实库端到端验证**(造一件内部现货履约的货,订单无接单打手):
|
||||
|
||||
| 步骤 | 结果 |
|
||||
| --- | --- |
|
||||
| 卖家列表 | 阶段「已匹配-待加好友」,`确认加好友按钮=true`,提示为卖家操作口径 |
|
||||
| 卖家点确认加好友 | `gift_phase=friend_countdown`,冷却到 +72h |
|
||||
| 冷却中传截图 | 被拒 `work_order_gift_cooldown_active` |
|
||||
| 冷却到期 | 阶段「待赠送」,`上传截图按钮=true` |
|
||||
| 卖家上传赠送截图 | 成功 → 工单 `pending_acceptance`(交客服验收) |
|
||||
|
||||
临时数据已清理(残留 0)。
|
||||
|
||||
### 批次 O · 去掉文件链接的签名/有效期(本轮)
|
||||
|
||||
**问题(用户截图:客服看到的凭证是裂图)**:寄卖凭证的图片地址是**带签名的临时链接**:
|
||||
|
||||
Reference in New Issue
Block a user