ddd-model-review · v1.1.0 · 2026-09-29 · sha256 c7311a8d3267bf00
ddd-model-review v1.1.0A
Immutable. This exact content never changes and is served at /api/v1/blob/c7311a8d3267bf00.
--- name: ddd-model-review description: >- Global model quality assessment: consistency, completeness, coupling analysis, and feedback-loop triggers. Use when evaluating domain model quality, consistency/completeness/coupling checks, or model evolution review. risk: safe source: self tags: "[ddd, validation, review, feedback-loop]" date_added: "2026-05-08" slug: ddd-model-review version: 1.1.0 displayName: ddd-model-review --- # DDD Model Review > English version: [English](SKILL.en.md) ## 使用时机 - 战术建模完成后,需要对整体模型做质量门禁检查。 - 已有建模工件需要全面评估(可作为独立入口使用)。 - 定期模型健康检查:团队希望量化模型质量并识别退化趋势。 ## 输入要求 - **必需**:至少需要以下工件中的 3 项以上: - 上下文目录与词汇表(来自 `ddd-contexts`) - 上下文关系矩阵(来自 `ddd-context-map`) - 聚合目录与不变量表(来自 `ddd-aggregates`) - 领域事件目录与服务定义(来自 `ddd-domain-interactions`) - **可选**:子域分类(来自 `ddd-subdomains`)、事件流(来自 `ddd-discover`)、scope 定义(来自 `ddd-scope`)。 **输入不足时的可观察出口**:若可用工件少于 3 项,**不要**继续评分,也不做"降级标注"了事。直接输出一段缺失声明:列出已有 / 缺失工件、缺失项的来源 Skill(如"聚合目录 ← `ddd-aggregates`"),并停在"请先补齐以下工件"的请求上。收到补齐材料后从头重跑流程。 **NOT for(不适用,转交对应技能)**: - 只审单个聚合 / 单个上下文的内部设计 → `ddd-aggregates` / `ddd-contexts`,本技能做的是跨工件全局评审。 - 尚无任何建模工件、需求还模糊 → `ddd-scope` / `ddd-discover` 先行。 - 用户只想要阶段契约 / DoD 断言 → `stage-spec`,本技能不产出验收断言。 - 本技能为评审类:只出报告,不直接改被审工件;改动须用户显式授权。 ## 流程 1. **术语一致性检查**:扫描所有工件中的术语使用,检测跨工件的命名冲突、定义漂移、同名不同义。 - **行业对标(可选但推荐)**:若业务域存在成熟的开源参考实现(如物流域 Cargo、电商域 Broadleaf、B2B 域 Pyramid),应将其作为第 9 维比对参考。逐条列出:本模型对参考的 **语义融合/拆分偏离**;参考 **已知局限的主动识别**(例如 Activity/Status/Event 重叠);**未建模但应考虑的未来域**(例如 Billing/Customer/Carrier)。 2. **边界一致性检查**:验证聚合边界是否与上下文边界一致——不变量不应跨越上下文。 3. **完整性检查**:核对事件流中的每个事件是否在事件目录中有正式定义;每个命令是否有对应聚合处理。 4. **耦合分析**:评估上下文间耦合度——依赖方向、共享数据量、同步调用数。 5. **评分**:对以下维度 0-10 评分:术语一致性、边界合理性、不变量表达率、事件完整性、耦合度;若启用了行业对标,追加 "对标偏离" 维度。 - 评分判定规则(保证"相同输入得到相同分数"):术语一致性 = 10 −(术语冲突数 ÷ 术语总数 × 10,向下取整到 0.5);边界合理性 = 10 −(跨上下文不变量数 × 2);不变量表达率 = 聚合目录中带不变量的聚合占比 × 10;事件完整性 = 事件流中已在事件目录正式定义的事件占比 × 10;耦合度 = 10 −(同步调用依赖数 + 共享数据对象数,下限 0)。每个分数必须能从公式与工件计数复算出来。 6. **问题清单与回溯触发**:输出发现的问题、影响、证据、建议修复方案,并按触发条件生成回溯指令。 ## 输出 | 工件 | 结构要求 | | :----------- | :----------------------------------------------------------------------------------------------- | | 评分总览 | 表格:维度(术语一致性、边界合理性、不变量表达率、事件完整性、耦合度)、得分(0-10)、主要扣分原因 | | 问题清单 | 表格:问题、影响、证据(引用具体工件)、建议修复、优先级 | | 行业对标报告 | (仅当启用)表格:对比项、参考实现做法、本模型做法、是融合/拆分/遗漏、是否可接受、建议 | | 回溯触发清单 | 表格:触发条件、回溯目标 Skill、说明 | | 实施就绪判定 | 结论:Ready / Not Ready + 阻塞项列表 | ## 校验清单 - [ ] 每个扣分项都提供可复核的证据(引用具体工件与条目) - [ ] 回溯触发条件明确且可执行 - [ ] 评分可重复(相同输入得到相同分数) - [ ] 实施就绪判定有明确的通过/不通过标准 - [ ] 若业务域存在公认的开源参考实现,已至少做过一轮对标;对标结论已沉淀到问题清单 ## 回溯触发 本 Skill 是反馈闭环的核心触发器。根据评估结果触发以下回溯: | 触发条件 | 回溯至 | 说明 | | :------------------------- | :------------------------ | :------------------------------- | | 聚合边界与上下文边界矛盾 | `ddd-contexts` | 上下文需重新划分以容纳一致性需求 | | 术语冲突率 > 20% | `ddd-contexts` | 通用语言定义不充分 | | 不变量表达率 < 60% | `ddd-aggregates` | 聚合可能为数据容器而非行为边界 | | 集成模式与上下文映射不一致 | `ddd-context-map` | 战术层发现了新的集成需求 | | 事件完整性 < 70% | `ddd-domain-interactions` | 事件目录缺失或未覆盖关键流程 | **防止无限循环**:同一回溯路径最多执行 3 次。若第 3 次仍触发,标记为"需人工介入的架构决策"。 ## 示例 ### 调用示例 ```text @ddd-model-review 请对以下建模工件做全局质量评估: - 上下文目录:[粘贴] - 聚合目录:[粘贴] - 领域事件目录:[粘贴] - 上下文关系矩阵:[粘贴] 请输出分维度评分、问题清单与回溯建议。 ``` ### 最短真实示例(前置 → 调用 → 产出摘录) 前置:`ddd-discover` 与 `ddd-contexts`、`ddd-aggregates` 已跑完,手上有 4 份工件(满足"至少 3 项")。 调用: ```text @ddd-model-review 工件如下——上下文目录:订单、库存、支付;聚合目录:Order(不变量:总额=行项之和)、 Cart(无不变量)、Payment(不变量:金额>0);事件流含 OrderPlaced/OrderShipped/StockReserved, 事件目录缺 OrderShipped 的定义。……[粘贴完整工件] ``` 产出摘录(应长这样): ```text | 维度 | 得分 | 主要扣分原因 | | 边界合理性 | 10 | 无跨上下文不变量 | | 不变量表达率 | 6.7 | 3 个聚合中 2 个带不变量 | | 事件完整性 | 6.7 | OrderShipped 未在事件目录定义 | 回溯触发:事件完整性 < 70% → 建议回溯 ddd-domain-interactions 补事件目录。 实施就绪判定:Not Ready(阻塞项:事件目录缺失 1 条)。 ``` ## 常见错法 → 改法 | 错法 | 改法 | | :--- | :--- | | 工件只有 1–2 份就硬评,输出"降级标注"的分数 | 停在缺失声明:列出缺失工件与来源 Skill,等补齐后重跑(见"输入不足时的可观察出口") | | 凭感觉给分(如"耦合度大概 7 分") | 用"评分判定规则"的公式复算,分数旁写明计数来源(哪个工件哪几条) | | 用户没让评就自动跑全局评审 | 本技能仅在用户点名或上游 DDD 技能回溯触发时执行,不自主触发 | | 评审发现问题时顺手改掉建模工件 | 只出报告与修复建议;改工件须用户显式授权 | | 同一问题反复回溯 3 次以上 | 第 3 次仍触发即标记"需人工介入的架构决策",停止再回溯(见"防止无限循环") | | 行业对标杜撰不存在的参考实现 | 只对标确有其库的开源实现(如物流 Cargo、Broadleaf);没有就写"该域无公认参考"并跳过该维度 |