背景
CreateSpotOrders 创建成功后如果响应在网络中丢失,前端无法判断订单是否已经创建。直接重试可能重复扣减库存并生成重复订单;不重试又只能让用户去订单列表人工确认。
需求
CreateSpotOrdersRequest 增加客户端生成的 idempotency_key 或 request_id。
- 幂等范围至少绑定当前登录用户和业务操作,不能只依赖客户端 IP。
- 同一 key、相同 payload 的重复请求返回第一次创建的完整
spot_order_details,不得再次扣减库存或创建账单。
- 同一 key、不同 payload 返回明确冲突错误。
- 提供按幂等 key 查询创建结果的 RPC,或保证重放创建 RPC 可以可靠恢复原结果。
- 明确幂等记录保留期限,期限应覆盖正常客户端重试窗口。
一致性要求
- 批量订单创建、库存扣减、账单创建和幂等结果记录处于同一事务边界。
- 并发发送相同 key 时只能执行一次业务写入。
- 失败事务不得留下可被当作成功恢复的半成品记录。
验收标准
- Proto、实现和接口文档同步更新并发布到 Buf。
- 测试覆盖响应丢失后重试、并发相同 key、相同 key 不同 payload、事务回滚和幂等记录过期。
- 前端可在超时或连接中断后安全重试并跳转到已创建订单,而不会产生重复订单。
背景
CreateSpotOrders创建成功后如果响应在网络中丢失,前端无法判断订单是否已经创建。直接重试可能重复扣减库存并生成重复订单;不重试又只能让用户去订单列表人工确认。需求
CreateSpotOrdersRequest增加客户端生成的idempotency_key或request_id。spot_order_details,不得再次扣减库存或创建账单。一致性要求
验收标准