鼎味肉市DESIGN ATELIER
← 资料目录docs/architecture/08-domain-model/CONSISTENCY.md阅读原文

一致性边界与订单动作检验

状态:working-draft;以下是模型决策与验证要求,不是已经实现的数据库方案。日期:2026-09-18。

1. 必须单独解决的跨对象强约束

场景 为什么单根版本不够 候选处理方向 必须寻找的反例
多个 Refund 使用同一收款 每个退款都可能独立看到足够可退余额 原收款目标的额度守卫原子预留/核销,关联退款及未知结果 两个不同 Case 同时申请最后可退额
一个 Hold 占多个 CapacityBucket 单 Bucket 成功可能遗留部分资源 Demand 内对资源集合受控全有或全无提交;若改变为预留协议,必须明确中间状态和恢复 部分资源不足、锁冲突、持有过程宕机
预约改期 新旧承诺分开提交会双占或丢原安排 未改变原义务的拒绝保留原安排;已冻结则走明确停止/处置,不静默恢复。跨域按停止握手和新授权推进 新承诺成功但响应丢失,旧单已终态却被恢复
每日确认与到期 两进程可读到同一个待确认状态 Demand 同安排 revision 和互斥时间谓词条件提交 到期后晚到确认/费用使旧安排复活
冻结与开工 只锁订单不能锁住已经派出的任务 Fulfillment 同一执行 gate + generation/fence + 数量谱系守卫 两张不同订单或旧设备同时执行同一份数量
替换与退款 各自单根版本正确仍可双花同笔钱 Commerce 原收款切片、分配、退款预留及来源守卫原子提交 旧款已退款 UNKNOWN 仍给新单抵扣
批次结算与新增替换 结算快照之外可能出现新义务 同批次范围版本与变更准入互斥;闭合后新经济事实用 Adjustment 退款后后继仍按旧可用余额放行
多 Lot 加工转换 只锁 TransformationRun 不保护输入额度 Supply 内校验输入、质量及变化,统一提交账本与输出事实;明确锁顺序及竞争资源 扣第一个 Lot 后失败、隔离在校验后发生
JournalEntry 与 AccountingPeriod 分录平衡不保证过账时期间仍开放 提交时与期间门禁协调并保护经济来源唯一性 关账和过账同时执行、规则改版重放
默认地址/发布目标唯一 单地址或单 Publication 版本不保护跨对象唯一 独立选择/生效指针或明确唯一约束与版本守卫 两个对象同时成为默认或同时覆盖同一目标
Task 完成与依赖门禁 Task 状态正确不证明当前依赖仍有效 提交时验证适用依赖版本与质量门禁;跨域门禁定义时效和撤销策略 旧离线动作在改派、隔离后补传

以上候选策略可能需要合并聚合、采用同 BC 多根本地事务或设计保留中间状态的协议。应根据争用、原子范围、失败恢复和业务允许的等待条件比较后定案;不能仅凭架构偏好强制“一条命令只写一个根”。

2. 跨上下文的承诺

结算、确认、取消、退款、履约、召回都沿用 07 协调责任。跨域协议保存意图、各步骤身份、必要版本、回执和恢复进度,不假设一个数据库使所有步骤可原子回滚。

3. 订单动作语义工作表

本表把“后台修改订单”拆成业务意图。未切配可申请取消/换菜、确认超时自动取消已经明确;地址改期、费用和部分商品处置细则仍待明确。精确确认窗口见确认政策。

动作 发起者 判断与修改责任 结果 必须拒绝/恢复的情况
创建订单 顾客 / 周期流程 / 渠道 Commerce 接受明确来源;分别使用适用流程协调 Demand 与资金依据 每个被接受拆分范围的唯一订单及当前商业接受进度;一次购买可多单 来源重复、报价变化、占用失败;不因重试新增订单;商业接受不代替每日确认
查询订单 顾客 / 授权员工 Commerce 对象范围校验,组合必要履约摘要 同一 OrderId,不同授权视图 无权、源不可用、投影过期,不能假装未发生
请求修正联系方式 顾客 / 客服,是否允许待政策 Commerce 受控变更依据,必要时通知 Fulfillment;Customer 地址簿独立 保留成交快照及后续修正记录 已交付、权限不足、并发修改;不能覆盖历史证据
请求改期 顾客 / 客服,是否允许待政策 Commerce 协调商业变更;Demand 替换承诺;Fulfillment 检查执行影响 明确的新安排或恢复中的请求 新容量不足、已不可停止、部分步骤失败
请求取消 顾客 / 客服 / 授权流程 Commerce 裁决并协调停止、释放与退款 请求结果、商业结果和副作用进度分别可见 已发生交付、资金未知、晚到支付;不能一键改全链终态
申请/裁决售后 顾客 / 售后人员 AfterSaleCase 维护方案;资金与物料等 Owner 执行动作 可追踪 Case 和分项执行结果 重复诉求、超额退款、证据不足、回收未完成

查询的 allowed actions 是当时的判断;执行要核对更新后的角色、对象版本及业务条件,返回明确冲突或拒绝原因。

4. 迁移与模型修订

本轮完整不变量、资金核对式及跨 Owner 恢复协议见TRANSACTION-INTEGRITY,候选迁移由状态定义主讲。这里的候选方案不证明数据库锁、远端 fence 或真实支付已实现。

模型定案前不迁移业务数据。以后改变根边界、业务身份或状态机时,必须盘点旧标识、历史快照、在途流程、消息版本、唯一键及消费者;迁移前后对账,明确唯一写入方,并准备兼容读取和恢复路径。

不能把“旧状态映射不到”强行变成成功或取消。无法确定的历史结果保留待核验;真实支付、分录、交付等事实通过补偿或更正处理,不为方便迁移删除。