docs: 寄卖系统优化方案记录批次 Y(079 迁移去重修复)

This commit is contained in:
yml2213
2026-09-17 13:35:41 +08:00
parent 2e8c9715b6
commit 617794f2cf
+17
View File
@@ -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` |
| 本批提交(批次 Y,同一提交内含本文档,故不写自身 hash) | 批次 Y:修生产 079 迁移 23505——建冻结幂等索引前先去重历史重复冻结并退还多冻押金(服务器未应用过 079,经确认直接改原迁移) | `079_drop_consignment_collect_links.sql`、`consignment-payout.test.ts` |
| 本批提交(批次 X,同一提交内含本文档,故不写自身 hash) | 批次 X:发布寄卖自动带建议价——规格选齐后按 系统+系列+钻级 从「接单模板」(work_product_rules)匹配价格自动填入(安卓暗潮1钻 → ¥120),多条命中取最高,手改过不覆盖 | `consignment-matching-service.ts`、`product-match-repo.ts`、`consignment-worker-service.ts`、`routes/worker/consignment.ts`、`WorkerConsignmentPage.tsx` |
| 本批提交(批次 W,同一提交内含本文档,故不写自身 hash) | 批次 W:规格口径定案——后台全量(系统 苹果/安卓/通用,区服 微信/QQ/互通),打手端按物品展示(苏尔南:系统二选一、区服唯一「互通」默认选中);「互通」为区服通配值,匹配引擎通配符对称化 | `utils/consignment-spec.ts`、`WorkerConsignmentPage.tsx`、两个面板、`consignment-matching-service.ts`、`consignment-worker-service.ts` |
| 本批提交(批次 V,同一提交内含本文档,故不写自身 hash) | 批次 V:复核遗留——拼单份额验收收官补寄卖钩子(押金释放+供货货款)、手动匹配弹窗 409 刷新/关键字透传/无打手禁指派、核销反馈抽共享出口 | `work-order-settlement-repo.ts`、`ConsignmentManualMatchModal.tsx`、`utils/voucher-consume.ts` |
@@ -293,6 +294,22 @@
前端在"部分匹配"候选上先 `modal.confirm` 危险确认,再带 `allowPartial: true` 重试,高配充低配的合法玩法保留但不可误触。
3. ⏳ 匹配下推 SQL + 批量匹配接口 + 工单列表角标(P2-8)未做:当前仍是"取全量在库 → 内存比对"。
### 批次 Y · 生产 079 迁移失败修复:先去重重复冻结再建幂等索引(本轮)
**现象**:生产部署在 079 的 `uniq_worker_wallet_ledgers_consignment_publish_freeze` 唯一索引上
23505(提报单 5 有两条 `consignment_publish` 冻结流水),迁移整体回滚、数据库无损。
重复冻结正是该索引要防缺陷的历史脏数据(批次 F2 之前发布链路允许二次冻结)。
**修法**(服务器从未成功应用 079,经确认直接改原迁移,与 079 自己"重复绑定工单先清后约束"同套路):
每组(打手+提报单)保留最早一条冻结流水;多余行仅改 payload 标记 `consignment_publish_superseded`
(移出 outstanding 口径与索引范围,原行留审计);多冻的钱退回钱包
(退额 = LEAST(多冻总额, 冻结池实有),绝不无中生有)并写 `consignment_publish_dedup_refund`
修正流水;同一打手多条多余流水先按钱包聚合再退;然后才建索引。静态测试钉住"去重退还必须先于建索引"。
**验证**:一次性 Postgres 完整复现生产路径——停在 078 + 注入提报单 5 双冻结脏数据 →
新 079/080 迁移成功;钱包可用 +2000(多冻退回)、冻结池回落单份 2000;修正流水留痕;
第三次冻结被索引拒绝。全新空库 001→080 亦验证通过。后端 484 测试全绿。
### 批次 X · 发布寄卖自动带「接单模板」建议价(本轮)
**需求**:接单平台已按规格配好模板价(生产库几十条,如 安卓暗潮1钻 ¥120 / 6钻 ¥500),