@chongyan/autospec 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.en.md +472 -0
- package/README.md +476 -0
- package/bin/autospec.js +3 -0
- package/knowledge/README.md +144 -0
- package/knowledge/checklists/code.md +182 -0
- package/knowledge/checklists/design.md +196 -0
- package/knowledge/checklists/release.md +70 -0
- package/knowledge/checklists/requirement.md +169 -0
- package/knowledge/checklists/test.md +46 -0
- package/knowledge/config/README.en.md +44 -0
- package/knowledge/config/README.md +44 -0
- package/knowledge/config/role-composition.yaml +98 -0
- package/knowledge/config/role-extensions.yaml +140 -0
- package/knowledge/config/skill-compositions.yaml +142 -0
- package/knowledge/config/team-stage.yaml +95 -0
- package/knowledge/config/team-tasks.yaml +139 -0
- package/knowledge/config/team-triggers.yaml +198 -0
- package/knowledge/config/validation-patterns.yaml +137 -0
- package/knowledge/domain/README.md +115 -0
- package/knowledge/domain/flows/README.md +194 -0
- package/knowledge/domain/glossary.md +143 -0
- package/knowledge/domain/rules.md +138 -0
- package/knowledge/environment/README.en.md +36 -0
- package/knowledge/environment/README.md +87 -0
- package/knowledge/environment/component-knowledge.md +316 -0
- package/knowledge/environment/detection-patterns.yaml +502 -0
- package/knowledge/environment/middleware-knowledge.md +237 -0
- package/knowledge/environment/template-registry.md +321 -0
- package/knowledge/guides/domain-driven-design.md +345 -0
- package/knowledge/guides/knowledge-management.md +369 -0
- package/knowledge/guides/requirement-engineering.md +329 -0
- package/knowledge/guides/stages/ai-effect-evaluator.md +93 -0
- package/knowledge/guides/stages/code-implementer.md +205 -0
- package/knowledge/guides/stages/code-reviewer.md +111 -0
- package/knowledge/guides/stages/consistency-checker.md +177 -0
- package/knowledge/guides/stages/design-planner.md +401 -0
- package/knowledge/guides/stages/design-reviewer.md +83 -0
- package/knowledge/guides/stages/integration-test-runner.md +105 -0
- package/knowledge/guides/stages/release-checker.md +205 -0
- package/knowledge/guides/stages/requirement-analyzer.md +195 -0
- package/knowledge/guides/stages/requirement-reviewer.md +83 -0
- package/knowledge/guides/stages/security-reviewer.md +89 -0
- package/knowledge/guides/stages/test-context-analyzer.md +250 -0
- package/knowledge/guides/stages/test-generator.md +241 -0
- package/knowledge/guides/stages/test-planner.md +183 -0
- package/knowledge/guides/stages/test-reviewer.md +76 -0
- package/knowledge/guides/stages/unit-test-runner.md +83 -0
- package/knowledge/guides/support/ai-agent-analyzer.md +362 -0
- package/knowledge/guides/support/ai-anomaly-analyzer.md +213 -0
- package/knowledge/guides/support/ai-artifact-evaluator.md +192 -0
- package/knowledge/guides/support/ai-capability-analyzer.md +193 -0
- package/knowledge/guides/support/ai-component-analyzer.md +169 -0
- package/knowledge/guides/support/ai-data-validator.md +276 -0
- package/knowledge/guides/support/ai-evaluation-planner.md +374 -0
- package/knowledge/guides/support/ai-path-evaluator.md +274 -0
- package/knowledge/guides/support/ai-pipeline-evaluator.md +219 -0
- package/knowledge/guides/support/ai-rag-analyzer.md +339 -0
- package/knowledge/guides/support/ai-task-assessor.md +418 -0
- package/knowledge/guides/support/ai-test-diagnostics.md +133 -0
- package/knowledge/guides/support/complexity-assessor.md +268 -0
- package/knowledge/guides/support/component-discovery.md +183 -0
- package/knowledge/guides/support/environment-scanner.md +207 -0
- package/knowledge/guides/support/environment-validator.md +207 -0
- package/knowledge/guides/support/knowledge-generator.md +234 -0
- package/knowledge/guides/support/methodology-extractor.md +55 -0
- package/knowledge/guides/support/pipeline-protocol.md +438 -0
- package/knowledge/guides/support/practice-logger.md +359 -0
- package/knowledge/guides/support/scope-inference.md +174 -0
- package/knowledge/guides/support/skill-distiller.md +91 -0
- package/knowledge/guides/support/skill-updater.md +45 -0
- package/knowledge/guides/support/skill-validator.md +72 -0
- package/knowledge/guides/support/team-orchestrator.md +323 -0
- package/knowledge/guides/support/tech-stack-analyzer.md +139 -0
- package/knowledge/guides/support/test-runner.md +254 -0
- package/knowledge/guides/system-design.md +352 -0
- package/knowledge/organization/ai-native-team.md +318 -0
- package/knowledge/organization/team-metrics.md +228 -0
- package/knowledge/principles/constitution.md +134 -0
- package/knowledge/principles/core-principles.md +368 -0
- package/knowledge/principles/design-philosophy.md +877 -0
- package/knowledge/principles/evolution.md +553 -0
- package/knowledge/process/01-requirement.md +113 -0
- package/knowledge/process/02-design.md +123 -0
- package/knowledge/process/03-implementation.md +90 -0
- package/knowledge/process/04-review.md +80 -0
- package/knowledge/process/05-testing.md +90 -0
- package/knowledge/process/06-delivery.md +88 -0
- package/knowledge/process/README.en.md +38 -0
- package/knowledge/process/README.md +48 -0
- package/knowledge/process/ai-sdlc.md +475 -0
- package/knowledge/process/overview.md +319 -0
- package/knowledge/standards/code-review.md +876 -0
- package/knowledge/standards/coding-style.md +940 -0
- package/knowledge/standards/data-consistency.md +1085 -0
- package/knowledge/standards/document-versioning.md +210 -0
- package/knowledge/standards/risk-detection.md +186 -0
- package/knowledge/templates/ai-evaluation.md +150 -0
- package/knowledge/templates/api-design.md +117 -0
- package/knowledge/templates/database-design.md +132 -0
- package/knowledge/templates/domain-driven-design.md +321 -0
- package/knowledge/templates/product-proposal.md +201 -0
- package/knowledge/templates/system-design.md +227 -0
- package/knowledge/templates/task-breakdown.md +107 -0
- package/knowledge/templates/test-case.md +170 -0
- package/package.json +53 -0
- package/plugins/.claude-plugin/plugin.json +134 -0
- package/plugins/agents/roles/ai-engineer.md +129 -0
- package/plugins/agents/roles/backend-engineer.md +165 -0
- package/plugins/agents/roles/ceo.md +94 -0
- package/plugins/agents/roles/data-engineer.md +135 -0
- package/plugins/agents/roles/devops-engineer.md +181 -0
- package/plugins/agents/roles/frontend-engineer.md +129 -0
- package/plugins/agents/roles/product-owner.md +98 -0
- package/plugins/agents/roles/quality-engineer.md +129 -0
- package/plugins/agents/roles/security-engineer.md +180 -0
- package/plugins/agents/roles/tech-lead.md +97 -0
- package/plugins/agents/support/blind-comparator.md +88 -0
- package/plugins/agents/support/consistency-checker.md +103 -0
- package/plugins/agents/support/failure-diagnostician.md +141 -0
- package/plugins/agents/support/independent-reviewer.md +80 -0
- package/plugins/agents/support/safety-auditor.md +121 -0
- package/plugins/agents/support/skill-benchmarker.md +86 -0
- package/plugins/agents/support/skill-forger.md +105 -0
- package/plugins/agents/support/stage-gate-evaluator.md +121 -0
- package/plugins/agents/support/test-coverage-reviewer.md +73 -0
- package/plugins/benchmarks/templates/README.md +44 -0
- package/plugins/benchmarks/templates/commands/explore-template.yaml +48 -0
- package/plugins/benchmarks/templates/pipeline/agile-template.yaml +84 -0
- package/plugins/benchmarks/templates/pipeline/waterfall-template.yaml +106 -0
- package/plugins/benchmarks/templates/skills/requirement-analyzer-template.yaml +48 -0
- package/plugins/commands/README.en.md +96 -0
- package/plugins/commands/README.md +96 -0
- package/plugins/commands/apply.md +191 -0
- package/plugins/commands/archive.md +76 -0
- package/plugins/commands/env-export.md +79 -0
- package/plugins/commands/env-sync.md +640 -0
- package/plugins/commands/env-template.md +223 -0
- package/plugins/commands/env-update.md +264 -0
- package/plugins/commands/env-validate.md +176 -0
- package/plugins/commands/env.md +79 -0
- package/plugins/commands/explore.md +76 -0
- package/plugins/commands/field-evolve.md +536 -0
- package/plugins/commands/memory.md +249 -0
- package/plugins/commands/project-evolve.md +821 -0
- package/plugins/commands/propose.md +93 -0
- package/plugins/commands/review.md +140 -0
- package/plugins/commands/run.md +224 -0
- package/plugins/commands/status.md +62 -0
- package/plugins/commands/validate.md +108 -0
- package/plugins/hooks/README.en.md +56 -0
- package/plugins/hooks/README.md +56 -0
- package/plugins/hooks/ai-project-guard.js +329 -0
- package/plugins/hooks/artifact-evaluation-hook.js +237 -0
- package/plugins/hooks/constitution-guard.js +211 -0
- package/plugins/hooks/environment-autocommit.js +264 -0
- package/plugins/hooks/environment-manager.js +778 -0
- package/plugins/hooks/execution-tracker.js +354 -0
- package/plugins/hooks/frozen-zone-guard.js +140 -0
- package/plugins/hooks/layer1-validator.js +423 -0
- package/plugins/hooks/lib/artifact-evaluator.js +414 -0
- package/plugins/hooks/lib/benchmarks/change-detector.js +390 -0
- package/plugins/hooks/lib/benchmarks/evaluator.js +605 -0
- package/plugins/hooks/lib/benchmarks/integration-example.js +169 -0
- package/plugins/hooks/lib/data-and-ai-detector.js +275 -0
- package/plugins/hooks/lib/detection-pattern-loader.js +865 -0
- package/plugins/hooks/lib/directory-discovery.js +395 -0
- package/plugins/hooks/lib/environment-config-loader.js +341 -0
- package/plugins/hooks/lib/environment-detector.js +553 -0
- package/plugins/hooks/lib/environment-evolver.js +564 -0
- package/plugins/hooks/lib/environment-registry.js +813 -0
- package/plugins/hooks/lib/execution-path.js +427 -0
- package/plugins/hooks/lib/hook-error-recorder.js +245 -0
- package/plugins/hooks/lib/hook-logger.js +538 -0
- package/plugins/hooks/lib/hook-runner.js +97 -0
- package/plugins/hooks/lib/hook-runner.sh +44 -0
- package/plugins/hooks/lib/hook-state-manager.js +480 -0
- package/plugins/hooks/lib/memory-extractor.js +377 -0
- package/plugins/hooks/lib/memory-manager.js +673 -0
- package/plugins/hooks/lib/metrics-analyzer.js +489 -0
- package/plugins/hooks/lib/project-evolution/auto-fixer.js +511 -0
- package/plugins/hooks/lib/project-evolution/memory-manager.js +346 -0
- package/plugins/hooks/lib/project-evolution/pattern-detector.js +476 -0
- package/plugins/hooks/lib/project-evolution/semantic-indexer.js +480 -0
- package/plugins/hooks/lib/project-structure-detector.js +326 -0
- package/plugins/hooks/lib/rollback-tracker.js +346 -0
- package/plugins/hooks/lib/source-code-scanner.js +596 -0
- package/plugins/hooks/lib/technology-stack-detector.js +374 -0
- package/plugins/hooks/lib/test-failure-analyzer.js +375 -0
- package/plugins/hooks/lib/test-failure-fixer.js +268 -0
- package/plugins/hooks/lib/trace-context.js +277 -0
- package/plugins/hooks/lib/validation-patterns.js +415 -0
- package/plugins/hooks/memory-sync.js +171 -0
- package/plugins/hooks/pipeline-observer.js +413 -0
- package/plugins/hooks/scope-sentinel.js +204 -0
- package/plugins/hooks/trace-initialization.js +169 -0
- package/plugins/memory/templates/code-quality.yaml +149 -0
- package/plugins/memory/templates/multi-system.yaml +155 -0
- package/plugins/memory/templates/team-habits.yaml +119 -0
- package/plugins/memory/templates/testing.yaml +121 -0
- package/plugins/skills/README.en.md +47 -0
- package/plugins/skills/README.md +104 -0
- package/plugins/skills/benchmark-executor/README.md +93 -0
- package/plugins/skills/benchmark-executor/SKILL.md +647 -0
- package/plugins/skills/benchmark-generator/SKILL.md +349 -0
- package/plugins/skills/delivery-stage/SKILL.md +203 -0
- package/plugins/skills/design-stage/SKILL.md +216 -0
- package/plugins/skills/evolution-process/SKILL.md +291 -0
- package/plugins/skills/exploration-phase/SKILL.md +133 -0
- package/plugins/skills/implementation-stage/SKILL.md +179 -0
- package/plugins/skills/layer1-validation/SKILL.md +79 -0
- package/plugins/skills/pending-dashboard/SKILL.md +109 -0
- package/plugins/skills/project-evolution/SKILL.md +847 -0
- package/plugins/skills/requirement-stage/SKILL.md +183 -0
- package/plugins/skills/skill-forge/SKILL.md +223 -0
- package/plugins/skills/skill-forge/references/description-guide.md +92 -0
- package/plugins/skills/skill-forge/references/quality-rubric.md +104 -0
- package/plugins/skills/skill-forge/references/skill-template.md +106 -0
- package/plugins/skills/startup-guard/SKILL.md +38 -0
- package/plugins/skills/testing-stage/SKILL.md +195 -0
- package/scripts/cli/global-init.js +288 -0
- package/scripts/cli/global.js +324 -0
- package/scripts/cli/index.js +55 -0
- package/scripts/cli/init.js +382 -0
- package/scripts/cli/list.js +69 -0
- package/scripts/cli/org.js +340 -0
- package/scripts/cli/update.js +44 -0
- package/scripts/config/commands.config.js +145 -0
- package/scripts/config/hooks.config.js +197 -0
- package/scripts/evolution/evolution-router.js +273 -0
- package/scripts/evolution/evolution-signal-collector.js +307 -0
- package/scripts/evolution/knowledge-loader.js +346 -0
- package/scripts/evolution/marketplace.js +317 -0
- package/scripts/evolution/version-manager.js +371 -0
- package/scripts/install/agents.js +106 -0
- package/scripts/install/commands.js +133 -0
- package/scripts/install/constants.js +424 -0
- package/scripts/install/hook-logger.js +536 -0
- package/scripts/install/hooks.js +110 -0
- package/scripts/install/index.js +39 -0
- package/scripts/install/skills.js +95 -0
- package/scripts/postinstall.js +25 -0
- package/scripts/state.js +376 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# 数据库设计模板
|
|
2
|
+
|
|
3
|
+
> 规范化数据库设计文档,确保数据模型清晰、一致。
|
|
4
|
+
|
|
5
|
+
## 使用说明
|
|
6
|
+
|
|
7
|
+
1. 每个数据库或模块使用独立的 .md 文件
|
|
8
|
+
2. 文件命名:`{数据库名}-{模块名}.md`,如 `order-db.md`
|
|
9
|
+
3. 表结构变更需更新版本历史
|
|
10
|
+
|
|
11
|
+
## 数据库概述
|
|
12
|
+
|
|
13
|
+
| 字段 | 值 |
|
|
14
|
+
|------|-----|
|
|
15
|
+
| 数据库名 | {database_name} |
|
|
16
|
+
| 数据库类型 | MySQL / PostgreSQL / MongoDB |
|
|
17
|
+
| 字符集 | utf8mb4 |
|
|
18
|
+
| 排序规则 | utf8mb4_unicode_ci |
|
|
19
|
+
|
|
20
|
+
## ER 图
|
|
21
|
+
|
|
22
|
+
```mermaid
|
|
23
|
+
erDiagram
|
|
24
|
+
USER ||--o{ ORDER : places
|
|
25
|
+
USER {
|
|
26
|
+
bigint id PK
|
|
27
|
+
varchar username
|
|
28
|
+
varchar email
|
|
29
|
+
datetime created_at
|
|
30
|
+
}
|
|
31
|
+
ORDER ||--|{ ORDER_ITEM : contains
|
|
32
|
+
ORDER {
|
|
33
|
+
bigint id PK
|
|
34
|
+
bigint user_id FK
|
|
35
|
+
decimal total_amount
|
|
36
|
+
varchar status
|
|
37
|
+
datetime created_at
|
|
38
|
+
}
|
|
39
|
+
ORDER_ITEM {
|
|
40
|
+
bigint id PK
|
|
41
|
+
bigint order_id FK
|
|
42
|
+
bigint product_id FK
|
|
43
|
+
int quantity
|
|
44
|
+
decimal price
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 表结构
|
|
49
|
+
|
|
50
|
+
### {表名}
|
|
51
|
+
|
|
52
|
+
**表说明**:{表的业务含义}
|
|
53
|
+
|
|
54
|
+
| 字段名 | 类型 | 可空 | 默认值 | 说明 |
|
|
55
|
+
|-------|------|------|-------|------|
|
|
56
|
+
| id | BIGINT | 否 | AUTO_INCREMENT | 主键 |
|
|
57
|
+
| {field} | VARCHAR(255) | 否 | - | {说明} |
|
|
58
|
+
| created_at | DATETIME | 否 | CURRENT_TIMESTAMP | 创建时间 |
|
|
59
|
+
| updated_at | DATETIME | 否 | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
|
60
|
+
|
|
61
|
+
**索引设计**
|
|
62
|
+
|
|
63
|
+
| 索引名 | 类型 | 字段 | 说明 |
|
|
64
|
+
|-------|------|------|------|
|
|
65
|
+
| PRIMARY | 主键 | id | 聚簇索引 |
|
|
66
|
+
| idx_{field} | 普通 | {field} | 查询优化 |
|
|
67
|
+
| uk_{field} | 唯一 | {field} | 唯一约束 |
|
|
68
|
+
|
|
69
|
+
**DDL 语句**
|
|
70
|
+
|
|
71
|
+
```sql
|
|
72
|
+
CREATE TABLE `{table_name}` (
|
|
73
|
+
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
74
|
+
`{field}` VARCHAR(255) NOT NULL COMMENT '{说明}',
|
|
75
|
+
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
76
|
+
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
77
|
+
PRIMARY KEY (`id`),
|
|
78
|
+
INDEX `idx_{field}` (`{field}`)
|
|
79
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='{表说明}';
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 字段命名规范
|
|
83
|
+
|
|
84
|
+
| 规则 | 示例 |
|
|
85
|
+
|------|------|
|
|
86
|
+
| 主键 | `id` |
|
|
87
|
+
| 外键 | `{referenced_table}_id` |
|
|
88
|
+
| 布尔值 | `is_{action}` / `has_{feature}` |
|
|
89
|
+
| 时间 | `{action}_at` / `{action}_time` |
|
|
90
|
+
| 数量 | `{entity}_count` / `{entity}_num` |
|
|
91
|
+
| 金额 | `{entity}_amount` / `{entity}_fee` |
|
|
92
|
+
|
|
93
|
+
## 状态枚举
|
|
94
|
+
|
|
95
|
+
### {状态类型}
|
|
96
|
+
|
|
97
|
+
| 值 | 名称 | 说明 |
|
|
98
|
+
|-----|------|------|
|
|
99
|
+
| 0 | INIT | 初始状态 |
|
|
100
|
+
| 1 | PROCESSING | 处理中 |
|
|
101
|
+
| 2 | SUCCESS | 成功 |
|
|
102
|
+
| 3 | FAILED | 失败 |
|
|
103
|
+
| -1 | CANCELLED | 已取消 |
|
|
104
|
+
|
|
105
|
+
## 数据一致性保障
|
|
106
|
+
|
|
107
|
+
### 事务边界
|
|
108
|
+
|
|
109
|
+
| 场景 | 事务范围 | 隔离级别 |
|
|
110
|
+
|------|---------|---------|
|
|
111
|
+
| {场景1} | {表列表} | READ COMMITTED |
|
|
112
|
+
| {场景2} | {表列表} | READ COMMITTED |
|
|
113
|
+
|
|
114
|
+
### 并发控制
|
|
115
|
+
|
|
116
|
+
| 场景 | 控制方式 | 说明 |
|
|
117
|
+
|------|---------|------|
|
|
118
|
+
| 库存扣减 | 乐观锁 | version 字段 |
|
|
119
|
+
| 余额变更 | 悲观锁 | SELECT FOR UPDATE |
|
|
120
|
+
| 订单创建 | 分布式锁 | Redis Lock |
|
|
121
|
+
|
|
122
|
+
## 版本历史
|
|
123
|
+
|
|
124
|
+
| 版本 | 日期 | 修改人 | 修改说明 |
|
|
125
|
+
|-----|------|--------|---------|
|
|
126
|
+
| v1.0 | YYYY-MM-DD | | 初始版本 |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
**维护者**: 后端团队
|
|
131
|
+
**进化分区**: 受控区
|
|
132
|
+
**关联文档**: `design-knowledge/architecture/{name}.md`
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
# 领域驱动设计: {项目/系统名}
|
|
2
|
+
|
|
3
|
+
> **版本**: v1.0
|
|
4
|
+
> **模板来源**: Eric Evans《领域驱动设计》、Vaughn Vernon《实现领域驱动设计》、Microsoft Azure官方指南、DDD Crew最佳实践
|
|
5
|
+
> **适用范围**: 复杂业务系统、核心业务建模、微服务边界划分
|
|
6
|
+
> **生成模式**: 战略设计 → 战术设计 → 实现约束
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. 战略设计
|
|
11
|
+
|
|
12
|
+
### 1.1 领域识别
|
|
13
|
+
|
|
14
|
+
> 识别问题空间,划分核心域、支撑域、通用域
|
|
15
|
+
|
|
16
|
+
| 领域类型 | 领域名称 | 描述 | 业务价值 | 投入建议 |
|
|
17
|
+
|---------|---------|------|---------|---------|
|
|
18
|
+
| 核心域 | | 核心竞争力,必须自研 | | 重点投入 |
|
|
19
|
+
| 支撑域 | | 支撑核心业务,可外包 | | 适度投入 |
|
|
20
|
+
| 通用域 | | 通用能力,可用现成方案 | | 最小投入 |
|
|
21
|
+
|
|
22
|
+
**核心域识别标准**:
|
|
23
|
+
- 是否是业务核心竞争力?
|
|
24
|
+
- 是否需要定制开发?
|
|
25
|
+
- 是否难以被替代?
|
|
26
|
+
|
|
27
|
+
### 1.2 限界上下文
|
|
28
|
+
|
|
29
|
+
> 定义解空间边界,每个上下文内有独立的统一语言
|
|
30
|
+
|
|
31
|
+
| 上下文名称 | 职责边界 | 包含聚合 | 统一语言关键术语 | 技术栈 |
|
|
32
|
+
|-----------|---------|---------|-----------------|--------|
|
|
33
|
+
| | | | | |
|
|
34
|
+
|
|
35
|
+
**限界上下文划分原则**:
|
|
36
|
+
- 按业务能力划分(推荐)
|
|
37
|
+
- 按子域划分
|
|
38
|
+
- 边界内语言一致性
|
|
39
|
+
- 边界间松耦合
|
|
40
|
+
|
|
41
|
+
### 1.3 上下文映射图
|
|
42
|
+
|
|
43
|
+
```mermaid
|
|
44
|
+
graph LR
|
|
45
|
+
subgraph 核心域
|
|
46
|
+
A[上下文A]
|
|
47
|
+
B[上下文B]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
subgraph 支撑域
|
|
51
|
+
C[上下文C]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
subgraph 通用域
|
|
55
|
+
D[上下文D]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
A -->|模式| B
|
|
59
|
+
A -->|模式| C
|
|
60
|
+
B -->|模式| D
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 1.4 上下文集成模式
|
|
64
|
+
|
|
65
|
+
| 上游上下文 | 下游上下文 | 集成模式 | 说明 | 通信方式 |
|
|
66
|
+
|-----------|-----------|---------|------|---------|
|
|
67
|
+
| | | Partnership | 伙伴关系,共同演进 | 同步/异步 |
|
|
68
|
+
| | | Shared Kernel | 共享内核,共享部分模型 | 共享库 |
|
|
69
|
+
| | | Customer/Supplier | 客户-供应商,下游有话语权 | API |
|
|
70
|
+
| | | Conformist | 跟随者,下游适应上游 | API |
|
|
71
|
+
| | | Anticorruption Layer | 防腐层,隔离外部模型 | 适配器 |
|
|
72
|
+
| | | Open Host Service | 开放主机服务,公开API | REST/gRPC |
|
|
73
|
+
| | | Published Language | 发布语言,共享文档 | Schema |
|
|
74
|
+
|
|
75
|
+
**集成模式选择指南**:
|
|
76
|
+
|
|
77
|
+
| 场景 | 推荐模式 |
|
|
78
|
+
|------|---------|
|
|
79
|
+
| 同一团队,紧密协作 | Partnership |
|
|
80
|
+
| 共享核心逻辑 | Shared Kernel |
|
|
81
|
+
| 下游有议价权 | Customer/Supplier |
|
|
82
|
+
| 下游无议价权 | Conformist |
|
|
83
|
+
| 外部系统集成 | Anticorruption Layer |
|
|
84
|
+
| 对外提供服务 | Open Host Service |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 2. 战术设计
|
|
89
|
+
|
|
90
|
+
### 2.1 统一语言术语表
|
|
91
|
+
|
|
92
|
+
> 每个限界上下文有独立的术语表,消除沟通歧义
|
|
93
|
+
|
|
94
|
+
| 术语 | 英文 | 定义 | 所属上下文 | 代码命名 |
|
|
95
|
+
|-----|------|------|-----------|---------|
|
|
96
|
+
| | | | | |
|
|
97
|
+
|
|
98
|
+
**术语分类**:
|
|
99
|
+
- 业务实体:订单、用户、商品...
|
|
100
|
+
- 业务动作:下单、支付、发货...
|
|
101
|
+
- 业务状态:待支付、已支付、已取消...
|
|
102
|
+
- 业务规则:限额、时效、条件...
|
|
103
|
+
|
|
104
|
+
### 2.2 聚合设计
|
|
105
|
+
|
|
106
|
+
> 聚合是一致性边界,包含实体和值对象
|
|
107
|
+
|
|
108
|
+
| 聚合名称 | 聚合根 | 实体 | 值对象 | 不变量规则 | 所属上下文 |
|
|
109
|
+
|---------|--------|------|--------|-----------|-----------|
|
|
110
|
+
| | | | | | |
|
|
111
|
+
|
|
112
|
+
**聚合设计原则**:
|
|
113
|
+
- 小聚合优于大聚合
|
|
114
|
+
- 通过ID引用其他聚合
|
|
115
|
+
- 聚合边界 = 一致性边界 = 事务边界
|
|
116
|
+
- 聚合根是唯一入口
|
|
117
|
+
|
|
118
|
+
### 2.3 聚合根详情
|
|
119
|
+
|
|
120
|
+
#### {聚合名称}
|
|
121
|
+
|
|
122
|
+
**标识**: {聚合根ID字段}
|
|
123
|
+
|
|
124
|
+
**属性**:
|
|
125
|
+
| 字段名 | 类型 | 说明 | 是否值对象 |
|
|
126
|
+
|-------|------|------|-----------|
|
|
127
|
+
| | | | |
|
|
128
|
+
|
|
129
|
+
**行为**:
|
|
130
|
+
| 方法名 | 前置条件 | 后置条件 | 领域事件 | 业务规则 |
|
|
131
|
+
|-------|---------|---------|---------|---------|
|
|
132
|
+
| | | | | |
|
|
133
|
+
|
|
134
|
+
**不变量**:
|
|
135
|
+
- 不变量1:{描述}
|
|
136
|
+
- 不变量2:{描述}
|
|
137
|
+
|
|
138
|
+
**状态机**:
|
|
139
|
+
```mermaid
|
|
140
|
+
stateDiagram-v2
|
|
141
|
+
[*] --> 初始状态
|
|
142
|
+
初始状态 --> 状态A: 事件1
|
|
143
|
+
状态A --> 状态B: 事件2
|
|
144
|
+
状态B --> [*]: 事件3
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 2.4 领域服务
|
|
148
|
+
|
|
149
|
+
> 不属于任何实体/值对象的领域操作
|
|
150
|
+
|
|
151
|
+
| 服务名称 | 职责 | 操作的聚合 | 领域事件 | 无状态 |
|
|
152
|
+
|---------|------|-----------|---------|--------|
|
|
153
|
+
| | | | | ✅ |
|
|
154
|
+
|
|
155
|
+
**领域服务识别标准**:
|
|
156
|
+
- 涉及多个聚合的协调
|
|
157
|
+
- 不自然属于任何实体
|
|
158
|
+
- 无状态操作
|
|
159
|
+
|
|
160
|
+
### 2.5 领域事件
|
|
161
|
+
|
|
162
|
+
> 领域中发生的业务事实,用于聚合间通信
|
|
163
|
+
|
|
164
|
+
| 事件名称 | 触发条件 | 携带数据 | 发布方 | 订阅方 | 异步 |
|
|
165
|
+
|---------|---------|---------|--------|--------|------|
|
|
166
|
+
| | | | | | |
|
|
167
|
+
|
|
168
|
+
**领域事件命名规范**:
|
|
169
|
+
- 过去时:OrderCreated, PaymentCompleted
|
|
170
|
+
- 业务语义:描述发生了什么
|
|
171
|
+
- 不可变:事件一旦发生不可修改
|
|
172
|
+
|
|
173
|
+
### 2.6 仓储接口
|
|
174
|
+
|
|
175
|
+
> 聚合的持久化抽象,隔离领域层与基础设施
|
|
176
|
+
|
|
177
|
+
| 仓储名称 | 对应聚合 | 查询方法 | 持久化要求 |
|
|
178
|
+
|---------|---------|---------|-----------|
|
|
179
|
+
| | | | |
|
|
180
|
+
|
|
181
|
+
**仓储设计规则**:
|
|
182
|
+
- 只按聚合根ID查询
|
|
183
|
+
- 返回完整的聚合(不返回部分)
|
|
184
|
+
- 集合语义:Add, Remove, Get
|
|
185
|
+
- 不暴露SQL细节
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 3. 实现约束
|
|
190
|
+
|
|
191
|
+
### 3.1 聚合边界规则
|
|
192
|
+
|
|
193
|
+
**强一致性**(聚合内部):
|
|
194
|
+
- 聚合内部状态变更必须保证强一致性
|
|
195
|
+
- 单个聚合 = 单个事务
|
|
196
|
+
- 聚合根负责维护内部一致性
|
|
197
|
+
|
|
198
|
+
**最终一致性**(聚合之间):
|
|
199
|
+
- 聚合之间通过领域事件通信
|
|
200
|
+
- 不允许跨聚合的直接调用
|
|
201
|
+
- 接受最终一致性
|
|
202
|
+
|
|
203
|
+
**访问规则**:
|
|
204
|
+
- 聚合根是唯一入口
|
|
205
|
+
- 外部不可直接操作内部实体
|
|
206
|
+
- 通过聚合根方法修改内部状态
|
|
207
|
+
|
|
208
|
+
### 3.2 仓储规则
|
|
209
|
+
|
|
210
|
+
| 规则 | 说明 | 原因 |
|
|
211
|
+
|------|------|------|
|
|
212
|
+
| 只按ID查询 | 不支持复杂查询 | 保持聚合完整性 |
|
|
213
|
+
| 返回完整聚合 | 不返回部分属性 | 保证不变量 |
|
|
214
|
+
| 持久化原子性 | 整个聚合一起保存 | 保证一致性 |
|
|
215
|
+
| 延迟加载 | 按需加载关联聚合 | 性能优化 |
|
|
216
|
+
|
|
217
|
+
### 3.3 领域事件规则
|
|
218
|
+
|
|
219
|
+
| 规则 | 说明 |
|
|
220
|
+
|------|------|
|
|
221
|
+
| 命名规范 | 过去时(OrderCreated, PaymentCompleted) |
|
|
222
|
+
| 不可变 | 事件一旦发生不可修改 |
|
|
223
|
+
| 幂等处理 | 同一事件多次处理结果相同 |
|
|
224
|
+
| 版本控制 | 事件结构变更需版本管理 |
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 4. 反模式警示
|
|
229
|
+
|
|
230
|
+
| 反模式 | 症状 | 风险 | 正确做法 |
|
|
231
|
+
|--------|------|------|---------|
|
|
232
|
+
| 贫血模型 | 只有getter/setter,无行为 | 业务逻辑散落,难以维护 | 富领域模型,行为内聚 |
|
|
233
|
+
| 大聚合 | 聚合包含过多实体 | 并发冲突、性能问题 | 小聚合,按一致性边界划分 |
|
|
234
|
+
| 跨聚合直接引用 | 聚合A直接持有聚合B对象 | 破坏聚合边界 | 通过ID引用 |
|
|
235
|
+
| 领域服务滥用 | 服务承载所有逻辑 | 过程式代码,失去DDD价值 | 优先放在聚合根 |
|
|
236
|
+
| 忽略统一语言 | 代码与业务术语不一致 | 沟通成本高,易出错 | 重构命名,保持一致 |
|
|
237
|
+
| 仓储暴露SQL | 仓储返回部分字段 | 破坏聚合完整性 | 返回完整聚合 |
|
|
238
|
+
| 事件丢失 | 事件发布后未持久化 | 数据不一致 | 事件溯源或发件箱模式 |
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 5. 与AutoSpec流程融合
|
|
243
|
+
|
|
244
|
+
### 需求阶段 → 战略设计
|
|
245
|
+
- 业务域拆解 → 子领域识别(核心域/支撑域/通用域)
|
|
246
|
+
- 用例分析 → 限界上下文边界识别
|
|
247
|
+
- 业务流程 → 上下文集成关系
|
|
248
|
+
|
|
249
|
+
### 设计阶段 → 战术设计
|
|
250
|
+
- 系统设计 → 聚合设计、领域模型
|
|
251
|
+
- 接口设计 → 领域服务、仓储接口
|
|
252
|
+
- 数据库设计 → 聚合持久化映射
|
|
253
|
+
|
|
254
|
+
### 实现阶段
|
|
255
|
+
- 代码结构按聚合组织
|
|
256
|
+
- 领域事件驱动解耦
|
|
257
|
+
- 仓储隔离持久化细节
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## 附录:DDD核心概念速查
|
|
262
|
+
|
|
263
|
+
### 战略设计概念
|
|
264
|
+
|
|
265
|
+
| 概念 | 定义 | 关键点 |
|
|
266
|
+
|------|------|--------|
|
|
267
|
+
| 统一语言 Ubiquitous Language | 团队共享的业务术语 | 消除沟通歧义 |
|
|
268
|
+
| 领域 Domain | 问题空间 | 业务问题域 |
|
|
269
|
+
| 子领域 Subdomain | 领域的细分 | 核心域、支撑域、通用域 |
|
|
270
|
+
| 限界上下文 Bounded Context | 解空间边界 | 语言一致性范围 |
|
|
271
|
+
| 上下文映射 Context Map | 上下文间关系 | 集成模式选择 |
|
|
272
|
+
|
|
273
|
+
### 战术设计概念
|
|
274
|
+
|
|
275
|
+
| 概念 | 定义 | 关键特征 |
|
|
276
|
+
|------|------|---------|
|
|
277
|
+
| 实体 Entity | 有唯一标识的对象 | ID标识、可变、生命周期 |
|
|
278
|
+
| 值对象 Value Object | 无标识、不可变对象 | 不可变、可替换、相等性 |
|
|
279
|
+
| 聚合 Aggregate | 一致性边界 | 聚合根、事务原子性 |
|
|
280
|
+
| 领域服务 Domain Service | 跨聚合操作 | 无状态、领域概念 |
|
|
281
|
+
| 领域事件 Domain Event | 业务事实 | 过去时、不可变 |
|
|
282
|
+
| 仓储 Repository | 持久化抽象 | 集合语义、按ID查询 |
|
|
283
|
+
| 工厂 Factory | 创建逻辑封装 | 复杂对象创建 |
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 模板使用说明
|
|
288
|
+
|
|
289
|
+
### 必填章节
|
|
290
|
+
|
|
291
|
+
以下章节为必填,缺少则DDD设计不完整:
|
|
292
|
+
|
|
293
|
+
- [ ] 1.1 领域识别
|
|
294
|
+
- [ ] 1.2 限界上下文
|
|
295
|
+
- [ ] 2.1 统一语言术语表
|
|
296
|
+
- [ ] 2.2 聚合设计
|
|
297
|
+
|
|
298
|
+
### 可选章节
|
|
299
|
+
|
|
300
|
+
以下章节根据复杂度选择性填写:
|
|
301
|
+
|
|
302
|
+
- 1.3 上下文映射图(多上下文时必填)
|
|
303
|
+
- 1.4 上下文集成模式(多上下文时必填)
|
|
304
|
+
- 2.3 聚合根详情(核心聚合必填)
|
|
305
|
+
- 2.4 领域服务(有跨聚合操作时填写)
|
|
306
|
+
- 2.5 领域事件(有事件驱动时填写)
|
|
307
|
+
- 2.6 仓储接口(有持久化时填写)
|
|
308
|
+
|
|
309
|
+
### 最佳实践
|
|
310
|
+
|
|
311
|
+
1. **先战略后战术**:先划分限界上下文,再设计聚合
|
|
312
|
+
2. **小步迭代**:从核心域开始,逐步完善
|
|
313
|
+
3. **统一语言优先**:术语不一致时先解决术语问题
|
|
314
|
+
4. **反模式警觉**:定期检查是否陷入反模式
|
|
315
|
+
5. **适度设计**:简单场景不过度设计
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
**维护者**: AutoSpec 团队
|
|
320
|
+
**进化分区**: 🟡 受控区
|
|
321
|
+
**关联文档**: `knowledge/guides/domain-driven-design.md`, `knowledge/domain/glossary.md`
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Proposal: {需求名称}
|
|
2
|
+
|
|
3
|
+
> **版本**: v1.0
|
|
4
|
+
> **模板来源**: 业界需求工程最佳实践 / 结构化需求分析方法
|
|
5
|
+
> **适用范围**: 所有需求提案文档
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 背景与价值
|
|
10
|
+
|
|
11
|
+
### 1.1 业务背景
|
|
12
|
+
|
|
13
|
+
{描述业务背景:当前面临的问题、市场机会、用户需求等}
|
|
14
|
+
|
|
15
|
+
### 1.2 业务价值 (Why)
|
|
16
|
+
|
|
17
|
+
{描述为什么要做这个需求,预期的业务价值是什么}
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 2. 目标与范围
|
|
22
|
+
|
|
23
|
+
### 2.1 目标 (Success Criteria)
|
|
24
|
+
|
|
25
|
+
{用可衡量的指标描述成功标准,例如:
|
|
26
|
+
- 支持 X 场景
|
|
27
|
+
- 性能提升 Y%
|
|
28
|
+
- 用户体验改善(具体指标)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
### 2.2 范围 (包含/不包含)
|
|
32
|
+
|
|
33
|
+
**包含**:
|
|
34
|
+
- {功能范围 1}
|
|
35
|
+
- {功能范围 2}
|
|
36
|
+
|
|
37
|
+
**不包含**:
|
|
38
|
+
- {明确排除的范围 1}
|
|
39
|
+
- {明确排除的范围 2}
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 3. 业务架构设计
|
|
44
|
+
|
|
45
|
+
### 3.1 总体架构图
|
|
46
|
+
|
|
47
|
+
```mermaid
|
|
48
|
+
flowchart TB
|
|
49
|
+
subgraph 功能域 1
|
|
50
|
+
A[模块 A] --> B[模块 B]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
subgraph 功能域 2
|
|
54
|
+
C[模块 C] --> D[模块 D]
|
|
55
|
+
end
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 3.2 需求用例图
|
|
59
|
+
|
|
60
|
+
```mermaid
|
|
61
|
+
flowchart TB
|
|
62
|
+
subgraph 角色 1
|
|
63
|
+
A[用例 A]
|
|
64
|
+
B[用例 B]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
subgraph 角色 2
|
|
68
|
+
C[用例 C]
|
|
69
|
+
end
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 3.3 业务域拆解
|
|
73
|
+
|
|
74
|
+
| 场景类型 | 是否涉及 | 业务域 | 识别依据 |
|
|
75
|
+
|---------|---------|--------|---------|
|
|
76
|
+
| 银行/机构对接 | Y/N | {业务域名称} | {识别依据} |
|
|
77
|
+
| 数据管道 | Y/N | {业务域名称} | {识别依据} |
|
|
78
|
+
| AI/模型 | Y/N | {业务域名称} | {识别依据} |
|
|
79
|
+
|
|
80
|
+
### 3.4 资金流方案 (涉及资金链路时必须)
|
|
81
|
+
|
|
82
|
+
```mermaid
|
|
83
|
+
flowchart LR
|
|
84
|
+
账户 A -->|金额/时间 | 账户 B
|
|
85
|
+
账户 B -->|金额/时间 | 账户 C
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 3.5 用例业务流程
|
|
89
|
+
|
|
90
|
+
#### 3.5.1 用例 1: {用例名}
|
|
91
|
+
|
|
92
|
+
```mermaid
|
|
93
|
+
sequenceDiagram
|
|
94
|
+
participant U as 用户
|
|
95
|
+
participant S as 系统
|
|
96
|
+
participant D as 下游
|
|
97
|
+
|
|
98
|
+
U->>S: 1. 请求
|
|
99
|
+
S->>D: 2. 调用
|
|
100
|
+
D-->>S: 3. 响应
|
|
101
|
+
S-->>U: 4. 结果
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### 3.5.2 用例 2: {用例名}
|
|
105
|
+
|
|
106
|
+
{同上}
|
|
107
|
+
|
|
108
|
+
### 3.6 跨域接口 (概要)
|
|
109
|
+
|
|
110
|
+
| 接口名 | 调用方 | 被调用方 | 协议 | 说明 |
|
|
111
|
+
|-------|--------|---------|------|------|
|
|
112
|
+
| {接口 1} | {系统 A} | {系统 B} | HTTP/RPC | {说明} |
|
|
113
|
+
|
|
114
|
+
### 3.7 数据一致性保障
|
|
115
|
+
|
|
116
|
+
{描述数据一致性方案:
|
|
117
|
+
- 分布式事务(2PC/SAGA)
|
|
118
|
+
- 中间态 + 定时任务重试
|
|
119
|
+
- 消息队列(RocketMQ)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 4. 关键决策
|
|
125
|
+
|
|
126
|
+
| 决策点 | 选项 | 决策 | 理由 |
|
|
127
|
+
|-------|------|------|------|
|
|
128
|
+
| {决策 1} | 选项 A/B | {决策} | {理由} |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 5. 风险与缓解
|
|
133
|
+
|
|
134
|
+
| 风险项 | 影响 | 概率 | 缓解措施 |
|
|
135
|
+
|-------|------|------|---------|
|
|
136
|
+
| {风险 1} | 高/中/低 | 高/中/低 | {措施} |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 6. 非目标与约束
|
|
141
|
+
|
|
142
|
+
### 6.1 非目标
|
|
143
|
+
|
|
144
|
+
{明确说明本次需求不包含的内容}
|
|
145
|
+
|
|
146
|
+
### 6.2 知识库缺失识别
|
|
147
|
+
|
|
148
|
+
| 缺失项 | 影响 | 补充计划 |
|
|
149
|
+
|-------|------|---------|
|
|
150
|
+
| {缺失 1} | {影响} | {计划} |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 7. Open Questions
|
|
155
|
+
|
|
156
|
+
| 问题 | 提出人 | 日期 | 状态 | 决议 |
|
|
157
|
+
|------|--------|------|------|------|
|
|
158
|
+
| {问题 1} | {人名} | {日期} | Open/Closed | {决议} |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 8. 参考资料
|
|
163
|
+
|
|
164
|
+
| 类型 | 标题 | 链接 |
|
|
165
|
+
|------|------|------|
|
|
166
|
+
| 需求文档 | {标题} | {链接} |
|
|
167
|
+
| 设计文档 | {标题} | {链接} |
|
|
168
|
+
| 接口文档 | {标题} | {链接} |
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 模板使用说明
|
|
173
|
+
|
|
174
|
+
### 必填章节
|
|
175
|
+
|
|
176
|
+
以下章节为必填,缺少则提案不完整:
|
|
177
|
+
|
|
178
|
+
- [ ] 1.1 业务背景
|
|
179
|
+
- [ ] 1.2 业务价值
|
|
180
|
+
- [ ] 2.1 目标
|
|
181
|
+
- [ ] 2.2 范围
|
|
182
|
+
- [ ] 3.2 需求用例图
|
|
183
|
+
- [ ] 3.5 用例业务流程
|
|
184
|
+
|
|
185
|
+
### 可选章节
|
|
186
|
+
|
|
187
|
+
以下章节根据需求复杂度选择性填写:
|
|
188
|
+
|
|
189
|
+
- 3.1 总体架构图(复杂系统需要)
|
|
190
|
+
- 3.3 业务域拆解(涉及多业务域需要)
|
|
191
|
+
- 3.4 资金流方案(涉及资金操作必须)
|
|
192
|
+
- 3.6 跨域接口(涉及跨系统调用需要)
|
|
193
|
+
- 3.7 数据一致性保障(涉及跨系统数据需要)
|
|
194
|
+
|
|
195
|
+
### 最佳实践
|
|
196
|
+
|
|
197
|
+
1. **用例原子化**: 每个用例应该是原子的,不可再拆分
|
|
198
|
+
2. **流程图优先**: 能用图表达的不用文字
|
|
199
|
+
3. **明确边界**: 清晰定义包含和不包含的范围
|
|
200
|
+
4. **关键决策记录**: 记录重要技术选型和方案取舍
|
|
201
|
+
5. **风险前置**: 提前识别风险并制定缓解措施
|