鼎味肉市DESIGN ATELIER
← 资料目录docs/reports/review/ARCH-2026-09-29-transaction-integrity.md阅读原文

架构审查:类交易系统的严谨性

历史证据:保留下文编写当时的范围、发现和检查计数,不作为现行政策或未决台账。当前业务机制见确认政策,剩余事项见DECISIONS,来源分工见事实源索引。后续确认已部分收敛拆单、取消、计价与时间规则,不回写旧结果伪造当时已验证。

2026-09-29;主会话自审与修订,不是独立评审、S5/S7 clean round 或生产验收。 Runtime 检查为 inactive、bound_req=null。本轮仅修改架构文档及文档模型检查器,不绑定 REQ,不动产品代码、原型、部署、真实资金或 Runtime。

1. 结论与要求

原架构已经有事实 Owner、快照、退款额度和跨域协调意识,但没有把“一周无忧”落实到足以阻止错误履约的身份、状态与原子裁决上。最大风险不是漏了一个后台页面,而是两个局部合法动作组合起来变成重复花钱、重复履约或终态复活。

本轮按领域驱动设计梳理对象与责任,按状态机方法将终态、合法迁移和恢复写入单一候选定义。完成的是设计修订与有限模型检查;数据库原子性、支付适配、跨域握手和设备防重仍无产品证据,不能声称已达到交易系统的运行可靠性。

主讲入口:交易级严谨性、业务流程、状态定义。

2. 有限审查库存与范围

范围 本轮检查内容 处理 / 边界
architecture 总入口、05 DOMAIN/WEEKLY-CARE-PLAN/FLOW 业务主链、入口出口、每日确认、旧单与新单 修正归属和历史机制歧义,重写流程图
06 十个子域目录及占位材料 候选问题、交易责任是否有承接位置、占位成熟度 目录逐域映射,SD-02/03/04/06 补主链;不是完整十子域设计评审
07 十张 BC 卡片 谁可修改什么、失败恢复、生命周期混淆 核对全部候选边界;修改 BC-02/05/06/07
07 OWNERSHIP / CONTEXT-MAP / BOUNDARY-DECISIONS / REVIEW 事实、流程协调、取舍、既有未决问题 补每日授权、购买批次、原款分配、执行 gate;消除“失败恢复旧义务”的歧义
08 十张模型卡、MODELING-RULES / CONSISTENCY / REVIEW 对象身份、金额/数量、终态、去重、跨对象约束、下游核算 十域回填约束;新增交易专项主讲,保留非交易范围未决项
state / data-model / dataflow 及总架构模板 活动产品契约存在性与接缝 原先只有模板;新增六类候选机器。共享字段 Schema、正式 API/事件和完整数据流仍未建立,不伪称已交付
小程序 weekly-plan-experience / confirmation-window 用户意图、授权、免费边界、付款后的行动 作为业务证据;预填价格、时间及历史“恢复”不当批准政策
小程序 stories / flows / scenario-model 旧快照中的自动配送、20:00、直接退款 检出与新方向的差异;保留原型,不以旧场景通过证明新架构
后台 MODULE-DESIGN / CROSS-FLOWS 已有退款守卫、停止协调、岗位动作及证据限制 只读核对当前工作稿;未执行全部浏览器场景,不覆盖并行原型变更
历史 docs_bak、全量业务实现/外部系统 不是本轮活动架构审查基线 未重新逐页/逐代码审计;无完整实现结论

根目录其他原型/后台/REQ 草稿变更为已有并行工作,本轮未改写或提交。架构中没有足够资料的场景记录为未完成,不填 N/A。

3. 发现、修改与剩余风险

