ddd-model-review · diff
v1.0.1 to v1.1.0
48 added, 1 removed. Audit A to A.
---
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.0.1
+ 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);没有就写"该域无公认参考"并跳过该维度 |