zizi
ca695362bd
fix(trade): M4 支付 2 个 P0 资金安全 bug(对抗审计 Opus+Codex+主agent 三方确认,87单测漏掉)
- P0-1 money-loss:AccountServiceImpl settlePaid/refundFrozen 更新 0 行原只 log.error 不抛→改抛 TRADE_ACCOUNT_FROZEN_NOT_ENOUGH(错误码 1-106-001-002),让 handlePayoutNotify(@Transactional)的 status CAS 与账户动作一并回滚,杜绝"状态已置终态、资金没动"半态 commit 破 balance+frozen+total_withdraw=total_income 恒等式;对齐既有 freeze 0 行抛错范式
- P0-2 切渠道误驱动:PayoutClientFactory 加 byChannel(channel)(current() 委托之、fail-fast 收敛一处);compensateStuckPayouts 改用 byChannel(w.getChannel()) 按提现单记录渠道查终态,而非当前 Nacos 渠道——切渠道(mock→wxpay)不再用错渠道 client 误驱动 1→2/1→4
- 单测+5:0行抛错(settle/refund)/回滚透传(handlePayoutNotify)/byChannel(注册·未注册fail-fast)/compensate 渠道路由;mini trade-server 46 测全绿(41→46)零回归
- Codex 佐证:同 bizNo 并发/成功失败回调赛跑/审核驳回赛跑均被 uk_biz_no/status CAS 挡住(安全),无新增 P0
- 余 P1/P2(mock 渠道崩溃卡单兜底/ad 回调空 secret 铸币面/setSql 预防)待 Codex 完整报告后续修
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 10:55:47 +00:00
..
2026-06-16 10:55:47 +00:00
2026-06-10 06:24:43 +08:00
2026-06-15 14:32:44 +00:00
2026-06-10 11:10:10 +00:00
2026-06-16 10:55:47 +00:00
2026-06-16 10:55:47 +00:00
2026-06-15 14:32:44 +00:00
2026-06-12 07:44:04 +00:00
2026-06-16 10:55:47 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-10 06:24:43 +08:00
2026-06-10 06:24:43 +08:00
2026-06-15 14:32:44 +00:00
2026-06-09 07:43:54 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-10 03:01:02 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-10 08:51:30 +00:00
2026-06-10 13:33:32 +00:00
2026-06-11 00:41:02 +00:00
2026-06-15 14:32:44 +00:00
2026-06-10 08:51:30 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-11 14:20:08 +00:00
2026-06-11 07:08:35 +00:00
2026-06-11 18:20:27 +00:00
2026-06-12 00:26:16 +00:00
2026-06-12 00:26:16 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-11 02:53:34 +00:00
2026-06-16 02:34:42 +00:00
2026-06-12 10:48:52 +00:00
2026-06-12 18:33:06 +00:00
2026-06-13 03:40:54 +00:00
2026-06-12 08:34:03 +00:00
2026-06-12 10:41:00 +00:00
2026-06-12 10:41:00 +00:00
2026-06-15 14:32:44 +00:00
2026-06-15 14:32:44 +00:00
2026-06-13 06:33:27 +00:00
2026-06-13 11:48:28 +00:00
2026-06-13 11:48:28 +00:00
2026-06-13 11:48:28 +00:00
2026-06-13 11:48:28 +00:00
2026-06-13 11:48:28 +00:00
2026-06-13 18:32:50 +00:00
2026-06-13 18:32:50 +00:00
2026-06-13 19:14:06 +00:00
2026-06-13 19:14:06 +00:00
2026-06-13 18:32:50 +00:00
2026-06-15 08:00:19 +00:00
2026-06-13 18:32:50 +00:00
2026-06-16 02:34:42 +00:00
2026-06-16 02:34:42 +00:00
2026-06-16 02:34:42 +00:00
2026-06-15 02:00:07 -07:00
2026-06-14 05:16:04 -07:00
2026-06-14 10:58:20 -07:00
2026-06-16 07:55:27 +08:00
2026-06-16 07:55:27 +08:00
2026-06-16 07:55:27 +08:00
2026-06-16 07:55:27 +08:00
2026-06-16 07:55:27 +08:00
2026-06-15 08:00:19 +00:00
2026-06-15 03:36:01 -07:00
2026-06-15 04:56:42 +00:00
2026-06-16 10:55:47 +00:00
2026-06-16 09:01:19 +00:00
2026-06-16 06:43:12 +00:00
2026-06-16 17:44:08 +08:00
2026-06-16 18:45:09 +08:00
2026-06-16 06:43:12 +00:00
2026-06-16 17:10:35 +08:00
2026-06-16 17:10:35 +08:00
2026-06-16 04:45:06 +00:00
2026-06-08 09:11:10 +00:00