ID 原设计风险 / 证据位置 本轮处理 未完成部分
AT-01 BC-05/DM-05 主要写订阅周期,05 最新机制要求逐日主动确认 Customer 餐次、Commerce 批次/订单、Demand 授权分开 最终分组基数与共享字段
AT-02 CONTEXT-MAP §5.3“保留或恢复既有义务”;FLOW“新的尝试”易被读成旧单恢复 旧终态永久结束,明确后继新单/新安排;冻结后不静默解冻 正式替换政策及产品接口
AT-03 DM-06“待确认/已确认”未区分商业接受和用户配送授权 六条独立生命周期;已付仍等待每日授权 UI/后台组合查询契约
AT-04 同源幂等与周期唯一订单不足以表达合法换菜/多餐 来源意图、餐次、前驱/后继与分配范围分别标识 数据库唯一键、索引和迁移
AT-05 确认/到期仅有原则,没有权威裁决边界 Demand 单安排 revision、时间谓词、不可变确认与 Outbox 截止/边界政策、真实竞争测试
AT-06 冻结和开工跨域,单订单版本挡不住旧任务 Fulfillment gate、fence、数量谱系守卫、停止墓碑 物理工位/设备执行证据、质量撤销协议
AT-07 RefundBudget 保护退款但未统一替换抵扣与退款竞争 原实收切片守恒、额度与分配原子提交、未知占用不释放 分摊/舍入、真实存储隔离及压力测试
AT-08 “留在计划”无确定退出/批次结束关系 推荐范围内暂留,结束自动核算原交易退差额 时点、计价、部分结算政策仍待业务确认
AT-09 订单终点和退款/售后/账务容易互相回写 终态仍可有独立退款、售后、补发和 Adjustment 售后/调整完整状态机尚未展开
AT-10 外部失败、未知、重试易混为一体 独立目标/尝试/实收;UNKNOWN 核验原目标,晚到相反证据另立差异 Provider 确定失败及查询协议
AT-11 后台有动作不证明可以安全修复 六类工作台输入、允许命令、禁止捷径、自动正常路径 真实权限、恢复动作目录及端到端场景
AT-12 Finance 期间“授权重开”可能误泛化到订单 明确行政期间政策与不可逆订单不同;分录仍追加更正 期间/收入/核算政策专项评审
AT-13 取消和重算可能误作用于物料或经济源 取消不凭空回库,替换不双计履约,重算不触发交易 现场回收、部分执行、指标口径验证
AT-14 通用恢复/回滚可能丢失外部已发生事实 唯一写入方、切换水位、终态/fence 保留、备份恢复后先对账 实际迁移和灾难恢复演练

这些是文档设计风险的修订,不是已经复现并修复的产品 BUG。取舍理由及推翻条件记入 B-13–B-17;原 Q-01–Q-10 不因本轮增加文档自动关闭。

4. 反证矩阵:不仅检查正常路径

以下为实现/正式合同的验证要求。除明确标为“模型检查”的部分,均未执行产品测试。

编号 场景 应观察到的结果 / 会推翻方案的现象 责任域与证据状态
TV-01 一次付款覆盖三天,正常逐日确认 三次独立执行;不是周付款即全放行 Commerce/Demand/Fulfillment;待端到端
TV-02 某日不登录、提醒失败、调度重启 只对应范围到期停送,其他天和餐次保留 Demand;待服务端补扫测试
TV-03 仅选时间未提交;旧提醒含旧地址/内容 无有效授权,无开工;需核对新范围 Demand;待契约/UI测试
TV-04 确认/到期同 revision,两种先后 至多一个提交;败方不能逆转终态 候选 CAS 顺序模型已检;真实数据库未检
TV-05 恰好截止、跨时区、客户端改时钟 服务权威政策决定,不使用客户端时钟 Demand;政策未冻结,未验证
TV-06 120分钟整、119分钟、跨档报价、商家延误 免费边界明确,新增收费必须同意 Commerce/Demand;政策细则及实现待验
TV-07 付款成功但每日接受失败/过期 原目标可查,补偿费用;不能复活安排 Commerce/Demand;待故障注入
TV-08 后天30换38,原30仍可用 旧单终止,新单关联,只收合法差额8 Commerce;待金额/谱系测试
TV-09 相同换菜,原30已退款预留 UNKNOWN 不当可用额抵扣,不双花 Commerce;待真实额度竞争
TV-10 两个不同幂等键替换同一前驱 只有一个合法替换取得权利 Commerce;待来源唯一键测试
TV-11 冻结 vs 开工、旧 token/子任务、迟到事件 冻结赢则阻断;开工赢则拒绝普通替换 候选 CAS 顺序模型已检;设备/跨域未检
TV-12 旧单关完、新单补款失败/进程宕机 旧单不恢复,查询原补款并补偿/明确新购 Commerce;待每步宕机测试
TV-13 终态订单重放支付/确认/手动后台改状态 拒绝迁移,无第二份作业;保留新证据 候选终态出边拒绝已检;产品未检
TV-14 同键异载荷、换用户重放键、去重缓存过期 冲突/越权拒绝,持久业务来源仍防重复 各 Owner;待权限与幂等实现
TV-15 两退款、退款与换菜/消费争用最后额度 所有非负且守恒,只合法分配一次 Commerce;未做账本实现/测试
TV-16 外部已成功响应丢失、反向迟到证据 UNKNOWN 保留占用;查原目标,矛盾入差异核验 Commerce/Channel;待 Provider 测试
TV-17 零额、优惠、称重超/欠、最小金额舍入 无假实收、无浮点漂移、无未授权补扣 Commerce;精确算法未定
TV-18 批次结束与新增后继竞争;退款已成功通知失败 范围稳定,不重退;通知不改变资金事实 Commerce;待结算并发/通知故障测试
TV-19 一天两餐/两地址;一安排只覆盖部分数量 不以用户+日期误拒,不因一项取消全单/全周 Customer/Commerce/Demand;分组政策待定
TV-20 切配已发生回执丢失;交付尝试失败 隔离查实物,不再切一份;新尝试关联旧终点 Fulfillment;现场协议未验
TV-21 质量隔离与分配/开工竞态,多批次转换部分失败 禁用物料不使用;数量/损耗可核对 Supply/Fulfillment;待跨域安全证明
TV-22 批次结清后售后、部分交付、召回 原单/批次终态不变,新裁决/调整按实际量 Commerce/Supply;完整 Case 机器未定
TV-23 员工撤权、只读账号、跨客户、批量部分失败 不越权;已有义务受限恢复,逐项结果可查 Identity/各 Owner;真实职责/权限待验
TV-24 期间关闭同时过账、规则升级重放 不无源重复过账;更正关联原经济事实 Finance;待合同/存储验证
TV-25 两渠道同外部号、退出时在途目标 按 Provider/账号作用域隔离,义务不遗弃 Channel;待真实协议
TV-26 替换链统计、旧事件晚到、重算 原单/后继不重复计实际履约,重算只更新投影 Analytics;口径/产品待验
TV-27 恢复旧备份后渠道已有退款、设备已有执行 先对账及 fence/来源恢复,不重复对外动作 全链;迁移/恢复演练未做
TV-28 持续 UNKNOWN、死信、负责人离职 有有限期限和真实接手者,不无限等待 各流程 Owner;时限/人员仍未知

