@topmindspace/tms-skills 0.1.0

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.
Files changed (99) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +21 -0
  3. package/README.md +102 -0
  4. package/bin/tms-skills.js +160 -0
  5. package/package.json +48 -0
  6. package/top-ppt-html/README.md +254 -0
  7. package/top-ppt-html/SKILL.md +111 -0
  8. package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.html +3926 -0
  9. package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.model.json +168 -0
  10. package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.html +3926 -0
  11. package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.model.json +168 -0
  12. package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.html +4325 -0
  13. package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.model.json +321 -0
  14. package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.html +4325 -0
  15. package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.model.json +321 -0
  16. package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.html +4325 -0
  17. package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.model.json +321 -0
  18. package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.html +5527 -0
  19. package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.model.json +914 -0
  20. package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.html +5527 -0
  21. package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.model.json +914 -0
  22. package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.html +5527 -0
  23. package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.model.json +914 -0
  24. package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.html +5527 -0
  25. package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.model.json +914 -0
  26. package/top-ppt-html/assets/pptx-export.js +1944 -0
  27. package/top-ppt-html/assets/style-gallery.html +589 -0
  28. package/top-ppt-html/assets/templates/architecture.html +3728 -0
  29. package/top-ppt-html/assets/templates/engine.css +840 -0
  30. package/top-ppt-html/assets/templates/presentation.html +3738 -0
  31. package/top-ppt-html/assets/templates/research.html +4017 -0
  32. package/top-ppt-html/assets/templates/ui.js +520 -0
  33. package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
  34. package/top-ppt-html/assets/theme-overview-presentation.png +0 -0
  35. package/top-ppt-html/assets/theme-overview-research.png +0 -0
  36. package/top-ppt-html/assets/theme-overview.png +0 -0
  37. package/top-ppt-html/evals/prompts.csv +15 -0
  38. package/top-ppt-html/evals/rubric.schema.json +25 -0
  39. package/top-ppt-html/evals/run_evals.py +220 -0
  40. package/top-ppt-html/evals/trace.example.json +16 -0
  41. package/top-ppt-html/package.json +35 -0
  42. package/top-ppt-html/references/charts-basic.md +624 -0
  43. package/top-ppt-html/references/charts-discipline.md +108 -0
  44. package/top-ppt-html/references/charts-extended.md +482 -0
  45. package/top-ppt-html/references/charts.md +28 -0
  46. package/top-ppt-html/references/components-atoms.md +624 -0
  47. package/top-ppt-html/references/components.md +30 -0
  48. package/top-ppt-html/references/content-rules.md +490 -0
  49. package/top-ppt-html/references/design-system-engine.md +235 -0
  50. package/top-ppt-html/references/design-system.md +478 -0
  51. package/top-ppt-html/references/failure-modes.md +214 -0
  52. package/top-ppt-html/references/high-fidelity.md +127 -0
  53. package/top-ppt-html/references/icons.md +397 -0
  54. package/top-ppt-html/references/industry-benchmark.md +105 -0
  55. package/top-ppt-html/references/infographics-stats.md +308 -0
  56. package/top-ppt-html/references/infographics-structure.md +226 -0
  57. package/top-ppt-html/references/infographics.md +43 -0
  58. package/top-ppt-html/references/layout-grammar.md +315 -0
  59. package/top-ppt-html/references/layouts-architecture.md +108 -0
  60. package/top-ppt-html/references/layouts-combo.md +600 -0
  61. package/top-ppt-html/references/layouts-research.md +160 -0
  62. package/top-ppt-html/references/modes.md +254 -0
  63. package/top-ppt-html/references/outline-design.md +275 -0
  64. package/top-ppt-html/references/playbook.md +266 -0
  65. package/top-ppt-html/references/pptx-export.md +209 -0
  66. package/top-ppt-html/references/reform-plan.md +252 -0
  67. package/top-ppt-html/references/styles.md +370 -0
  68. package/top-ppt-html/references/tech-design.md +138 -0
  69. package/top-ppt-html/scripts/audit_css.py +109 -0
  70. package/top-ppt-html/scripts/audit_docs.py +176 -0
  71. package/top-ppt-html/scripts/audit_skill.py +220 -0
  72. package/top-ppt-html/scripts/audit_styles.py +351 -0
  73. package/top-ppt-html/scripts/build_examples.py +2276 -0
  74. package/top-ppt-html/scripts/build_pptx.js +2380 -0
  75. package/top-ppt-html/scripts/capture_theme_overview.js +78 -0
  76. package/top-ppt-html/scripts/checks_html.py +127 -0
  77. package/top-ppt-html/scripts/cross_verify.py +294 -0
  78. package/top-ppt-html/scripts/env_probe.py +158 -0
  79. package/top-ppt-html/scripts/extract_model.py +210 -0
  80. package/top-ppt-html/scripts/extract_snippet.py +374 -0
  81. package/top-ppt-html/scripts/gen_channel_a.js +214 -0
  82. package/top-ppt-html/scripts/layout-constants.json +3377 -0
  83. package/top-ppt-html/scripts/layout_slots.json +830 -0
  84. package/top-ppt-html/scripts/lib_layout_regions.js +412 -0
  85. package/top-ppt-html/scripts/measure_height.py +178 -0
  86. package/top-ppt-html/scripts/model-schema.json +547 -0
  87. package/top-ppt-html/scripts/negative_tests.py +307 -0
  88. package/top-ppt-html/scripts/package_skill.py +291 -0
  89. package/top-ppt-html/scripts/prepare_images.py +341 -0
  90. package/top-ppt-html/scripts/probe_image_export.py +188 -0
  91. package/top-ppt-html/scripts/quality_gate.py +301 -0
  92. package/top-ppt-html/scripts/regression.py +308 -0
  93. package/top-ppt-html/scripts/render_compare.py +275 -0
  94. package/top-ppt-html/scripts/render_from_model.py +698 -0
  95. package/top-ppt-html/scripts/scaffold_report.py +1054 -0
  96. package/top-ppt-html/scripts/section-file-map.json +105 -0
  97. package/top-ppt-html/scripts/sync_runtime.py +662 -0
  98. package/top-ppt-html/scripts/validate_pptx.py +1510 -0
  99. package/top-ppt-html/scripts/validate_report.py +1456 -0
