# DM-03|商品与发布领域模型 > 状态:working-draft;候选模型,不是已锁定的结构或状态契约。\ > 上游:[BC-03](../07-bounded-context/bc-03-catalog.md);输入:旧聚合材料(历史材料保留在 `docs_bak/`)。\ > 编写:主会话;业务决策与长期维护人:待指定。日期:2026-09-18。 ## 1. 对象分类与候选聚合 | 对象 | 分类 | 维护什么 | 要保护的业务含义 | |:---|:---|:---|:---| | Category | 候选根 | 类目身份及层级关系 | 避免循环和非法引用,精确规则待定 | | Product / SKU | 候选独立根 | 商品身份;销售对象身份 | 稳定身份与版本内容分开 | | SKUVersion / SpecVersion | 不可变版本对象 | 销售、加工、包装规格 | 被接受的版本不覆盖修改 | | Publication | 候选根 | 目标范围、发布计划、生效引用 | 发布不等于可售 | | RecommendedRecipe | 候选根 | 推荐内容与 SKU 映射版本 | 不同于顾客个人菜谱 | | HomepageComposition | 候选根 | 首页内容编排版本 | 与 Publication 的生效职责不可重复 | | CatalogSnapshot | 不可变发布产物 | 生效内容及来源版本 | 不是新的主数据写入口 | “候选根”表示需要独立身份、生命周期及一致性责任的提案,不代表每行已经确定为一个事务。历史、子实体、值对象及集合的最终边界还需基于规模和不变量核对。 ## 2. 关系与引用 Product 与 SKU 引用关联;规格和推荐内容引用明确版本;Publication 引用待发布版本;首页编排通过发布动作生效。文件引用平台 FileAsset,不复制其存储生命周期。 值对象及共享引用的统一含义见 [MODELING-RULES](MODELING-RULES.md)。上下文之间引用 ID、版本或不可变快照,不共享可变实体。 ## 3. 生命周期 内容版本:草拟 → 审查 → 批准或退回;发布:计划 → 生效 → 结束/被替代。修改已批准内容产生新版本;回滚发布新指针,不把历史版本改回草稿。 这些是语义级路径,尚未列全每种政策下的迁移;不能直接生成生产枚举。业务对象状态、协调进度和技术回执分别保存与展示。 ## 4. 业务动作与事件 经营者创建、提交、批准和发布;顾客只查有效发布;交易及履约引用冻结规格。事件候选:“规格版本已批准”“发布已生效”“发布已结束”。 事件名称为中文业务语义候选,不新建机器事件名。进入后续契约设计时逐项确定输入、前置条件、结果、错误和受众。 ## 5. 强一致性及并发边界 同一发布目标的并发生效需目标级版本守卫;素材就绪必须有可验证版本/状态,不能仅先查一次即永久保证。发布快照与生效指针需本地一致,传播失效另行恢复。 共同约束见 [CONSISTENCY](CONSISTENCY.md):单根版本不能替代跨对象约束;如需同 BC 多根本地事务,必须明确保护范围与理由,不能默认为整个 BC 一把锁。 ## 6. 反例、未知与下一步 并发上线覆盖、媒体撤销、旧规格被订单引用后修改、发布成功但缓存旧。发布审批、目标重叠规则、品类范围和推荐实验归属待定。 上述反例是设计验证目标,尚未执行产品测试。先关闭影响边界的不确定性,再完善动作级迁移表及精确模型。身份、权限与业务状态的联动仍遵守 07 的统一授权接缝,不在本页复制一套权限规则。 ## 7. 交易严谨性补充(2026-09-29) 商业快照绑定明确规格/发布版本;SKU 下架、切法/计量修改不改变已购订单的原规格。发布回退是新的生效决定或指针版本,不把已结束发布执行改回初态。新购需重新校验可售依赖,旧订单仍可追溯;商品编辑权限不提供订单改价/改量权。 共用不变量、反例与恢复主讲见[TRANSACTION-INTEGRITY](TRANSACTION-INTEGRITY.md)。本节是设计约束,不证明本域实现或全部状态契约完成。