---
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）；没有就写"该域无公认参考"并跳过该维度 |
