arch-design-agent-skill-das.../design/application-architecture/07-module-boundary-rules.md

54 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
doc_id: DOC-AA-007
title: 模块边界规则
version: 0.1.0
status: reviewed
owners:
- 林然
upstream:
- ./02a-layered-architecture.md
- ./02-modules.csv
downstream:
- ./06-codebase-alignment.csv
updated_at: 2026-03-23
---
# 模块边界规则
## 1. 跨模块依赖规则
### 允许的依赖方向
- MOD-SCANNER → MOD-DESIGNScanner 生成 Design 实体,调用 Design 约束规则)
- MOD-GRAPH → MOD-DESIGNGraph 读取 Design 实体转换为图结构)
- MOD-EDITOR → MOD-DESIGN, MOD-SCANNER, MOD-GRAPHPhase 2
- MOD-IMPL-TRACKER → MOD-DESIGN, MOD-SCANNERPhase 2
### 禁止的依赖
- MOD-DESIGN 不依赖任何其他业务模块(它是被依赖的核心)
- MOD-PROJECT 不依赖其他业务模块(独立管理项目元数据)
- MOD-GRAPH 不直接读文件系统(通过 Design 实体获取数据)
- 前端模块之间不直接调用(通过 Pinia store 或事件通信)
## 2. 数据边界
- 每个模块只通过 domain 层的公共接口暴露数据
- 模块间传递的是 domain 实体或其 DTO不是原始文件内容
- MOD-DESIGN 的实体是跨模块共享的"通用语言"
## 3. 反模式清单
| 反模式 | 说明 |
|--------|------|
| Scanner 包含业务规则 | 业务规则(如"capability 必须关联 module")属于 MOD-DESIGN |
| Graph 直接读文件 | Graph 应该从 Design 实体构建图,不应该自己解析文件 |
| Editor 绕过 Scanner 修改文件 | 修改后必须触发重新扫描保证数据一致 |
| Domain 层引入框架依赖 | domain 层纯 Python不导入 FastAPI/Pydantic/SQLAlchemy 等 |
| 前端组件硬编码 API 地址 | API 调用封装在模块的 api/ 目录,组件通过 composables 调用 |
| 前端模块间直接 import 组件 | 通过 shared/ 或事件通信 |
## 4. 演进策略
- MVP 阶段 MOD-DESIGN 是被动的纯模型库
- Phase 2 可以在 MOD-DESIGN 中增加更复杂的校验服务(如跨文件一致性检查)
- 如果 MOD-SCANNER 变得过大可以按文件类型拆分csv-parser、md-parser、yaml-parser但保持在 Scanner 的 infrastructure 层内