Files
junhong_cmp_fiber/.scratch/tech-public-foundation/issues/05-command-idempotency-contract.md
2026-07-22 15:43:18 +09:00

1.6 KiB
Raw Blame History

05 — 提供创建命令幂等与并发职责契约

What to build: 创建类用例可以使用调用主体、操作类型和稳定请求 ID 建立幂等作用域,并对影响业务结果的规范化字段计算带版本的请求指纹。相同请求返回原结果,同一请求 ID 携带不同业务内容时返回明确冲突,并发首写最终由 PostgreSQL 唯一约束裁决Redis 故障不会制造重复业务事实。

Blocked by: None — can start immediately

Status: ready-for-agent

架构通道: Application + Port/Adapter。

完整业务边界: 本票收口请求指纹、幂等作用域、冲突分类和并发职责的可复用构件与公开示例。明确不建立万能幂等表,不迁移未触碰的旧订单、钱包或状态机,不用 Redis 替代数据库事实。

  • 请求指纹只包含影响业务结果的规范化字段排除时间戳、签名、Token 等易变传输字段,并携带算法版本。
  • 同一作用域内相同请求 ID 和相同指纹返回原结果;不同指纹返回统一幂等冲突且不覆盖既有事实。
  • 作用域至少区分调用主体与操作类型;不同主体使用相同请求 ID 不会相互污染。
  • 并发首次提交由 PostgreSQL 唯一约束裁决应用层预查仅用于友好返回Redis 不可用、过期或主从切换不影响最终正确性。
  • 文档和测试明确区分请求 ID、事件 ID、业务唯一键、状态条件更新、钱包版本、Worker 租约和 Redis 防并发的职责。
  • 集成测试覆盖相同请求重放、指纹冲突、不同主体、并发首写和 Redis 故障,不修改未触碰业务模块。