本文件定义《Data-Driven AI:从数据到智能》的图表规范。
图优先原则见
WRITING_STYLE.md第三章,本文件是它的展开。所有图必须能在
mkdocs.yml的 superfences + mermaid@11 配置下直接渲染。
能用图,不用大段文字。
一本优秀技术书,应该让读者看图就理解。
本书使用的图包括:
| 图种 | 何时用 |
|---|---|
| 架构图 | 描述系统由哪些层组成、层间关系 |
| 生命周期图 | 描述某对象从产生到消亡的阶段 |
| 时序图 | 描述多组件之间的交互顺序 |
| 对比图 | 描述两种方案的差异 |
| 数据流图 | 描述数据从源到汇的流向 |
| 闭环流程图 | 描述反馈回路的闭合路径 |
不用饼图。
不用装饰性插图。
不用与正文信息重复的图。
一张图不携带任何正文没有的信息,删除它。
一张图携带的信息正文没有,补正文或删图。
- Mermaid(首选)
- 架构图(HTML + SVG)
- Draw.io / PlantUML(Mermaid 表达力不足时)
| 工具 | 用它的理由 | 不用它的理由 |
|---|---|---|
| Mermaid | 进版本库、可 diff、可渲染 | 复杂拓扑表达力不足 |
| HTML + SVG | 复杂架构图、需要精确排版 | 不可 diff、维护成本高 |
| Draw.io | 图形丰富 | 源文件二进制、不可 diff |
| PlantUML | 时序图表达力强 | 需要 Java 运行环境 |
Mermaid 源直接写在 Markdown 代码块里。
不单独存 .mmd 文件。
架构图源文件存 diagrams/ 目录。
命名规范:层名-图名.扩展。
示例:ontology-agent-consumption.svg。
能用 Mermaid 表达的图,不要用 Draw.io。
同一种图出现两种工具版本,删一个。
本书 Mermaid 版本对齐 mkdocs.yml 的 mermaid@11.15.0。
不要使用 11 不支持的语法。
统一对齐 mkdocs.yml 的 indigo primary。
主色用 #3f51b5 系。
辅色用灰阶。
禁止用红绿同图(色盲不友好)。
禁止用超过 5 种颜色。
每张图必须有:
- 图标题(用 Markdown 标题或图注)
- 图注(图下方一句话说明)
- 正文引用
节点标签用中文。
英文术语按 GLOSSARY.md 首次出现规范给中英文。
标签尽量短。
长标签换行用 <br/>。
禁止节点嵌套超过两层。
一张图超过 15 个节点,考虑拆成多张图。
拆图时每张图聚焦一个视角。
flowchart LR
A[源] --> B[处理]
B --> C[汇]
方向优先用 LR(从左到右)。
闭环用 flowchart LR + 虚线回边。
sequenceDiagram
participant A as Agent
participant S as Semantic Layer
A->>S: 调用语义接口
S-->>A: 返回结果
参与者用中文别名。
stateDiagram-v2
[*] --> 草稿
草稿 --> 评审: 提交
评审 --> 发布: 通过
评审 --> 草稿: 驳回
发布 --> [*]
erDiagram
ENTITY_A ||--o{ ENTITY_B : "包含"
ENTITY_A {
string id PK
string name
}
仅用于 Ontology 层的实体关系展示。
一张 Mermaid 图在本地 mkdocs serve 渲染失败,必须修。
一张 Mermaid 图的颜色超过 5 种,精简。
Mermaid 无法表达复杂拓扑时用。
例如:
- 多层嵌套的部署架构
- 需要精确对齐的组件排版
- 需要图标与配色的系统全景图
每张架构图导出两种格式:
- SVG(进版本库,可缩放)
- PNG(备用,高分辨率)
存 diagrams/ 目录。
命名:层名-图名.svg。
示例:semantic-layer-overview.svg。
同一信息只画一次。
Mermaid 能表达的,不要用 SVG 重复画。
一张 SVG 图没有对应正文解读,补解读或删图。
每张图必须在正文有引用。
引用方式:
如图所示,Agent 通过 Semantic Layer 访问数据。
引用后必须解读。
解读不是复述图里有什么。
解读是说明图说明了什么结论。
图能说明"是什么"。
图不能替代"为什么"的论述。
"为什么"必须用文字讲清。
图的更新必须同步正文。
正文引用了图,图改了,正文要改。
一张图在正文中没有被引用,删除它或补引用。
一张图被引用但没有解读,补解读。
每张架构图必须标注它属于 DDA 的哪一层。
标注方式:
- 图标题中包含层名
- 或图注中说明所属层
示例:
图:Semantic Layer 层的 Agent 消费架构
跨层依赖的箭头必须从上层指向下层(消费方向)。
不要从下层指向上层。
除非描述反馈回流,此时用虚线箭头并标注"反馈"。
描述 Data Loop 的闭环图,必须:
- 用虚线表示反馈回流
- 标注回流内容(数据修正、知识修正、Ontology 修正)
- 显示闭环的起点与终点重合
一张架构图无法判断它属于哪一层,补标注或重画。
新增一种图种需要:
- 在图的种类表中追加。
- 给出何时用的判定。
- 给出代码骨架模板(如适用)。
修订 Mermaid 版本需要:
- 同步
mkdocs.yml的extra_javascript。 - 全书检查现有 Mermaid 图是否仍渲染。
- 更新本文件的版本号说明。