@@ -0,0 +1,275 @@
1
+ # 内容架构与大纲设计(生成前必经阶段)
2
+
3
+ > **报告的质量上限在写第一个字之前就定了**——由「证据底稿 + 故事线 + 大纲 + 逐页规划」决定,不由辞藻和样式决定。
4
+ > 本规范定义生成前的内容架构流程:**意图解析 → 证据表 → 故事线脑暴 → SCR 收敛(含主张树)→ 大纲 → 逐页规划 → 用户确认(按需)**。
5
+ > 形式参数(模式/风格/主题/篇幅/交付格式)由 SKILL.md 六项问询收集;本文件管的是**内容本身怎么想、怎么组织**。
6
+
7
+ ---
8
+
9
+ ## 一、内容架构七步法
10
+
11
+ ```
12
+ ① 意图解析 谁看?什么场景?要回答什么决策问题?→ 核心主张一句话
13
+ ② 证据表 把材料变成可审计的底稿(来源位置/期间/单位/置信度/冲突/caveat/含义/推荐视觉)
14
+ ③ 故事线脑暴 2–3 条可选故事线 + issue tree / hypothesis tree,比较证据强度与风险缺口
15
+ ④ SCR 收敛 推荐故事线收敛为 Situation–Complication–Resolution + 主张树(3–5 分论点,MECE)
16
+ ⑤ 大纲设计 分论点分组为章;章标题 = 该章结论;标注每章承载形态与密度
17
+ ⑥ 逐页规划 每页一张规划卡:主张 / 内容单元 / 信息密度与组件清单 / 版式 / 图表 / 细节处理
18
+ ⑦ 用户确认 长报告与敏感内容必确认;小报告可跳过(默认按规划走)
19
+ ─────────────────────────────────────────────────────────────
20
+ 之后才进入生成(SKILL.md 工作流),规划即填写 REPORT_MODEL 的直接输入
21
+ ```
22
+
23
+ > **为什么前置证据表与故事线脑暴**:直接从材料跳到单版大纲,等于用第一条想到的叙事结构绑架全部材料——证据冲突会被静默抹平、弱枝论点会混进主张树。**先摊开证据、再发散故事线、最后收敛**,是咨询材料的标准做法。
24
+
25
+ ### ① 意图解析(问自己四个问题,写进内部笔记,不进报告)
26
+
27
+ 1. **谁看**:决策者 / 评审专家 / 普通听众 / 混合?(决定模式 A/B/C 与密度档)
28
+ 2. **什么场景**:台上 10 分钟 / 坐读 30 分钟 / 评审会看图?(决定篇幅与节奏)
29
+ 3. **要回答什么决策问题**:报告读完,读者应该做出/改变什么判断?(这是报告存在的理由)
30
+ 4. **核心主张一句话**:≤ 30 字,含判断和数字更好("X 是 Y 的第一瓶颈,优先解决可获 Z")。
31
+ 写不出这一句 → 材料还没想清楚,先与用户澄清意图,不要开始生成。
32
+
33
+ ### ② 证据表(MBB 标准 · 可审计底稿)
34
+
35
+ 把源材料摊成一张**逐条可追溯**的底表。每条事实/数字/判断/建议/caveat 一行,字段固定:
36
+
37
+ | 字段 | 说明 | 示例 |
38
+ |------|------|------|
39
+ | 来源位置 | 哪个文件/哪一页/哪张表 | `材料A P12 表3` / `外部报告 [3]` |
40
+ | 期间 | 数据覆盖的时间窗 | `2024Q1–2025Q2` |
41
+ | 单位 / 口径 | 计量单位与统计口径 | `亿元,含税,全渠道` |
42
+ | 置信度 | 高(实测/官方)/ 中(第三方)/ 低(估算/预测) | `中` |
43
+ | 冲突 | 与其他来源不一致之处(**记录,不静默归一**) | `与材料B 的 42% 不一致(口径差)` |
44
+ | caveat | 适用条件、例外、限制 | `仅覆盖一线城市` |
45
+ | 含义 | 这条证据支持什么判断 | `支持"转化是瓶颈"` |
46
+ | 推荐视觉 | 该证据最合适的承载(图表/表/图示) | `漏斗图` / `密表` |
47
+
48
+ **硬规则**:
49
+ - **所有事实、数字、判断、建议、caveat 必须可追溯到源材料位置**,或明确标记为缺口(`待补:xx`)。
50
+ - **不得用常识补源材料没有的数据**;不得把外部预测当既成事实。
51
+ - 来源间数值/口径不一致 → **记录冲突,不要静默归一**;冲突本身往往是报告的洞见。
52
+ - 缺口清单单独列一节(这些是后面 `.tbd` 待核实标注与 `.flagbar` 的候选)。
53
+
54
+ ### ③ 故事线脑暴(发散 2–3 条,不急于收敛)
55
+
56
+ 基于证据表提出 **2–3 条可选故事线**(不是 2–3 个标题,而是 2–3 种**叙事结构**),每条给出:
57
+
58
+ - **issue tree(议题树)**:把决策问题逐层拆成子问题(MECE),标出哪些子问题**证据已足**、哪些**缺证据**。
59
+ - **hypothesis tree(假设树)**:先立假设("瓶颈在转化而非流量"),再列**验证所需的证据**与**可能推翻它的证据**。
60
+ - **对比维度**:证据强度 / 风险缺口 / 适用受众 / 不推荐原因。
61
+
62
+ **为什么必须做**:单一故事线容易让材料迁就结构。摆出多条并写明"为什么不选另外两条",是防止叙事自嗨的最低成本手段。
63
+
64
+ ### ④ SCR 收敛 + 主张树
65
+
66
+ **SCR 结构**(全篇骨架,写进内部笔记):
67
+
68
+ - **Situation 情境**:读者已认同的事实基线(1–2 句,不含新信息)。
69
+ - **Complication 冲突/复杂性**:打破基线的事实或变化(**报告真正的起点**——"为什么现在要看这份报告")。
70
+ - **Resolution 解决/主张**:你要读者接受的主张与行动(= 核心主张一句话)。
71
+
72
+ **主张树**(金字塔 · 自上而下设计,自下而上验证):
73
+
74
+ ```
75
+ 核心主张(一句话)
76
+ ├─ 分论点 1(支撑主张的第 N 个理由,每章一个)
77
+ │ ├─ 证据 1a(来自证据表:数据 → 图表选型)
78
+ │ ├─ 证据 1b(来自证据表:案例 → 卡片/时间线)
79
+ │ └─ 含义(so-what:这一章意味着什么行动)
80
+ ├─ 分论点 2 …
81
+ └─ 分论点 N …
82
+ ```
83
+
84
+ **规则**:
85
+
86
+ - 分论点 3–5 个(少于 3 单薄,多于 5 合并);**MECE**:不重不漏——同一证据不得支撑两个分论点,所有分论点合起来能撑住主张。
87
+ - **自下而上验证**:任一分论点被推翻,核心主张是否动摇?不动摇的论点是弱枝 → 删(宁可 3 个硬论点,不要 6 个软论点)。
88
+ - **每个分论点必须挂到证据表的行**(可追溯);挂不上的分论点 = 无证据 → 删或标为缺口。
89
+ - 分论点顺序 = 叙事顺序:时间序(现状→路径→目标)/ 重要性序(最有力或最痛的在前)/ 逻辑序(问题→原因→方案)——选定一种,全篇一致。
90
+
91
+ ### ⑤ 大纲设计
92
+
93
+ - 章标题写**结论**(行动标题),不写主题词:✗"市场格局" ✓"入湖表 68% 从未被查询——资产沉睡是第一问题"。
94
+ - Agenda 即大纲:条目 = 章标题(结论式),一句话说明 = 该章的关键证据预告。
95
+ - 章数与篇幅对齐:演示 8–15 页 ≈ 3–5 章;研究 12–25 页 ≈ 4–7 章;架构 1–3 图即成篇。
96
+ - 每章标注**承载形态**:论证页 / 数据证据页 / 密表页 / 图示页 / 休止页——在逐页规划里落到具体版式。
97
+
98
+ ### ⑥ 逐页规划(每页一张规划卡 · 生成时直接照此填 REPORT_MODEL)
99
+
100
+ 对每一页回答七项(这是 REPORT_MODEL 每个 section 的设计稿):
101
+
102
+ | 项 | 内容 | 校验点 |
103
+ |----|------|--------|
104
+ | 主张 | 该页行动标题(结论句) | 每页标题合起来能否复述核心主张? |
105
+ | 内容单元 | 该页并列的信息块(卡片/指标/图表/表)| 数量决定密度档(content-rules.md §四-d) |
106
+ | **信息密度** | 该页目标密度(低/中/高)+ 依据 | 与前后页形成节奏(见 §一-续) |
107
+ | **组件清单** | 主图与侧栏比例、表格/注释/图例/微图表数量、关键证据 ID、so-what | 不得在生成时降级成稀疏大字报 |
108
+ | 密度档 | L 轻 / M 中 / H 重 | 与前后页形成节奏(连续两页 H 档 → 插 L 档) |
109
+ | 版式 | `components.md` §46 按内容形态选 + `components.md` §46b 按密度定;复杂信息图见 `infographics.md` | 禁止临场发明表外结构 |
110
+ | 图表/表格 | 类型 + data-chart 标记 + 数据来源 + `chart.dataTable` 策略 | 数据可获取、口径可写清、非原生图表至少 `notes` |
111
+ | 细节处理 | 该页涉及的细节/数据如何保全(见第二节) | 无细节丢失(每条细节有去处) |
112
+
113
+ **全篇回查三问**:
114
+
115
+ 1. 每一页删掉,报告结论是否受损?(不受损的页是凑数页 → 删)
116
+ 2. 逐页主张连读,是否等于一条完整论证链?(断裂处补过渡页/调整章节顺序)
117
+ 3. 是否有连续 3 页同版式?(模板感 → 换版式或插休止页)
118
+
119
+ ### ⑦ 用户确认(按需触发 · 一次 · 不反复)
120
+
121
+ **必确认**(满足任一):
122
+
123
+ - 研究报告 ≥ 20 页 或 演示 ≥ 12 页(返工成本高)
124
+ - 内容含未敲定的关键判断(竞争策略/预算分配/风险定性)
125
+ - 用户提供的材料量大且杂(需确认取舍口径)
126
+ - 用户明确说"先给我看大纲/框架"
127
+
128
+ **可跳过**:短报告(演示 ≤ 8 页 / 架构图)、用户给了完整成文材料只是转格式、用户说"直接生成"。
129
+
130
+ **确认载体**(宿主支持结构化选项卡时优先用卡):
131
+
132
+ ```markdown
133
+ ## 内容架构确认(确认后即生成,改哪里只改哪里)
134
+
135
+ **SCR**:情境 <一句话> → 冲突 <一句话> → 主张 <核心主张一句话>
136
+
137
+ **故事线取舍**:采用 <线A>;不采用 <线B/C> 的原因:<证据缺口/风险>
138
+
139
+ **大纲**(每章 = 一个分论点,标题即结论):
140
+ 1. <章标题(结论式)> —— 关键证据:<图表/数据>
141
+
142
+ **逐页规划摘要**:
143
+ | 页 | 主张 | 版式 | 密度 | 承载 |
144
+ |---|------|------|------|------|
145
+ | 3 | … | R2 Exhibit | 中 | 柱状图[1] |
146
+ | 4 | … | R3 密表 | 高 | 对标表 12 行 |
147
+
148
+ **取舍说明**:<材料里被剪掉的弱枝与原因、待确认的 xx 占位、证据冲突项>
149
+ □ 按此生成 □ 需调整(说哪改哪)
150
+ ```
151
+
152
+ 用户回复"调整"时**只改指定处**(对应主张树节点),不推倒重来;用户未选择默认按此生成。确认完成后不再有内容层面的反复确认。
153
+
154
+ ---
155
+
156
+ ## 一-续、跨页叙事节奏(单页合格 ≠ 全篇好看)
157
+
158
+ > 逐页规划卡保证**单页**合格;本节保证**全篇**读起来有起伏。规划完成后按下表回查一遍。
159
+
160
+ ### 1. 密度交替(呼吸节奏)
161
+
162
+ - **禁止连续 3 页同密度档**:H–H–H 会让人疲劳,L–L–L 会显得空洞。
163
+ - 推荐节奏:`M → H → L → M → H → L`(L 档用金句页/大数指标页/休止页承担)。
164
+ - 演示模式(A)天然低密度,节奏靠**版式变化**(要点页 → 大数页 → 图表页 → 金句页)。
165
+ - 研究模式(B)高密度为主,节奏靠**每 3–4 页插一张低密度页**(大引言页 / 关键结论页)。
166
+
167
+ ### 2. 章节色彩递进
168
+
169
+ - 章节头(eyebrow + 主标题)承担"章节感",**不靠换强调色**(单一强调色铁律)。
170
+ - 递进手段:章节编号递增 + 章节头留白宽度微调 + 该章主图形态变化(图 → 表 → 图)。
171
+ - 架构模式(C)用**分层带/泳道颜色深浅**表达层级递进,仍限强调色族。
172
+
173
+ ### 3. 首尾呼应
174
+
175
+ - **封面标题 ↔ 收尾页主张**:收尾页的"下一步"三点必须能回应封面提出的问题(读一遍是否闭环)。
176
+ - 封面副标题给出的"范围/口径",收尾页的 flagbar 要收口(待核实项列明)。
177
+ - 禁用 `band--deep` 作末页(浅色主题下会渲染成深色页,铁律 3);收尾用 `.band--accent`。
178
+
179
+ ### 4. 渐进揭示(阅读路径)
180
+
181
+ - 每页**左上到右下**的阅读顺序必须与论证顺序一致:先结论(行动标题)→ 再证据(图/表)→ 最后含义(so-what)。
182
+ - 同一页内**不要出现两个并列的视觉重心**(两个大图 / 大图 + 巨号数字);要并列就分页。
183
+ - Agenda 跳转锚点必须与章标题一一对应(校验器查锚点闭环)。
184
+
185
+ ### 5. 节奏回查清单(生成后自检)
186
+
187
+ - [ ] 有没有连续 3 页同密度档或同版式?
188
+ - [ ] 每章第一页是否都是同一形态(全是密表/全是图)?→ 换一页的形态
189
+ - [ ] 收尾页能否回应封面提出的问题?
190
+ - [ ] 有没有一页出现两个视觉重心?
191
+ - [ ] 从 Agenda 跳到的每一章,标题与 Agenda 条目是否一致?
192
+
193
+ ---
194
+
195
+ ## 二、细节保全策略(数据/细节密集时的承载设计)
196
+
197
+ > **原则:细节不能丢,但也不能全堆在正文里**。每一条细节必须有明确去处:主页面(决策必需)/ 图表内(数据本体)/ 图注与来源行(口径)/ 附录(备查全量)。
198
+ > 判断标准:这条细节影响读者做判断吗?影响 → 进主页面;不影响但需要可查 → 沉淀层;都不影响 → 删。
199
+
200
+ ### 2.1 承载工具选型矩阵(细节形态 → 工具)
201
+
202
+ | 细节形态 | 承载工具 | 组件/页型 | 细节去哪 |
203
+ |---------|---------|-----------|---------|
204
+ | 多维数值对比(≥3 对象 × ≥4 维) | 密表 | R3 / `table` | 表内全量数值;结论列收口 |
205
+ | 时间趋势 + 阶段节点 | 折线/面积 + 里程碑标注 | `line` / E 时间线 | 数据点标在图上;口径沉来源行 |
206
+ | 构成占比(≤5 段) | 环形 + 图例数值 | `donut` | 图例带数值;中心放合计 |
207
+ | 排名 / 大小对比 | 横向条形(数值外标) | `hbar` | 数值直接标条末 |
208
+ | 双维定位 / 优先级 | 矩阵 / 散点 | R8 / `scatter` | 象限标注含义;明细沉密表 |
209
+ | 流程 / 职责 / 数据流 | 泳道(步骤内短标签) | A2 / `lane` | 步骤 ≤8 字;补充说明沉图注 |
210
+ | 系统分层结构 | 分层带(节点卡) | A1 / `diagram` | 节点短标签;职责细节沉图注 |
211
+ | 大段参数/规格/清单 | 附录密表页 | R3 变体(refs 后) | 主文只留 Top N + 指向附录 |
212
+ | 因果链 / 闭环逻辑 | 流程图(SVG) | A3 / 版式 A | 环节即节点;条件分支沉图注 |
213
+ | 增减归因 | 瀑布图 | `waterfall` | 每段标变化量;合计收口 |
214
+ | 实施节奏 / 操作步骤(3–6 步) | 步骤条 | `steps`(components `components.md` §47) | 步骤标题 ≤8 字、说明 ≤30 字;补充说明沉备注 |
215
+ | 二维强度对标(行业 × 场景等) | 热力矩阵 | `heatmap`(`components.md` §48) | 单元格数值 + 强度词;口径沉 `.footnote`;>5×5 拆附录 |
216
+ | 目标达成度(实际 vs 目标) | 达成对比条 | `bullet`(`components.md` §49) | 目标线标在条上;未达标行转中性色;明细沉备注 |
217
+ | 两期升降 / 前后对比 | 斜率图 / 哑铃图 | `slope` / `dumbbell`(`charts.md` §57/§58) | 两端都标数值;差距最大项用强调色 |
218
+ | 多对多流向 / 归因路径 | 桑基图 | `sankey`(`infographics.md` `components.md` §1) | 节点短标签;流量标在带上;明细沉数据表 |
219
+ | 份额悬殊的构成(头部集中) | 矩形树图 | `treemap`(`infographics.md` `components.md` §2) | 面积 ∝ 数值;<5% 合并为"其他";块太小只标占比 |
220
+ | 分组分布(中位/四分位/极值) | 箱线图 | `boxplot`(`infographics.md` `components.md` §3) | 中位数值标在箱上;极值只在需读数页标 |
221
+ | 节点-边拓扑关系 | 关系网络 | `network`(`infographics.md` `components.md` §4) | 节点短标签;连接度用节点大小表达 |
222
+ | 双重编码(总量 × 构成) | 马赛克图 | `marimekko`(`infographics.md` `components.md` §5) | 列宽 = 总量、列高 = 占比;段值标在段内 |
223
+ | 构成随时间演变 | 流带图 | `streamgraph`(`infographics.md` `components.md` §6) | 系列名标在带内或图例;不标数值 |
224
+ | 层级递进 / 价值阶梯 | 金字塔 | `pyramid`(`components.md` §50) | 层标题 ≤6 字、说明 ≤24 字;≤5 层 |
225
+ | 素材图片(实拍/截图/示意图) | 图片页 / 图文页 | `image` / `.media`(`components.md` §11c) | 图注写口径与版权;数据图不用截图 |
226
+ | 讲稿口径 / 数据口径 / 来源细节 | **演讲者备注** | PPTX notesSlide(自动) | lead/soWhat/note/footnote/图表口径/数据表自动写入备注区——HTML 报告保留正文呈现,PPTX 中沉到备注 |
227
+
228
+ ### 2.2 待核实内容的处理
229
+
230
+ > 细节保全的反面是**不可靠细节**:查不到出处、口径未定、需业务确认的数字与判断。
231
+
232
+ - **不进主张树**:外部数据先定来源;没有来源的数字不进主张树(见 §一)。
233
+ - **必须落地但不能裸奔**:确实要用(因为决策需要),就用**强调色标注**——`.tbd` 内联标色 + `.tbd-legend`/`.flagbar` 说明(见 `content-rules.md` 五-b)。
234
+ - **交付时明确列出**:收尾页或数据页用 `.flagbar` 逐条列明"待核实项",并在交付说明里点出——**不要把不确定性藏进正文**。
235
+ - **口径与图片**:`.footnote`/`.fig__cap` 写清统计口径;图片必须带图注与来源。
236
+
237
+ ### 2.3 超限拆分(细节超出单页承载时,按序处理)
238
+
239
+ 1. **换更高密度的承载**:文字列举 → 表;表 → 图(对比矩阵→散点;参数清单→密表)。承载形态升级优先于拆页。
240
+ 2. **主表 + 附录**:表格 > 16 行 → 主页面放 Top N + 「其余 N 项合并」行,**全量表放文末附录页**(「参考资料」之后,标题注明"附录:全量数据");两处数据口径一致。
241
+ 3. **指标墙 + 明细**:指标 > 6 个 → F 指标墙页(6±2 个核心)+ 附录明细表;辅助指标合并为复合指标。
242
+ 4. **图注沉淀**:图中放不下的条件/例外/口径,一律沉到 `.fig__cap` / `.exhibit__src` / `.footnote`(≤1 行/处),不在图周围加大段文字。
243
+ 5. **仍放不下 → 拆页**:01a/01b 两页,下一页重复 eyebrow 标注(续)。
244
+
245
+ ### 2.4 信息图三原则(细节进图时的底线)
246
+
247
+ 1. **一图一主张**:图标题写结论("试点率 61%,规模化不足两成"),不写中性描述("企业试点情况")。
248
+ 2. **数据直接标在图上**:关键数值标在数据本体旁(条末/点侧/环内),不强迫读者查图例换算;坐标轴只做尺度参考。
249
+ 3. **口径可见**:单位、统计口径、时间窗放来源行(`.exhibit__src`);外部数据带 `[n]` 与文末参考资料双向对齐。
250
+
251
+ ### 2.5 反模式(自查)
252
+
253
+ - ✗ 把 20 行数据表转成 20 个卡片/要点塞满一页(信息密度爆炸且不可比)→ 该用表就用表。
254
+ - ✗ 表格旁边再写一遍表里的数字(重复承载)→ 文字只写表不能表达的:趋势、对比、含义。
255
+ - ✗ 图表做小、细节全在下方长文里(图成为装饰)→ 图是主角,文字是解读。
256
+ - ✗ 删数据保版式("表格太长就砍列")→ 砍列前先走 2.3 拆分流程;口径列/时间列不许砍。
257
+ - ✗ 附录表与主表数字不一致 → 附录是全量、主表是截取,同源同口径(校验器查 Exhibit 连续性;人工核对数字一致性)。
258
+ - ✗ 复杂信息图硬塞进普通图表页(桑基塞进柱状图)→ 用 `infographics.md` 的专属页型。
259
+ - ✗ 只写结论不给证据、或只堆证据不给含义 → 每章必须"发现 → 证据 → 含义"闭环。
260
+
261
+ ---
262
+
263
+ ## 三、与既有规范的关系
264
+
265
+ | 规范 | 分工 |
266
+ |------|------|
267
+ | `SKILL.md` 六项问询 | 形式参数(模式/篇幅/风格/主题/交付格式/参考图) |
268
+ | **本文件** | 内容架构:证据表 → 故事线脑暴 → SCR/主张树 → 大纲 → 逐页规划 → 确认;跨页叙事节奏;细节保全 |
269
+ | `modes.md` | 三模式密度契约与锁定版式(逐页规划的"版式"项从这里选) |
270
+ | `content-rules.md` | 页内写作规则(字数/列表化/去AI味/密度三档/表格语义字号/容器内边距/连续文本流) |
271
+ | `components.md` | 结构组件 + 锁定版式代码(`components.md` §46 内容形态选型 + `components.md` §46b 密度适配) |
272
+ | `charts.md` | 图表代码(`charts.md` §16–§31、§35、§52–§70) |
273
+ | `infographics.md` | 复杂/高密度信息图页型族:规范(几何上限、采样规则、数据表策略)+ HTML 写法(`infographics.md` §71–§77) |
274
+
275
+ **工作流位置**:六项问询(形式)→ **本文件七步法(内容)** → 生成(模板 + 逐页规划卡 → REPORT_MODEL)→ 校验闭环。
@@ -0,0 +1,266 @@
1
+ # 作战手册 · Playbook(唯一常读入口 · L1)
2
+
3
+ > **每次生成都读这一份,通常就够了。**
4
+ > 本文件是**决策层**:定模式、选页型、选版式组合、选图表、定配色、跑校验。
5
+ > **代码、几何、穷举表不在本文件**——需要时按 `SKILL.md` 的 L2 路由读深度文件,**读完即停,不预读**。
6
+
7
+ ---
8
+
9
+ ## 〇、排版总序(先骨架后内容 · 整齐优雅)
10
+
11
+ ```
12
+ 角色 → 预设骨架 P1–P12(layout-grammar.md)→ 元素落位 → 间距 token → 对齐/填充率 → LAYOUT_* 门禁
13
+ ```
14
+
15
+ **禁止**临场发明栅格、写死间距、同页两个视觉重心。详规 `references/layout-grammar.md`。
16
+
17
+ ---
18
+
19
+ ## 一、三模式契约(生成时锁定,页面无切换)
20
+
21
+ | | A 演示汇报 | B 研究报告 | C 信息架构图 |
22
+ |--|--|--|--|
23
+ | `data-mode` | `presentation` | `research` | `architecture` |
24
+ | 阅读契约 | 3 秒一屏,听讲 | 30 秒一页,深读 | 一眼看全结构 |
25
+ | 版心 / 正文 | 1400px / 17–18px | 1240px / 14–15px | 1600px / 图注级 |
26
+ | 单页文字 | ≤1500 | ≤3200 | ≤600 |
27
+ | 并列单元 | ≤8 | ≤12 | 节点 ≤24 |
28
+ | 表格行 | ≤8 | ≤16 | 表转图 |
29
+ | 每页图表 | **按复杂度定面积**(V1–V4;简单图禁全幅) | 1–2 个(取尺寸下限) | 1 张全幅(宽 ≥85% 版心) |
30
+ | 论证结构 | 主张 → 证据 → 休止 | 发现 → 证据 → 含义 + so-what | 标题 → 图 → 图注 |
31
+ | Exhibit 编号 | 不用 | **全篇连续 + 来源行** | 不用 |
32
+ | 篇幅 | 8–15 页 | 12–25 页 | 1–3 张图(6–8 页) |
33
+ | PPTX 正文 | 13pt | 10.5pt | 13pt |
34
+
35
+ **密度选错的症状**:A 出现双栏小字(投影看不清)→ 拆页;B 出现大面积留白(坐读信息量不足)→ 合页或补证据;C 出现成段正文 → 转图注。
36
+ **节奏**:禁止连续 3 页同密度档;同一版式不连用超过 2 页;research 每 3–4 页插一个低密度页(指标带/金句/大数)。
37
+
38
+ ---
39
+
40
+ ## 二、两条生成路径(先判定,再动手)
41
+
42
+ **轻量路径**(默认)——同时满足:≤12 页 · 材料单一完整 · 无未敲定关键判断 · 用户没要求看框架。
43
+ ```
44
+ Gate 0 参考图 → 六项问询(1 轮)→ 1 张规划卡 → scaffold_report.py → 填内容+模型 → 校验 → 交付
45
+ ```
46
+
47
+ **完整路径**(任一命中)——研究 ≥20 页 / 演示 ≥12 页 / 材料量大且杂 / 含未敲定关键判断 / 用户要看框架。
48
+ ```
49
+ Gate 0 参考图 → 六项问询(1 轮)→ 证据表 → 故事线脑暴 → SCR+主张树 → 逐页规划卡 → 大纲确认(1 轮)→ 生成 → 校验 → 交付
50
+ ```
51
+
52
+ **预算(硬)**:交互轮次 ≤3;必读文件 = `SKILL.md` + 本文件(≤2 份);L2 深度文件按需且单份读完即停。
53
+
54
+ ---
55
+
56
+ ## 三、页型选型(意图 → 页型 → 关键约束)
57
+
58
+ > 穷举表(内容形态 → 版式 → PPTX 页型)见 `components.md` §46;密度档适配见 `components.md` §46b;组合见下节 §四。
59
+
60
+ | 我要表达 | 首选页型 | 次选 | 关键约束 |
61
+ |---------|---------|------|---------|
62
+ | 要点式并列主张(默认页) | `points` | `cards` | 每卡 ≤4 条(research ≤5) |
63
+ | 现状基线 / 指标快照 | `metrics` | `kpi` | 4–6 个;单数压场用 `kpi` |
64
+ | 单个核心数字压场 | `kpi` | `metrics` | hero 一数一结论 |
65
+ | 多维对标清单 | `table` | `halftable` | ≤8 行(research ≤16) |
66
+ | 时间趋势 / 爬坡 | `bar`(chart.type=line/area/dualline) | `exhibit` | 时间点 >8 改折线 |
67
+ | 构成占比 | `donut`(pie/multidonut/waffle) | `halftable` / **V3 KPI** | 扇区 ≤5,最小扇区 ≥8%;**极偏(min&lt;5% 或 max/min&gt;20)禁 donut→V3** |
68
+ | 排名 / 大小对比 | `bar`(chart.type=hbar/lollipop/pareto) | `table` | 类别 >8 取 Top 7 + 附录 |
69
+ | 现状 vs 目标 | `bullet` / `comparison` | `bar`(vsbar/bulletchart) | 目标线与实际条同量纲 |
70
+ | 两期升降(谁升谁降) | `bar`(slope/dumbbell) | `table` | 两端都要标数值 |
71
+ | 双维分布 / 优先级 | `bar`(scatter/bubble) | `matrix` | 气泡半径 ∝ √值 |
72
+ | 分布 / 离散度 | `boxplot` | `bar`(dotplot) | 组数 ≤8;箱线四件齐备 |
73
+ | 增减归因(A→B) | `bar`(waterfall) | `table` | 每段标变化量 + 合计收口 |
74
+ | 转化 / 筛选漏斗 | `bar`(funnel) | `sankey` | 层数 ≤5 |
75
+ | 计划排期(并行) | `bar`(gantt) | `timeline` | 里程碑叙事用 `timeline`,勿混 |
76
+ | 里程碑 / 路线叙事 | `timeline` | `steps` | 3–5 个,每个 ≤2 行 |
77
+ | 步骤 / 实施节奏 | `steps` | `timeline` | 3–6 步;高亮步 ≤2 处 |
78
+ | 二维强度对标 | `heatmap` | `matrix` | 行列 ≤5×5;只用强调色明度阶梯 |
79
+ | 定位 / 优先级 / 象限 | `matrix` | `bar`(scatter) | ≤3×3 |
80
+ | 层级递进 / 价值阶梯 | `pyramid` | `diagram` | 3–5 层;强调层 ≤1 |
81
+ | 关键判断 / 金句休止 | `quote` | `points` | 全文 1–2 处,多了廉价 |
82
+ | 完整论述(发现→证据→含义) | `twocol`(research R1) | `threecol` | 段 ≤200 字;标题必须结论句 |
83
+ | 数据证据页(主力) | `exhibit`(R2) | `split` | 全篇 Exhibit 连续编号 |
84
+ | 三栏并列论点 | `threecol`(R6) | `cards` | 每栏 ≤150 字 |
85
+ | 系统分层架构 | `diagram` | `bar`(chart.type=network) | 节点 ≤24;层 ≤4 |
86
+ | 流程 / 职责协作 | `lane` | `diagram` | 每行 ≤6 步;正交折线优先 |
87
+ | 素材图片(实拍/截图) | `image` | `split` | 六版式;无图用 `image.placeholder` |
88
+ | 待核实项收口 | `flags` 字段 | `table` | 标色必须配说明 |
89
+
90
+ ---
91
+
92
+ ## 三-b、图文演讲版式 V1–V4(演示材料默认构图)
93
+
94
+ > **何时用**:A presentation 默认;任何「要上台讲」的图文页。目标:**3 秒看清主张,30 秒讲完证据**。
95
+ > 简单数据禁止全幅大图;极偏占比禁 donut/pie。
96
+
97
+ | 版式 | 结构 | 适用 | 视觉:注解 |
98
+ |------|------|------|-----------|
99
+ | **V1 主视觉+右注解** | 图/照片 55–60% + 3–4 条要点 + so-what | 场景、产品、对比 | 6:4 |
100
+ | **V2 上图下带** | 通栏图 50–55% + 指标带/三卡 | 总览→分解 | 55:45 |
101
+ | **V3 大数+佐证** | KPI 40% + 小图/迷你表 + 口径 | 极偏占比、单点结论 | 不用 donut |
102
+ | **V4 双图对照** | A/B 各 40% + 中缝结论条 | 前后、方案、竞品 | 8:2 |
103
+
104
+ **硬规则**:
105
+ 1. ≤2 类占比或 max/min ≥20 或最小扇区 <5% → **V3(KPI/进度/对比条)**,禁 donut/pie。
106
+ 2. 图旁必须有口头注解 3–4 条(每条 ≤2 行);禁止「一张图+标题」独页(金句/章节幕除外)。
107
+ 3. 环图/饼图数值放**图例行**,禁止叠在弧上(治标签叠字)。
108
+ 4. 全幅图仅限:架构总览 / ≥8 节点结构 / ≥8 系列趋势 / 用户素材大图。
109
+ 5. 简单图表永不截图;照片只承担情绪/场景。
110
+ 6. 每 4–6 页插 V3/金句/指标带作节奏休止。
111
+
112
+ > 废除旧契约「presentation 每页 1 张大图」。图表面积随信息复杂度走(`layout-constants.json` `charts.sizeByComplexity`)。
113
+
114
+ ---
115
+
116
+ ## 四、组合版式矩阵("内容丰富"的落地方式)
117
+
118
+ > **先选骨架**:P1–P12(`layout-grammar.md`);下表是「主件+从件+注释」内容组合,必须落在某 P__ 上。
119
+
120
+ > **默认一页 = 主件 + 从件 + 注释层**。单件页(只有一张图/一张表)是**例外**(金句/大数/章节幕),不是默认。
121
+ > **复杂内容页可扩展组合**:主件 + 双从件、或 `split`/`halftable` 双区并置、或信息图 + 指标带 + so-what + flags——不必强行「一主一从」。先定主件(视觉重心),再从本表挑从件与注释层;表外自由组合须落在已登记页型字段上(否则 PPTX 无法交付)。
122
+
123
+ | 主件(视觉重心) | 从件(辅助承载) | 注释层 | 页型 | 适用 |
124
+ |-----------------|----------------|--------|------|------|
125
+ | 图表 | 要点 3–4 条 | so-what / 来源行 | `exhibit` | 证据页主力 |
126
+ | 图表 | 要点(左文右图) | so-what | `split` | 结论先行 |
127
+ | 图表 | 表格(互证) | 口径行 | `halftable` | 表图对照 |
128
+ | 表格(密表) | 图表 | so-what | `halftable` / `split` | 多维对标 |
129
+ | 指标带 4–6 个 | 图表 / 小表 | 口径行 | `metrics` | 现状基线 |
130
+ | 要点列表 | 指标带 | — | `points`(`metrics` 字段) | 主张 + 基线 |
131
+ | 分层架构图 | 图例 chips | 图注 1–2 行 | `diagram`(`legend`) | 架构页 |
132
+ | 图片 | 要点 3–4 条 | 图注 + 来源 | `image`(layout=half) | 图文互证 |
133
+ | 卡片网格 | 结论条 | — | `cards` / `points` | 并列观察 |
134
+ | 双区自由组合 | 左/右各可为 图表·表格·图片·要点·指标 | so-what / flags | `split`(双区升级版) | **组合页通用解** |
135
+ | 信息图(桑基/树图/流带…) | 小指标 2–3 / 要点 | 数据表 notes + so-what | 同名信息图页型 | 复杂结构页 |
136
+ | 密表 + 图表互证 | 要点摘要 + 指标 | flags | `halftable` + 通用可选件 | 复杂对标页 |
137
+
138
+ **组合纪律**:
139
+ 1. **一屏一个视觉重心**——主件明显大于从件;两个并列大件走 `split` 明确左右分工,或拆页。
140
+ 2. **从件不是装饰**:从件必须承载主件表达不了的信息(趋势、对比、含义),不得复述主件数字。
141
+ 3. **注释层必写口径**:so-what ≤60 字、来源行写清期间与口径、待核实项走 `flags`。
142
+ 4. **复杂页允许三承载及以上**:信息图 + 指标 + 要点 + so-what 是合法组合;校验器的「组合版式」按「内容页含 ≥2 种承载」计。
143
+ 5. 放不下时的顺序是 **优化内容形态 → 升级承载 → 换/扩组合 → 分区 → 拆页 → 有限缩字号**(见 §六与 `containers.fontShrink`)。
144
+
145
+ ---
146
+
147
+ ## 五、图表选型决策树(先问"要回答什么",再选图)
148
+
149
+ > 穷举代码见 `charts.md` §16–§31、§35、§52–§70;误用反例与多样性纪律见 `charts.md` §66。
150
+ > **默认生成面(P1 收敛)**:优先 `bar / hbar / line / donut / progress / area / stack / dualline`。
151
+ > **高级图型**(waterfall/gantt/funnel/slope/… 与 6 类信息图)按需选用,不进默认轮换。
152
+ > **纪律**:全篇不同 `data-chart` 类型 ≥ `min(模式上限, ⌈图表页数 × 0.6⌉)`(上限:research 6 / presentation 4 / architecture 3);**相邻图表页不得同型**。
153
+
154
+ | 分析意图(读者要得出的结论) | 首选 | 次选 | 禁用 / 改判条件 |
155
+ |---------------------------|------|------|----------------|
156
+ | 谁大谁小 | `hbar` | `lollipop` / `bar` | 类别 >8 → Top7 + 附录 |
157
+ | 随时间怎么变 | `line` | `area` / `dualline` | 时间点 >8 不标点值 |
158
+ | 占比是多少 | `donut` | `pie` / `multidonut` | 扇区 >5 → 合并"其他"或 `treemap` |
159
+ | 每 1% 的直觉 | `waffle` | `donut` | 类别 >3 改 `marimekko` |
160
+ | 结构在变形 | `streamgraph` | `stackline` | 系列 >6 合并 |
161
+ | 总量 × 构成双编码 | `marimekko` | `treemap` | 列 >6 / 段 >4 → 拆 |
162
+ | 份额悬殊(头部集中) | `treemap` | `donut` | 叶 >16 → 合并小项 |
163
+ | 从 A 到 B 是谁贡献的 | `waterfall` | `pareto` | 段 >6 → 合并 |
164
+ | 主要矛盾是哪几个 | `pareto` | `waterfall` | 类别 >7 → 合并 |
165
+ | 转化/流失在哪一环 | `funnel` | `sankey` | 层 >5 → 改 `hbar` |
166
+ | 多对多的流向 | `sankey` | `network` | 节点 >12 / 流带 >24 → 拆页 |
167
+ | 谁和谁相连 | `network` | `diagram` | 节点 >18 / 边 >30 → 拆页 |
168
+ | 两期谁升谁降 | `slope` | `dumbbell` | 系列 >6 → 取 Top 6 |
169
+ | 单指标前后对比(多对象) | `dumbbell` | `vsbar` | 行 >6 → 拆页 |
170
+ | 实际 vs 目标(含区间) | `bulletchart` | `bullet` | 行 >6 → 拆页 |
171
+ | 达成率(多指标同心) | `radialbar` | `gauge` | 环 >5 → 改 `bullet` |
172
+ | 一个值够不够 | `gauge` | `radialbar` | 单值叙事,勿与图并存 |
173
+ | 分布不是均值 | `boxplot` | `dotplot` | 组 >8 → 拆页 |
174
+ | 双维定位 + 第三维权重 | `bubble` | `scatter` | 气泡 >8 → 标注关键项 |
175
+ | 六维能力画像 | `radar` | `rose` | 维度 >6 → 拆两组 |
176
+ | 区间波动(开高低收) | `candlestick` | `line` | 蜡烛 >12 → 聚合 |
177
+ | 多项目完成度 | `progress` | `bullet` | 行 >6 → 拆页 |
178
+ | 迷你趋势(卡内) | `sparkline` | — | 只用于指标卡,不与大图并存 |
179
+
180
+ **七种最常见的误用(出现即改判)**:
181
+ 1. 用 `bar` 表达占比 → 改 `donut`/`stackline`/`waffle`。
182
+ 2. 用 `donut` 表达 8 个类别 → 合并或改 `treemap`。
183
+ 3. 用 `line` 表达类别对比(无时间轴)→ 改 `hbar`。
184
+ 4. 用 `table` 表达趋势 → 改 `line`/`area`。
185
+ 5. 用均值型图表表达分布 → 改 `boxplot`/`dotplot`。
186
+ 6. 同一页放两张同型图 → 改 `split`/`halftable` 并让两图**编码不同维度**。
187
+ 7. 多系列图用单色明度阶梯(分不清) → 用 `f-c1~c5` 编码色板(见 §八)。
188
+
189
+ ---
190
+
191
+ ## 六、内容规则(先保全,后呈现 · 细则在 content-rules.md)
192
+
193
+ **核心判据**:先问 **"这条信息是决策必需的吗?"** —— 是 → **必须进主页面**,再想用什么形态承载;不是但需可查 → 沉图注/来源行/附录;都不是 → 才允许删。**禁止**为排版方便砍口径列/时间列。
194
+
195
+ **减量顺序(唯一)**:优化内容形态(列表化/精炼)→ 升级承载(文字→表→图)→ 换/扩组合 → 分区 → 拆页 → **最后才**有限缩字号(`containers.fontShrink`)。拆页必须保持信息完整。
196
+
197
+ **生成时必守五条**:① research 标题即结论(≥12 字,含数字/判断)② 表格正文用 `body` 字号,禁无限缩字号装下 ③ 容器级溢出即失败 ④ 连续语义句不得拆多文本框 ⑤ `.tbd` 必须配图例/flagbar。
198
+
199
+ > 字数上限、段落→列表转换、表格语义字号、密度三档、去 AI 味写法 → **只读** `content-rules.md`(本节不展开)。
200
+
201
+ ---
202
+
203
+ ## 七、信息图页型族(一张图说清"一整套结构")
204
+
205
+ **判据**:普通图表回答"一个数是多少";信息图页型回答"一整套结构长什么样"。边界表与通用铁律见 `infographics.md`。
206
+
207
+ | 族 | 页型 | 代码/规格 |
208
+ |----|------|----------|
209
+ | 统计图形 | `sankey` `treemap` `boxplot` `network` `marimekko` `streamgraph` | `infographics-stats.md` |
210
+ | 结构图形 | `flow` `tree` `sequence` `loop`(HTML 主图 SVG);PPTX 映射 `diagram`/`steps` | `infographics-structure.md` |
211
+ | 架构主图 | `diagram`(层≤4/节点≤24)`lane`(每行≤6步) | `layouts-architecture.md` |
212
+
213
+ **共用纪律(摘要)**:一页一图;采样 ≥16(流带 ≥24)且双边界;禁预设形状;`dataTable` 至少 `notes`;超上限**拆页**。完整上限与写法用 `extract_snippet --chart <类型>` 或上表物理文件。
214
+
215
+ ---
216
+
217
+ ## 八、配色与主题
218
+
219
+ - **9 套风格**(`styles.md`):覆盖 8 个色族(蓝 / 藏青 / 蓝青深色 / 黑白 / 红 / 金棕 / 墨绿 / 紫)+ 1 个彩色数据板;`data-style` 即换皮肤,header 可实时切换(交付前切回选定值)。**刻意不再扩张**——新增门槛见 `styles.md` §10。
220
+ - **两套颜色职能,纪律不同**:
221
+ - **结构色**(标题/正文/边框/按钮/大面积底色)= **永远中性 + 单一强调色**;层次靠表面明度差 + 1px 边框。禁止渐变、彩色阴影、用红/绿/紫区分模块。
222
+ - **编码色**(图表数据系列 / 图例色点 / 小段标签)= 用 `f-c1~c5` / `s-c1~c5` 语义类,**9 套风格各自有可区分的 `c1..c5`**(不写死 hex,随主题切换);同屏彩色系列 ≤5。
223
+ - **亮暗双主题**:`data-theme="light|dark"`,与 `REPORT_MODEL.theme` 一致;石墨深灰为深色优先(架构模板出厂 dark);HTML 与 PPTX 同主题导出。
224
+ - **强调带**:收尾/CTA 用 `band--accent`(accent-soft);金句可 `band--accent--solid`;**禁止**用 `band--deep` 作末页(浅色主题下会变深色页)。
225
+
226
+ ---
227
+
228
+ ## 九、校验与交付(命令)
229
+
230
+ ```bash
231
+ python scripts/scaffold_report.py --mode research --style mckinsey --theme light \
232
+ --title "报告标题" --sections 8 --out 2026-09-15-主题.html # 起点(不要手抄模板)
233
+ # 或用黄金节奏包:--preset consulting|diagnostic|pitch|ops-review|layered-arch|flow-arch
234
+ python scripts/validate_report.py 2026-09-15-主题.html --strict # HTML 硬门禁(0 FAIL / 0 WARN)
235
+ python scripts/extract_model.py 2026-09-15-主题.html # → .model.json
236
+ node scripts/build_pptx.js 2026-09-15-主题.pptx --model=….model.json
237
+ python scripts/validate_pptx.py 2026-09-15-主题.pptx --strict --model=….model.json # 0/0
238
+ ```
239
+
240
+ **交付前必过**:`validate_report.py --strict` 0/0;含 PPTX 时 `validate_pptx.py --strict --model=` 0/0(`pictures` 数 = 声明数)。
241
+ **推荐一键门禁**:`python scripts/quality_gate.py 报告.html [--pptx x.pptx --model x.model.json]`(strict + evals + rubric 启发式五维;交付时加 `--deliver` 开关自动产出七要素说明,不要手拼)。
242
+ **失败自修复**:按输出逐条修 → 重跑,直到 0/0;修复顺序见 `failure-modes.md`。
243
+
244
+ ---
245
+
246
+ ## 十、L2 节级路由(按任务只读这些,读完即停)
247
+
248
+ > **不要整读** `components.md` / `charts.md` 背后的物理拆分大文件。需要代码时优先:
249
+ > `python scripts/extract_snippet.py --list` · `--task <名>` · `--chart <类型>` · `--page-type <页型>` · `--file components.md --section 46`(逻辑名自动路由)
250
+
251
+ | 任务 | 只读 |
252
+ |------|------|
253
+ | research 证据页 / Exhibit / 密表 | `components.md` §36d/§46/§46c · 本文件 §三/§四 · `extract_snippet.py --task research-evidence` |
254
+ | 演示组合版式 | `components.md` §39–§42/§46/§46b/§46c · `--task presentation-combo` |
255
+ | 架构 / 泳道 / 分层 | `components.md` §37–§38b · `infographics.md` §78–§80 · `--task architecture-diagram` |
256
+ | 选图 / 取图表代码 | 本文件 §五 · `--chart <类型>` · 误用见 `charts.md` §66 |
257
+ | 密度 / 字数 / 去 AI 味 | `content-rules.md` §一/§四 · 本文件 §六 · `--task content-rules` |
258
+ | 素材图片 / 占位 | `components.md` §11c · `--task image-layout` |
259
+ | PPTX 精导字段 | `pptx-export.md` · 本文件 §九 · `--task pptx-export` |
260
+ | 高保真 / 锚点 | `high-fidelity.md` · `--task high-fidelity` |
261
+ | 配色 / 风格 | `styles.md` · `design-system.md` §1a–§1b/§9 · `--task style-theme` |
262
+ | 图标 / 语义速查 | `icons.md` · `--task icons` |
263
+ | 起骨架用节奏包 | `scaffold_report.py --list-types` → `--preset consulting` 等 |
264
+
265
+ **纪律**:L0+L1 是默认全部所需;上表命中才开 L2;**读完即执行,不预读下一份**。页型语义槽位见 `scripts/layout_slots.json`(双通道同源 IR)。
266
+ **维护者**:改常量/schema/引擎后必跑 `sync_runtime.py` → `audit_styles.py` → `audit_docs.py` → `audit_skill.py` → `build_examples.py` → `regression.py`。