- P0/P1:影子总账追加调整、关账/退款/资金/积分幂等、成本版本追溯、对账订单项维度 - 迁移收敛:原 103–114 合并为 103_finance_foundation、104_finance_controls、105_work_order_consignment - 数据:L1 钱包 BIGINT/CHECK/奖励幂等;重复奖励审计口径修正与人工核对清单 - 报表:销售毛利缺失成本收入提示,旧收支页明确现金流口径 - 文档:同步迁移基线、合并评估、代码复核与上线说明
6.7 KiB
6.7 KiB
打手重复奖励核对清单(2026-10-27)
数据源:本地生产快照
order_site(与backups/postgres/order_site-20261022-092601.dump模拟库一致)。 审计视图:v_worker_wallet_duplicate_rewards(迁移 104,已排除寄卖货款并按worker_id分组)。 结论:原始按“工单 + 流水类型”分组得到 9 组;排除寄卖货款后,实际疑似重复 8 组。 处理原则:不自动扣回、不删除流水;由财务逐组核对后走人工调整。
一、汇总
| 指标 | 数值 |
|---|---|
| 原始同工单奖励流水组 | 9 组 |
| 其中寄卖货款误报 | 1 组(工单 84886) |
| 实际疑似重复 | 8 组 |
| 涉及流水 | 16 条 |
| 两组流水合计 | ¥392.40 |
| 重复多计(按每组一半估算) | ¥196.20 |
| 涉及打手 | 7 人 |
| 工单状态 | 全部 accepted |
金额单位:分;下表同时给出元。
多计按“两条金额相同、保留一条”估算,最终以财务核对为准。
二、疑似重复明细(8 组)
| # | 工单号 | 工单 ID | 打手 ID | 打手账号 | 流水 ID | 单条金额 | 条数 | 合计 | 多计 | 时间差 | 当前可用余额 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | WO68ae5cc00012 | 41430 | 7 | 18622832733 | 26738 / 26739 | ¥12.60 | 2 | ¥25.20 | ¥12.60 | 0.218s | ¥22,817.40 |
| 2 | WOf9a256424094 | 67580 | 28 | 19391334110 | 55324 / 55325 | ¥47.50 | 2 | ¥95.00 | ¥47.50 | 3.487s | ¥329.04 |
| 3 | WO1ef60bfd41f3 | 70556 | 60 | 18700402637 | 58633 / 58634 | ¥0.20 | 2 | ¥0.40 | ¥0.20 | 3.808s | ¥1,397.00 |
| 4 | WO26092719382700 | 90262 | 21 | 17386836758 | 85908 / 85909 | ¥6.50 | 2 | ¥13.00 | ¥6.50 | 0.595s | ¥104.50 |
| 5 | WO26100215392303 | 100509 | 37 | 13779907018 | 99520 / 99522 | ¥12.80 | 2 | ¥25.60 | ¥12.80 | 0.773s | ¥0.48 |
| 6 | WO26100312143075 | 102885 | 51 | 14718183196 | 102228 / 102229 | ¥100.00 | 2 | ¥200.00 | ¥100.00 | 3.400s | ¥1,887.60 |
| 7 | WO26100316285341 | 103640 | 21 | 17386836758 | 103021 / 103022 | ¥1.60 | 2 | ¥3.20 | ¥1.60 | 3.376s | ¥104.50 |
| 8 | WO26101115455274 | 125710 | 1365 | 15669767683 | 130982 / 130983 | ¥15.00 | 2 | ¥30.00 | ¥15.00 | 0.614s | ¥4,407.18 |
三、逐条流水明细(16 条)
| 流水 ID | 工单 ID | 打手 ID | 金额 | 余额后 | 冻结后 | 备注 | payload | 创建时间 |
|---|---|---|---|---|---|---|---|---|
| 26738 | 41430 | 7 | 1260 | 1515880 | 0 | 验收通过结算报酬 | {} |
2026-08-26 19:15:09.638 |
| 26739 | 41430 | 7 | 1260 | 1517140 | 0 | 验收通过结算报酬 | {} |
2026-08-26 19:15:09.856 |
| 55324 | 67580 | 28 | 4750 | 124321 | 6000 | 验收通过结算报酬 | {} |
2026-09-03 21:05:22.924 |
| 55325 | 67580 | 28 | 4750 | 129071 | 6000 | 验收通过结算报酬 | {} |
2026-09-03 21:05:26.411 |
| 58633 | 70556 | 60 | 20 | 76280 | 0 | 验收通过结算报酬 | {} |
2026-09-04 21:18:52.540 |
| 58634 | 70556 | 60 | 20 | 76300 | 0 | 验收通过结算报酬 | {} |
2026-09-04 21:18:56.348 |
| 85908 | 90262 | 21 | 650 | 221195 | 0 | 验收通过结算报酬 | {} |
2026-09-27 19:50:13.522 |
| 85909 | 90262 | 21 | 650 | 221845 | 0 | 验收通过结算报酬 | {} |
2026-09-27 19:50:14.117 |
| 99520 | 100509 | 37 | 1280 | 57160 | 12000 | 验收通过结算报酬 | {} |
2026-10-02 15:52:18.017 |
| 99522 | 100509 | 37 | 1280 | 58440 | 12000 | 验收通过结算报酬 | {} |
2026-10-02 15:52:18.790 |
| 102228 | 102885 | 51 | 10000 | 331210 | 0 | 验收通过结算报酬 | {} |
2026-10-03 12:29:32.277 |
| 102229 | 102885 | 51 | 10000 | 341210 | 0 | 验收通过结算报酬 | {} |
2026-10-03 12:29:35.677 |
| 103021 | 103640 | 21 | 160 | 74193 | 0 | 验收通过结算报酬 | {} |
2026-10-03 16:48:16.927 |
| 103022 | 103640 | 21 | 160 | 74353 | 0 | 验收通过结算报酬 | {} |
2026-10-03 16:48:20.303 |
| 130982 | 125710 | 1365 | 1500 | 469690 | 0 | 验收通过结算报酬 | {} |
2026-10-11 17:17:22.873 |
| 130983 | 125710 | 1365 | 1500 | 471190 | 0 | 验收通过结算报酬 | {} |
2026-10-11 17:17:23.487 |
16 条流水的
payload_json都为空、备注都是“验收通过结算报酬”,且同一打手、同一工单、时间差 0.2–3.8 秒,重复特征明显。
四、误报排除:工单 84886
原始 9 组里包含工单 84886,但它不是重复奖励:
| 流水 ID | 打手 ID | 金额 | 备注 | payload |
|---|---|---|---|---|
| 87769 | 25 | 13000 | 验收通过结算报酬 | {} |
| 87770 | 37 | 13000 | 寄卖货款结算 #84886 | {"inventoryId":159,"workOrderId":84886,"costPriceFen":13000,"submissionNo":"SUB26092515093529"} |
- 两条流水属于不同打手;
- 一条是工单验收奖励,一条是寄卖货款结算;
- 金额相同只是巧合,不能按重复扣回。
因此审计视图已修正为:
- 按
worker_id + work_order_id + ledger_type + share_id分组; - 排除
payload_json ? 'inventoryId'的寄卖货款; - 结果从 9 组降为 8 组。
五、人工核对建议
每组按以下顺序确认:
- 查工单
accepted时间、验收人、work_order_shares是否有同打手多份额; - 确认两条流水是否都是“验收通过结算报酬”,且没有对应的冲正/扣回流水;
- 对比
worker_wallets.total_settled_amount与全部结算流水,确认多计已进入余额; - 确认打手当前余额是否足够扣回;不足时登记欠款,不要直接把余额改成负数;
- 处理方式建议:
- 余额足够:人工新增负数调整流水(
ledger_type建议manual_adjustment,备注“重复结算追回 + 工单号”); - 余额不足:登记
worker_after_sales_debts或线下追缴,后续结算抵扣; - 不删除原流水,不直接改
worker_wallets历史余额。
- 余额足够:人工新增负数调整流水(
六、复核 SQL
-- 当前疑似重复(已排除寄卖货款、按打手分组)
SELECT *
FROM v_worker_wallet_duplicate_rewards
ORDER BY ledger_count DESC, related_work_order_id;
-- 指定工单的全部奖励流水
SELECT id, worker_id, ledger_type, amount, balance_after, frozen_after,
note, payload_json, created_at
FROM worker_wallet_ledgers
WHERE related_work_order_id = 41430
AND ledger_type IN ('reward_settlement', 'sharing_reward', 'reward_pending_unfreeze')
ORDER BY id;
七、结论
- 需要人工核对的疑似重复:8 组,16 条流水,合计 ¥392.40,多计约 ¥196.20;
- 工单 84886 是寄卖货款 + 工单奖励,不是重复,不要扣回;
- 历史重复不自动修复,避免误伤正常寄卖/多份额结算;
- 迁移 104 已为未来奖励流水加
event_key唯一约束,新重复会被数据库直接拒绝。