yml2213
2e8c9715b6
fix(migration): 079 建冻结幂等索引前先去重历史重复冻结并退还多冻押金
生产首跑 079 在 uniq_worker_wallet_ledgers_consignment_publish_freeze
索引上 23505:历史存在同提报单两条 consignment_publish 冻结流水
(如提报单 5),正是该索引要防的二次冻结缺陷的脏数据产物。
与 079 处理重复绑定工单同套路——先清数据再加约束:
- 每组(worker+提报单)保留最早一条冻结流水,多余行仅改 payload
标记 consignment_publish_superseded(移出押金口径与索引范围,原行留审计)
- 多冻的钱退还钱包:退额 = LEAST(多冻总额, 冻结池实有),绝不无中生有;
写 deposit_release 修正流水(kind=consignment_publish_dedup_refund)
- 同一打手多条多余流水先按钱包聚合再退,避免 UPDATE..FROM 漏退
- 再建幂等索引
已在一次性 Postgres 完整复现生产路径验证:078+脏数据 → 079/080 迁移
成功、钱包退回多冻 ¥20、索引生效拦截第三次冻结