1.7 KiB
1.7 KiB
MCP 多账号草稿确认修复(2026-10-04)
问题与原因
通过 MCP 在同一个 state_get 状态下创建多个 position_create 草稿时,草稿都保存同一账目快照。确认第一个新增后账目变化,剩余新增草稿会报“账目已变化,请取消并重新创建操作”。
修复范围
确认 position_create 成功后,在用户锁和同一数据库事务内,将同一用户、同一连接、相同旧快照下尚未过期的待确认 position_create 草稿快照推进到最新状态。每份草稿仍需用户逐项审阅确认,不会自动执行。
仅独立新增草稿适用此规则。余额记录、修改、转账等其他草稿,以及不同连接的新增草稿,不会随之推进。网页新增或修改、设置变化仍触发原有冲突检查。原始幂等键和请求摘要不变,重试已完成操作不会重复创建账户。不需要数据库迁移。
修复前已因部分确认而落后于当前账目的草稿不自动恢复。应重新查询当前账号,只重新生成尚未新增的账号草稿,避免重复创建已经成功的账号。
验证
- 修复前通过官方 SDK 和真实 MySQL 复现后续草稿确认返回 409。
- 修复后三份同快照新增草稿全部确认成功,后两份并发确认也通过。
- 幂等重试返回原操作;金额十进制字符串保持精确。
- 不同连接的新增草稿、同快照余额草稿仍返回 409;网页新增也使旧草稿失效。
- MCP/OAuth 集成测试 6 项通过,单元测试 52 项通过,后端编译通过。
- 测试仅使用隔离用户,结束后清理。未确认或修改实际用户的草稿、账号或余额。