反证重点:仅有每个对象自己的乐观锁不能证明 TV-10/15;仅有 Outbox 不能证明物理动作一次;仅有终态枚举不能证明后台命令无法绕过;仅有“退款失败”文字不能证明资金可释放。

二次自审还发现并修正三处候选 guard 范围:首次购买不能被要求提供不存在的前驱停止证明;未确认旧安排撤销不能被强制先经过接受;后继尚未创建时补偿也必须有合法出口。这些反例导致定义修订,说明结构检查通过不等于 guard 语义完整。

5. 后台对核心卖点的支撑结论

已读当前后台稿的 CF-01/02 能解释未确认不送、费用与资金分离;CF-03/04 有停止协调和退款额度;CF-05–10 有质量、财务、渠道、撤权和分析支撑。这些是合成原型,不是生产保障。

尚需显式贯通的五条故事:

  1. 沿餐次查询购买批次与原/后继订单,区分草稿、已付、已授权和实际交付。
  2. 两种竞态结果在客服、履约和顾客端一致呈现,失败方不隐藏、不覆盖。
  3. 换菜失败能定位停止回执、原款占用和补偿目标,禁止“恢复旧订单”。
  4. 三天范围结束正常自动核算/退差额,后台只处理未知和差异,不要求常规人工审核每笔。
  5. 结清后售后/更正关联原单且不重开,原始实收、已退和新调整可对账。

“后台支撑有效”仍需这些跨域故事与真实门禁证据,不能只按模块页面数量判定。本轮没有覆盖正在迭代的后台文件;后续原型和正式合同应消费本次设计评审后的版本。

6. 已执行检查与证据限度

运行:node docs/architecture/state/verify-fresh-delivery.mjs。

对本轮36份修改/新增 Markdown 检查了221个本地链接目标,均存在;未验证 URL 网络可达性、章节锚点或 Mermaid 浏览器渲染。复查旧歧义语句,已移除未限定的“恢复既有义务”“改期失败保留原承诺”和“创建新的尝试”等旧表述。

这是本地文档模型检查,不是数据库并发测试,不执行业务 guard,也不验证金额账本、真实设备或跨域恢复。脚本自身不是生产状态引擎,不可用本节统计替代 TV 矩阵的缺失证据。

7. 未决、实际责任与下一步

待决事实 当前建议 / 影响 决策与实际维护责任 恢复/后续路线
每日确认时间政策、边界相等、临近收费 时间谓词需互斥完备;两小时规则保持不变 用户定政策;运营/技术长期人待指定 补具体参数与边界样例后冻结 guard
商业订单/配送范围、部分履约与变更阶段 独立义务细分;不随意整周同单 业务/履约负责人待指定 核对多餐、多地址、缺货与部分执行再定粒度
留存、称重、优惠、补差与自动退费 推荐批次内暂留、结束自动核算原路退 用户定政策;交易/资金/财务实际人待指定 逐笔金额样例、舍入/分摊及退出规则评审
外部确定性与现场 fence UNKNOWN 不盲重发,现场未知不重做 支付/设备/质量/工程实际人待指定 核对 Provider 协议,演练停止和现场证据丢失
异常时限、值班和最小权限 正常自动、异常受限恢复 运营/安全实际人待指定 定年龄阈值、交接与升级路径,未定不可发布
正式共享模型、契约及其他实体状态机 六机只是核心候选,不是全部生命周期 架构长期人待指定,主会话维护当前稿 单一共享定义收敛后派生接口/任务,不复制每REQ模型

下一步优先评审对象粒度、确认时间门禁、旧单到新单协议和资金分摊四件事;其后形成正式共享数据模型/状态合同及验证任务。这里没有申请自动锁定、绑定、提交或发布,也没有把尚未知的政策默认为已批准。