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

20 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 故障,不修改未触碰业务模块。