DECISIONS - 安全对账决策
安全对账决策
1. 我对核心风险的理解
创建超时、断网、5xx 不等于未建单。重试可致重复预订或损失。不确定即查单,不因无订单号认定无单。
2. 我的状态和转移设计
完整成功转 CONFIRMED 并回填标识;不确定结果转 PENDING_RECONCILIATION,按 clientReference 查单。唯一完整确认转 CONFIRMED;零匹配、错误或 PENDING 在 3 次内重查;多匹配、冲突、缺字段、状态矛盾或耗尽转粘性的 MANUAL_REVIEW。重复确认 NOOP;旧事件不能降级已确认订单,标识冲突仍优先人工。
3. 什么时候可以再次创建供应商订单
仅在供应商明确拒绝、errorCode=NO_INVENTORY_NO_BOOKING_CREATED 且没有订单号和确认号时,转 FAILED_FINAL 并允许重建。无匹配、查询超时、5xx、断网和模糊拒绝都禁止自动重建。
4. 什么时候必须人工处理
多张订单、订单号或确认号冲突、确认字段不全、clientReference 不符、结果与错误并存、FAILED/CANCELLED、查询耗尽,以及终态出现矛盾证据,都须人工处理。审核记录原因、证据、操作者和 traceId,不得静默覆盖标识。
5. 上生产前的下三步
- 持久化订单、事件、任务和追加式审计;以唯一约束、事件 ID、乐观锁实现跨进程幂等与并发安全。
- 接入 Client:固定
clientReference作幂等键,创建不自动重试;查询限次退避,并校验签名、防重放和响应归属。 - 以 transactional outbox、调度和消费者去重交付任务;补齐监控告警、人工审核权限和双人复核,并贯穿同一
traceId。