@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.
- package/CHANGELOG.md +26 -0
- package/LICENSE +21 -0
- package/README.md +102 -0
- package/bin/tms-skills.js +160 -0
- package/package.json +48 -0
- package/top-ppt-html/README.md +254 -0
- package/top-ppt-html/SKILL.md +111 -0
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.html +3926 -0
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.model.json +168 -0
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.html +3926 -0
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.model.json +168 -0
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.html +4325 -0
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.model.json +321 -0
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.html +4325 -0
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.model.json +321 -0
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.html +4325 -0
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.model.json +321 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.html +5527 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.model.json +914 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.html +5527 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.model.json +914 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.html +5527 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.model.json +914 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.html +5527 -0
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.model.json +914 -0
- package/top-ppt-html/assets/pptx-export.js +1944 -0
- package/top-ppt-html/assets/style-gallery.html +589 -0
- package/top-ppt-html/assets/templates/architecture.html +3728 -0
- package/top-ppt-html/assets/templates/engine.css +840 -0
- package/top-ppt-html/assets/templates/presentation.html +3738 -0
- package/top-ppt-html/assets/templates/research.html +4017 -0
- package/top-ppt-html/assets/templates/ui.js +520 -0
- package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
- package/top-ppt-html/assets/theme-overview-presentation.png +0 -0
- package/top-ppt-html/assets/theme-overview-research.png +0 -0
- package/top-ppt-html/assets/theme-overview.png +0 -0
- package/top-ppt-html/evals/prompts.csv +15 -0
- package/top-ppt-html/evals/rubric.schema.json +25 -0
- package/top-ppt-html/evals/run_evals.py +220 -0
- package/top-ppt-html/evals/trace.example.json +16 -0
- package/top-ppt-html/package.json +35 -0
- package/top-ppt-html/references/charts-basic.md +624 -0
- package/top-ppt-html/references/charts-discipline.md +108 -0
- package/top-ppt-html/references/charts-extended.md +482 -0
- package/top-ppt-html/references/charts.md +28 -0
- package/top-ppt-html/references/components-atoms.md +624 -0
- package/top-ppt-html/references/components.md +30 -0
- package/top-ppt-html/references/content-rules.md +490 -0
- package/top-ppt-html/references/design-system-engine.md +235 -0
- package/top-ppt-html/references/design-system.md +478 -0
- package/top-ppt-html/references/failure-modes.md +214 -0
- package/top-ppt-html/references/high-fidelity.md +127 -0
- package/top-ppt-html/references/icons.md +397 -0
- package/top-ppt-html/references/industry-benchmark.md +105 -0
- package/top-ppt-html/references/infographics-stats.md +308 -0
- package/top-ppt-html/references/infographics-structure.md +226 -0
- package/top-ppt-html/references/infographics.md +43 -0
- package/top-ppt-html/references/layout-grammar.md +315 -0
- package/top-ppt-html/references/layouts-architecture.md +108 -0
- package/top-ppt-html/references/layouts-combo.md +600 -0
- package/top-ppt-html/references/layouts-research.md +160 -0
- package/top-ppt-html/references/modes.md +254 -0
- package/top-ppt-html/references/outline-design.md +275 -0
- package/top-ppt-html/references/playbook.md +266 -0
- package/top-ppt-html/references/pptx-export.md +209 -0
- package/top-ppt-html/references/reform-plan.md +252 -0
- package/top-ppt-html/references/styles.md +370 -0
- package/top-ppt-html/references/tech-design.md +138 -0
- package/top-ppt-html/scripts/audit_css.py +109 -0
- package/top-ppt-html/scripts/audit_docs.py +176 -0
- package/top-ppt-html/scripts/audit_skill.py +220 -0
- package/top-ppt-html/scripts/audit_styles.py +351 -0
- package/top-ppt-html/scripts/build_examples.py +2276 -0
- package/top-ppt-html/scripts/build_pptx.js +2380 -0
- package/top-ppt-html/scripts/capture_theme_overview.js +78 -0
- package/top-ppt-html/scripts/checks_html.py +127 -0
- package/top-ppt-html/scripts/cross_verify.py +294 -0
- package/top-ppt-html/scripts/env_probe.py +158 -0
- package/top-ppt-html/scripts/extract_model.py +210 -0
- package/top-ppt-html/scripts/extract_snippet.py +374 -0
- package/top-ppt-html/scripts/gen_channel_a.js +214 -0
- package/top-ppt-html/scripts/layout-constants.json +3377 -0
- package/top-ppt-html/scripts/layout_slots.json +830 -0
- package/top-ppt-html/scripts/lib_layout_regions.js +412 -0
- package/top-ppt-html/scripts/measure_height.py +178 -0
- package/top-ppt-html/scripts/model-schema.json +547 -0
- package/top-ppt-html/scripts/negative_tests.py +307 -0
- package/top-ppt-html/scripts/package_skill.py +291 -0
- package/top-ppt-html/scripts/prepare_images.py +341 -0
- package/top-ppt-html/scripts/probe_image_export.py +188 -0
- package/top-ppt-html/scripts/quality_gate.py +301 -0
- package/top-ppt-html/scripts/regression.py +308 -0
- package/top-ppt-html/scripts/render_compare.py +275 -0
- package/top-ppt-html/scripts/render_from_model.py +698 -0
- package/top-ppt-html/scripts/scaffold_report.py +1054 -0
- package/top-ppt-html/scripts/section-file-map.json +105 -0
- package/top-ppt-html/scripts/sync_runtime.py +662 -0
- package/top-ppt-html/scripts/validate_pptx.py +1510 -0
- package/top-ppt-html/scripts/validate_report.py +1456 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
# 图标库(内联 SVG · currentColor · 随主题变色)
|
|
2
|
+
|
|
3
|
+
全部 24×24、描边风格(stroke 1.8,圆角线帽),用 `currentColor`,自动继承所在元素颜色。
|
|
4
|
+
|
|
5
|
+
> **PPTX 通道**:内联 SVG 图标不跨通道导出。PPTX 侧卡片头用 **accent 小方块路标**(与 HTML `.card__ico` 的 accent 底同语义);要点列表用 accent 实心方块标记(已有)。**不要在模型里期待图标 ID 进 PPT**——路标语义靠 accent 色块 + 标题对齐完成。若某页必须视觉区分类型,用标题前缀(如「数据 ·」「风险 ·」)而不是图标。
|
|
6
|
+
|
|
7
|
+
## 使用准则(克制而合理 · 先读再用)
|
|
8
|
+
|
|
9
|
+
**图标是信息的路标,不是装饰。** 该用的地方用好,不该用的地方一个都别放。
|
|
10
|
+
|
|
11
|
+
### 哪里用(四个正当位置)
|
|
12
|
+
|
|
13
|
+
| 位置 | 做法 | 效果 |
|
|
14
|
+
|------|------|------|
|
|
15
|
+
| **卡片头** `.card__ico` | 每张要点卡一个小图标 | 卡片类型一眼可辨,最推荐 |
|
|
16
|
+
| **关键列表** `.ul--ico` | 每行行首一个小图标(见 `components.md` 第 7 节) | 清单可扫读,适合 3–5 条的关键列表 |
|
|
17
|
+
| **指标卡** `.metric__ico` | 指标卡右上角小图标 | 指标类别区分(规模/效率/质量) |
|
|
18
|
+
| **提示条** `.note__ico` | 把 `i` 字母换成真图标 | 结论/警告/信息三类提示 |
|
|
19
|
+
|
|
20
|
+
### 哪里不用
|
|
21
|
+
|
|
22
|
+
- **Agenda 大纲**——大编号已是路标,再加图标是噪音
|
|
23
|
+
- **表格单元格**——表格靠文字对齐取胜,图标破坏栅格
|
|
24
|
+
- **图表内部**——数据系列用色不用图标
|
|
25
|
+
- **正文行内**——打断阅读流(引用标记除外)
|
|
26
|
+
|
|
27
|
+
### 密度与一致性
|
|
28
|
+
|
|
29
|
+
- **每屏 3–8 个图标**;一屏全是图标 = 新噪音;连续两三屏零图标 = 单调,给要点卡补一个。
|
|
30
|
+
- **克制 ≠ 不用**:全文零图标的报告会"没有路标",可扫读性差——长报告(≥6 页)至少要点卡(`.card__ico`)或关键列表(`.ul--ico`)有一处图标(校验器 WARN 提醒)。**目标:够用即止,不多不少。**
|
|
31
|
+
- **research 模式例外**:图标密度减半(每屏 2–4 个)——咨询版式以 Exhibit 图表与论证结构为视觉主角,图标更克制;`.exhibit` 图表框内不放图标。
|
|
32
|
+
- **architecture 模式例外**:主图内不放图标(节点短标签已足够);图标只允许出现在图例区旁(≤2 个)。
|
|
33
|
+
- **一套报告只用描边风**(本库全部是),stroke-width 统一 1.8,不混用填充风。
|
|
34
|
+
- **尺寸**:`.card__ico` 内 18px;`.ul--ico` 内 17px;`.metric__ico` 20px;行内特殊场景 `width:1em`。
|
|
35
|
+
- **对齐**:图标与标题垂直居中(组件类已处理);自定义时 `display:grid;place-items:center`。
|
|
36
|
+
|
|
37
|
+
### 颜色
|
|
38
|
+
|
|
39
|
+
- 不改 `stroke="currentColor"`——颜色由容器决定(`.card__ico` 自动是 accent 底 + accent 图标)。
|
|
40
|
+
- 深色收尾章里容器是半透明亮底,图标容器加 `color:var(--text-inv)`。
|
|
41
|
+
- spectrum 风格也不给图标单独上色——**彩色只属于数据系列**。
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 数据与图表
|
|
46
|
+
|
|
47
|
+
**数据库**
|
|
48
|
+
```html
|
|
49
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5"/><path d="M3 12c0 1.66 4.03 3 9 3s9-1.34 9-3"/></svg>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**柱状图**
|
|
53
|
+
```html
|
|
54
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><rect x="7" y="12" width="3" height="6" rx="1"/><rect x="12" y="8" width="3" height="10" rx="1"/><rect x="17" y="4" width="3" height="14" rx="1"/></svg>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**趋势/折线**
|
|
58
|
+
```html
|
|
59
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><path d="M7 14l4-4 3 3 5-6"/><path d="M15 7h4v4"/></svg>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**环形/占比**
|
|
63
|
+
```html
|
|
64
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21.2 15.9A10 10 0 1 1 8 2.8"/><path d="M22 12A10 10 0 0 0 12 2v10z"/></svg>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**表格/网格**
|
|
68
|
+
```html
|
|
69
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M3 15h18M9 3v18M15 3v18"/></svg>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**仪表盘/效率**
|
|
73
|
+
```html
|
|
74
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15l3.5-5.5"/><path d="M20.2 15a8.5 8.5 0 1 0-16.4 0"/></svg>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**漏斗/转化**
|
|
78
|
+
```html
|
|
79
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16l-6 8v6l-4 2v-8L4 4z"/></svg>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 增长与经营
|
|
85
|
+
|
|
86
|
+
**增长/上升**
|
|
87
|
+
```html
|
|
88
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M22 7l-8.5 8.5-5-5L2 17"/><path d="M16 7h6v6"/></svg>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**下降/回落**
|
|
92
|
+
```html
|
|
93
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M22 17l-8.5-8.5-5 5L2 7"/><path d="M16 17h6v-6"/></svg>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**成本/财务**
|
|
97
|
+
```html
|
|
98
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="8" r="6"/><path d="M18.09 10.37A6 6 0 1 1 10.34 18"/><path d="M7 6h1v4"/><path d="m16.71 13.88.7.71-2.82 2.82"/></svg>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**目标/靶心**
|
|
102
|
+
```html
|
|
103
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**奖章/成果**
|
|
107
|
+
```html
|
|
108
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"/><path d="M15.5 13 17 22l-5-3-5 3 1.5-9"/></svg>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**旗帜/里程碑**
|
|
112
|
+
```html
|
|
113
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/><path d="M4 22v-7"/></svg>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**火箭/启动**
|
|
117
|
+
```html
|
|
118
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></svg>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 治理与安全
|
|
124
|
+
|
|
125
|
+
**盾牌/安全**
|
|
126
|
+
```html
|
|
127
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><path d="M9 12l2 2 4-4"/></svg>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**锁/权限**
|
|
131
|
+
```html
|
|
132
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="10" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**钥匙/密钥**
|
|
136
|
+
```html
|
|
137
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="15.5" r="5.5"/><path d="m21 2-9.6 9.6"/><path d="m15.5 7.5 3 3L22 7l-3-3"/></svg>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**齿轮/引擎**
|
|
141
|
+
```html
|
|
142
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33h.01a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51h.01a1.65 1.65 0 0 0 1.82-.33l.06.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82v.01a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**天平/合规**
|
|
146
|
+
```html
|
|
147
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v18"/><path d="M5 21h14"/><path d="M7 7l-4 7a4.5 4.5 0 0 0 8 0L7 7z"/><path d="M17 7l-4 7a4.5 4.5 0 0 0 8 0l-4-7z"/><path d="M5 7h14"/></svg>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**链接/血缘**
|
|
151
|
+
```html
|
|
152
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**检查/对勾**
|
|
156
|
+
```html
|
|
157
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M8 12.5l2.5 2.5L16 9.5"/></svg>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**警告**
|
|
161
|
+
```html
|
|
162
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/><path d="M12 9v4M12 17h.01"/></svg>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**信息**
|
|
166
|
+
```html
|
|
167
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></svg>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**眼睛/可视**
|
|
171
|
+
```html
|
|
172
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z"/><circle cx="12" cy="12" r="3"/></svg>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 组织与流程
|
|
178
|
+
|
|
179
|
+
**用户/团队**
|
|
180
|
+
```html
|
|
181
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H7a4 4 0 0 0-4 4v2"/><circle cx="10" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75"/></svg>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**单人/角色**
|
|
185
|
+
```html
|
|
186
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**架构/层级**
|
|
190
|
+
```html
|
|
191
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="2" width="6" height="6" rx="1"/><rect x="2" y="16" width="6" height="6" rx="1"/><rect x="16" y="16" width="6" height="6" rx="1"/><path d="M12 8v4M5 16v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2"/></svg>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**图层/架构**
|
|
195
|
+
```html
|
|
196
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2 2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**网络/节点**
|
|
200
|
+
```html
|
|
201
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="M8.6 10.6 15.4 6.4M8.6 13.4l6.8 4.2"/></svg>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**分支/流程**
|
|
205
|
+
```html
|
|
206
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="8" r="3"/><path d="M6 9v6M18 11a9 9 0 0 1-9 4"/></svg>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**循环/飞轮**
|
|
210
|
+
```html
|
|
211
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-2.64-6.36"/><path d="M21 3v6h-6"/></svg>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**刷新/迭代**
|
|
215
|
+
```html
|
|
216
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/><path d="M3 21v-5h5"/></svg>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**拼图/集成**
|
|
220
|
+
```html
|
|
221
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 7V4a2 2 0 0 0-4 0v3H7a2 2 0 0 0-2 2v3h3a2 2 0 1 1 0 4H5v3a2 2 0 0 0 2 2h3v-3a2 2 0 1 1 4 0v3h3a2 2 0 0 0 2-2v-3h3a2 2 0 0 0 0-4h-3V9a2 2 0 0 0-2-2h-3z"/></svg>
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 时间与效率
|
|
227
|
+
|
|
228
|
+
**时钟/时间**
|
|
229
|
+
```html
|
|
230
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg>
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**日历/计划**
|
|
234
|
+
```html
|
|
235
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**闪电/高效**
|
|
239
|
+
```html
|
|
240
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**罗盘/方向**
|
|
244
|
+
```html
|
|
245
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"/></svg>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 文档与工具
|
|
251
|
+
|
|
252
|
+
**文档/报告**
|
|
253
|
+
```html
|
|
254
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z"/><path d="M14 2v6h6M16 13H8M16 17H8M10 9H8"/></svg>
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**文件夹/资产**
|
|
258
|
+
```html
|
|
259
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2z"/></svg>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**搜索/洞察**
|
|
263
|
+
```html
|
|
264
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**扳手/工具**
|
|
268
|
+
```html
|
|
269
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**灯泡/洞察**
|
|
273
|
+
```html
|
|
274
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6M10 22h4"/><path d="M12 2a7 7 0 0 0-4 12.7c.6.5 1 1.2 1 2V17h6v-.3c0-.8.4-1.5 1-2A7 7 0 0 0 12 2z"/></svg>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**书签/收藏**
|
|
278
|
+
```html
|
|
279
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/></svg>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**编辑/撰写**
|
|
283
|
+
```html
|
|
284
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"/></svg>
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 平台与智能
|
|
290
|
+
|
|
291
|
+
**云/平台**
|
|
292
|
+
```html
|
|
293
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"/></svg>
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**芯片/AI**
|
|
297
|
+
```html
|
|
298
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="9" y="9" width="6" height="6"/><path d="M9 1v3M15 1v3M9 20v3M15 20v3M1 9h3M1 15h3M20 9h3M20 15h3"/></svg>
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**机器人/Agent**
|
|
302
|
+
```html
|
|
303
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M12 8V4M8 4h8"/><circle cx="9" cy="14" r="1"/><circle cx="15" cy="14" r="1"/><path d="M9 18h6"/></svg>
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**筛选/过滤**
|
|
307
|
+
```html
|
|
308
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M22 3H2l8 9.46V19l4 2v-8.54L22 3z"/></svg>
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**加号/新增**
|
|
312
|
+
```html
|
|
313
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 8v8M8 12h8"/></svg>
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**消息/协同**
|
|
317
|
+
```html
|
|
318
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## 图表语义 / 布局 / 待核实
|
|
324
|
+
|
|
325
|
+
**待核实/待确认**(`.flagbar` / `.tbd-legend` 专用,与"警告"区分:警告=风险,此=待补)
|
|
326
|
+
```html
|
|
327
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**流向 / 桑基**
|
|
331
|
+
```html
|
|
332
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h5c4 0 4 12 8 12h3"/><path d="M4 18h5c4 0 4-12 8-12h3"/><path d="M17 3l3 3-3 3M17 15l3 3-3 3"/></svg>
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**斜率 / 升降对比**
|
|
336
|
+
```html
|
|
337
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19V5M20 19V5"/><path d="M6 15 18 8"/><path d="M6 11 18 16"/></svg>
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**哑铃 / 前后对比**
|
|
341
|
+
```html
|
|
342
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12h16"/><circle cx="6" cy="12" r="2.4"/><circle cx="18" cy="12" r="2.4"/></svg>
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**分布 / 点图**
|
|
346
|
+
```html
|
|
347
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h18"/><circle cx="7" cy="8" r="1.6"/><circle cx="12" cy="12" r="1.6"/><circle cx="16" cy="7" r="1.6"/><circle cx="19" cy="15" r="1.6"/></svg>
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**目标线 / 子弹图**
|
|
351
|
+
```html
|
|
352
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="18" height="8" rx="2"/><path d="M16 5v14"/></svg>
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**图片 / 素材图**(也是**配图占位** `.media__ph` 的标准图标——占位块统一用这一个)
|
|
356
|
+
```html
|
|
357
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="8.5" cy="9.5" r="1.6"/><path d="m4 17 5-5 4 4 3-3 4 4"/></svg>
|
|
358
|
+
```
|
|
359
|
+
> 占位块内**不要**给 svg 加 `class="f-*"`:`.media__ph svg` 已用 `stroke:var(--accent); fill:none` 随风格/主题自动取色(写成 `fill` 实心会在深色主题下发灰)。
|
|
360
|
+
|
|
361
|
+
**拼贴 / 布局**
|
|
362
|
+
```html
|
|
363
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="8" height="10" rx="1.5"/><rect x="13" y="3" width="8" height="5" rx="1.5"/><rect x="13" y="10" width="8" height="11" rx="1.5"/><rect x="3" y="15" width="8" height="6" rx="1.5"/></svg>
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**清单 / 条目**
|
|
367
|
+
```html
|
|
368
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 6h11M9 12h11M9 18h11"/><path d="M4 6h.01M4 12h.01M4 18h.01"/></svg>
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**构成 / 马赛克**
|
|
372
|
+
```html
|
|
373
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="10" height="16" rx="1.5"/><rect x="13" y="4" width="8" height="9" rx="1.5"/><rect x="13" y="13" width="8" height="7" rx="1.5"/></svg>
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## 速查:按语义选图标
|
|
379
|
+
|
|
380
|
+
| 语义 | 图标 |
|
|
381
|
+
|------|------|
|
|
382
|
+
| 规模/底座 | 数据库、云、文件夹 |
|
|
383
|
+
| 效率/性能 | 仪表盘、闪电、时钟 |
|
|
384
|
+
| 增长/成果 | 增长、奖章、火箭、旗帜 |
|
|
385
|
+
| 风险/问题 | 警告、下降 |
|
|
386
|
+
| 治理/安全 | 盾牌、锁、钥匙、天平 |
|
|
387
|
+
| 口径/规则 | 文档、天平、书签 |
|
|
388
|
+
| 组织/分工 | 用户、单人、架构 |
|
|
389
|
+
| 流程/血缘 | 分支、链接、循环、刷新、流向 |
|
|
390
|
+
| 计划/路线 | 日历、罗盘、旗帜 |
|
|
391
|
+
| 智能/Agent | 芯片、机器人 |
|
|
392
|
+
| 洞察/分析 | 搜索、灯泡、眼睛 |
|
|
393
|
+
| 建设/工具 | 扳手、齿轮、拼图 |
|
|
394
|
+
| 图表语义 | 柱状图、趋势、环形、表格、分布、斜率、哑铃、构成 |
|
|
395
|
+
| 布局/图片 | 拼贴、图片、全幅 |
|
|
396
|
+
| 待核实/待补 | 待核实(问号圈) |
|
|
397
|
+
| 清单/条目 | 清单 |
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# 业界对标与设计决策
|
|
2
|
+
|
|
3
|
+
四大主流 PPT/报告技能的调研结论 → TopPPT HTML 的采纳/改造/不采用决策。生成报告前不必读本文档;**改动导出机制、版式体系或校验体系前必读**(防止无依据地破坏既有决策)。
|
|
4
|
+
|
|
5
|
+
## 对标结论速览
|
|
6
|
+
|
|
7
|
+
| 技能 | 路线 | 核心机制 | TopPPT HTML 取舍 |
|
|
8
|
+
|------|------|---------|----------|
|
|
9
|
+
| CyberPPT(sdarpeng) | 原生 PPTX · 咨询级 | 三阶段流程(分析→蓝图→混合还原)、组件签名锁定、渲染回归、15 级排版比例尺、双硬门槛 | **大量采纳**(改造) |
|
|
10
|
+
| guizang(op7418) | 单文件 HTML | 双视觉系统、22 锁定版式、颜色预设制、Node+Playwright 量化校验、演讲者模式 | 版式纪律采纳;颜色锁死不采纳 |
|
|
11
|
+
| 花叔 huashu(alchaincyf) | HTML 设计系统 → PPTX | 内容结构化→设计选型(9 风格)→AI 插画→组装;20 设计哲学 + 5 维评审 | 内容结构化先行已内建 |
|
|
12
|
+
| PPT Master(hugohe3) | 原生 PPTX | 方案先行确认、SVG 中间态、本地预览服务、断点恢复 | 断点恢复采纳;SVG 中间态不采纳 |
|
|
13
|
+
| McKinsey/BCG 咨询材料实践 | 咨询机构 deck | 行动标题、金字塔论证(发现→证据→含义)、Exhibit 编号体系、密排高信息密度 | **研究模式全面对齐**(R1–R8 版式 + 密排比例尺) |
|
|
14
|
+
|
|
15
|
+
## 采纳明细(落到了哪里)
|
|
16
|
+
|
|
17
|
+
| 借鉴点 | 来源 | TopPPT HTML 落地位置 |
|
|
18
|
+
|--------|------|--------------|
|
|
19
|
+
| 排版比例尺(C0 封面→T14 注释,15 级) | CyberPPT | `scripts/layout-constants.json` `typeScale`(基准 8 级)+ **`modeTypeScale` 三模式独立取值**(research 咨询密排:正文 10.5pt) |
|
|
20
|
+
| 页型 = 锁定版式(不允许临场发明结构) | CyberPPT / guizang | `components.md` §36d–36f(research R1–R8)/ `components.md` §37–38b(arch A1–A3)+ pptx-export.md 页型表 |
|
|
21
|
+
| 双硬门槛(可编辑 + 保真,pictures=0 是结果不是目标) | CyberPPT | `validate_pptx.py`(原生形状/字号下限/覆盖率)+ 铁律 16 |
|
|
22
|
+
| 模型完整性校验前移 | CyberPPT | `validateModel`(预览端三态校验)+ `extract_model.py` 一致性抽查 + `validate_report.py` 模型一致性检查 |
|
|
23
|
+
| 版式常量同源(防两通道漂移) | CyberPPT(组件签名)的轻量化 | `layout-constants.json` + `sync_runtime.py` 单源注入(三模板引擎/UI/运行时三类片段注入) |
|
|
24
|
+
| 量化溢出检测(字号×行高×字数 vs 版心预算,无需浏览器) | guizang(Playwright 真实渲染) | `validate_report.py` 溢出估算(静态近似,零依赖,三模式独立预算) |
|
|
25
|
+
| 页面方案先行确认(比 PPT Master 更轻) | PPT Master | 单次交互三项默认推荐(模式/风格/篇幅) |
|
|
26
|
+
| 断点可恢复(REPORT_MODEL = 恢复锚点) | PPT Master | 重跑 extract → build 即恢复,无需重新生成 |
|
|
27
|
+
| 内容结构化先行、设计选型 | 花叔 | 意图→模式/风格/篇幅默认推荐表(SKILL.md) |
|
|
28
|
+
| WYSIWYG 预览(导出所见) | —(自研,回应"保真复刻"诉求) | header 预览模态:`slidesXml`(与导出同一序列化输出)→ DOMParser → 16:9 缩略 |
|
|
29
|
+
| **行动标题 + 金字塔论证 + Exhibit 编号 + so-what** | McKinsey/BCG 咨询 deck 实践 | research 模式铁律 8/13 + R1/R2 版式 + `validate_report.py` 行动标题/Exhibit 连续性检查 |
|
|
30
|
+
| **密排高信息密度(每页一个完整论证,不是每屏一个口号)** | 咨询材料"坐读"传统 | research 密度层(1240 版心/14–15px 正文/16 行密表)+ 密排比例尺(PPTX 正文 10.5pt)+ 单页预算 3200 字 |
|
|
31
|
+
| **帮助即文档(in-product guidance)** | MD3 对话式设计 / 现代 SaaS onboarding | header「?」PPT 生成指引弹窗:双通道说明 + 可复制提示词 |
|
|
32
|
+
|
|
33
|
+
## 明确不采用(及原因)
|
|
34
|
+
|
|
35
|
+
| 机制 | 来源 | 不采用原因 |
|
|
36
|
+
|------|------|-----------|
|
|
37
|
+
| AI 位图蓝图 / ImageGen 逐页蓝图 | CyberPPT | 环境依赖重;TopPPT HTML 以"锁定版式 + CSS token + 常量单源"达成同等的版式可复现性,且保住 `pictures=0` 可编辑性 |
|
|
38
|
+
| 渲染回归(PowerPoint COM 导 PNG 对照)作为硬门禁 | CyberPPT | 需本机 PowerPoint;降级为**可选路径 C**(`pptx-export.md`),日常由通道 A 预览模态覆盖 WYSIWYG 对照 |
|
|
39
|
+
| 颜色完全锁死(用户不可自定义) | guizang | 保留预设风格制(9 套)+ 工具栏实时切换(切换仅影响预览与导出风格,交付一致性由校验器把关) |
|
|
40
|
+
| SVG 中间态逐页生成 | PPT Master | 双通道模型驱动更直接;SVG 中间态增加一次格式转换损耗 |
|
|
41
|
+
| AI 插画配图 | 花叔 | 违反单文件零外链铁律;图形一律内联 SVG |
|
|
42
|
+
|
|
43
|
+
## 开源复用清单(不重复造轮子)
|
|
44
|
+
|
|
45
|
+
| 能力 | 复用的业界开源成果 | 形态 |
|
|
46
|
+
|------|------------------|------|
|
|
47
|
+
| PPTX 生成引擎(通道 B) | **pptxgenjs**(业界标准,CyberPPT 唯一许可引擎同款) | npm 依赖(技能目录 `npm install pptxgenjs` 或指向已有 node_modules) |
|
|
48
|
+
| PPTX 质检器 | **cyber-ppt 的 validate_pptx**(strict 硬门禁、越界/字号/密度/占位检查) | 已内置 `scripts/validate_pptx.py`(纯标准库改写) |
|
|
49
|
+
| 排版比例尺 | **CyberPPT 15 级 Typography Scale** | 收敛为 8 级进 `layout-constants.json` |
|
|
50
|
+
| 版式纪律 | **guizang 锁定版式**(不允许临时发明结构) | `components.md` R1–R8 / A1–A3 锁定版式表 |
|
|
51
|
+
| 咨询论证结构(行动标题/Exhibit/so-what/密排) | **McKinsey/BCG 公开方法论**(金字塔原理、slide-by-slide 论证) | research 模式全套规则(`modes.md`「模式 B · 研究报告」) |
|
|
52
|
+
| **第三方裁判交叉验证(防止自研栈自说自话)** | **python-pptx**(开源标准解析器) | `scripts/cross_verify.py`:A/B 双通道产物均经 python-pptx 严格解析 + 逐页文本一致性比对(实测抓出 rels 路径与 `a:graphic` 前缀两处 OOXML 规范缺陷——PowerPoint 宽容掩盖、严格解析器暴露) |
|
|
53
|
+
| **check-overflow 溢出启发式** | **grapeot/pptx.skill**(AI-first pptx 检查库) | cross_verify 内置:文本估宽(CJK 1em/ASCII .55em)vs shape 宽×可容行数,18% 容差 |
|
|
54
|
+
| **WCAG 对比度审计** | WCAG 2.1 AA + MD3 颜色角色 | `scripts/audit_styles.py`:9 风格 × light/dark × 8 组配对自动核查(实测修复 spectrum/warm-sand 按钮对比度) |
|
|
55
|
+
| **原生图表(addChart 数据可编辑)** | PptxGenJS Charts | **已采纳**:交付通道 B 的带数据图表一律走 `addChart` → 真 chart part + 内嵌 Excel 工作簿(双击可"编辑数据"),并列为 `MODEL_CHART_COUNT` 硬门禁;A 通道(浏览器预览/回归双裁判)保留形状近似渲染,两者逐页文本由 `cross_verify.py` 保证一致 |
|
|
56
|
+
| 设计系统 | **Material Design 3**(m3.material.io) | `design-system.md` §1b 对齐映射 |
|
|
57
|
+
| 渲染回归(可选) | cyber-ppt `export_ppt_render.ps1`(PowerPoint COM)→ **开源替代:LibreOffice headless**(soffice --convert-to pdf,grapeot/pptx.skill 同路线,保真度约 85%) | 可选路径 C,不做硬门禁;本机未装 LibreOffice 时跳过 |
|
|
58
|
+
|
|
59
|
+
**为何手写预览运行时而非内嵌 pptxgenjs**:pptxgenjs 浏览器版约 700KB(含 JSZip),内嵌进每份单文件报告体积不可接受;手写运行时约 120KB(OOXML 序列化,只做 WYSIWYG 预览与回归双裁判),且与交付通道 B 消费同一份 `layout-constants.json` 常量单源——**复用的是"引擎与规范",自研的只是"轻量序列化轮毂"**,两者产出经同一 `validate_pptx.py --strict` 验证一致(0/0)。
|
|
60
|
+
|
|
61
|
+
## TopPPT HTML 的差异化立场
|
|
62
|
+
|
|
63
|
+
1. **一套模型、两通道、一常量源**:`REPORT_MODEL` 是唯一事实源;预览端是真正的 OOXML 序列化器(不是截图、不是粗糙转换),与交付通道共用同一序列化语义与常量单源。
|
|
64
|
+
2. **页面仅预览、交付走精导**:页面提供 WYSIWYG 预览 + 可复制提示词(引导回 AI 对话生成);正式 PPTX 由智能体精导通道产出并过 strict 硬门禁(浏览器端跑不了门禁,不承担交付)。
|
|
65
|
+
3. **预览即交付所见**:预览模态渲染的就是交付同一序列化语义产出的 slide XML,不是另一套模拟。
|
|
66
|
+
4. **锁定版式纪律贯穿 HTML 与 PPTX**:research R1–R8 / arch A1–A3 与页型一一成对,新增版式必须"先扩表(含 PPTX 页型与 layout-constants.json 页型几何)、再使用"。
|
|
67
|
+
5. **三模式独立成体系**:模式不是切换关系而是三种输出形态——独立模板/密度/组件/预算/比例尺;咨询密排(R1–R8)与全幅图(A1–A3)各自对标业界最优实践(McKinsey deck / 架构图评审材料),而非同一骨架的参数缩放。
|
|
68
|
+
6. **双裁判验证(不止一个裁判)**:自研 `validate_pptx.py --strict` 之外,产物再经开源 python-pptx 严格解析与逐页文本比对(`scripts/cross_verify.py`)——自研校验器与手写序列化器同源,存在"自己验自己"盲区;正是靠第三方裁判抓出两处 OOXML 规范缺陷(`ppt/_rels/presentation.xml.rels` 路径、`a:graphic` 命名空间前缀)后才真正达成双通道保真。**改导出/预览运行时后必跑 cross_verify。**
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 深度对标(业界调研)
|
|
73
|
+
|
|
74
|
+
**调研对象**:CyberPPT(sdarpeng,Codex Skill,SKILL.md 约 78KB)、ppt-master(Categorytyy)、ppt-agent-skill(Akxan,148★)、ppt-skill(Cyberceratops)。
|
|
75
|
+
|
|
76
|
+
### 采纳明细(落到了哪里)
|
|
77
|
+
|
|
78
|
+
| 借鉴点 | 来源 | 落地位置 |
|
|
79
|
+
|--------|------|--------------|
|
|
80
|
+
| **图表通道分层 + 数据可追溯** | CyberPPT 的「可编辑信息层」门 | `charts.registry` 四元组(html / pptx 通道 / nativeType 或 path 约束 / dataTable);原生 16 类走 `addChart`,形状通道**强制附数据表**(`MODEL_CHART_DATATABLE`) |
|
|
81
|
+
| **曲线/异形精确还原规则** | CyberPPT「曲线精确追踪门」 | 改造为**可复现常量约束**:采样点 ≥16(流带 ≥24)、双边界分别追踪、禁用 preset shape 替代 → `charts.registry[type].path` + `build_pptx.js ribbonRects` + `infographics.md` |
|
|
82
|
+
| **容器边界溢出(按归属容器判定)** | CyberPPT「容器溢出门」 | `validate_pptx.py` `CONTAINER_OVERFLOW`(扣容器内边距,比页面级更严格)+ `containers.pad` 常量 |
|
|
83
|
+
| **表格语义字号 / 表格密度** | CyberPPT「表格语义字号门」 | `TABLE_SEMANTIC_TYPE`(句子型内容禁 micro 档)+ `TABLE_DENSITY`(大面积空洞即失败)+ `design-system.md` §1f 语义字阶 C0–T14 |
|
|
84
|
+
| **连续文本流(禁拆文本框)** | CyberPPT「连续文本流门」 | `CONTINUOUS_TEXT_FLOW`(深度模式)+ `content-rules.md` §四-f 写作纪律 |
|
|
85
|
+
| **空间锚点注册** | CyberPPT「空间锚点门」(中心偏差 ≤2%、关键锚点 ≤6px) | `anchorTolerance` 常量 + `ANCHOR_TITLE_MISALIGNED`(页头标题对齐版心)+ manifest `anchors` 登记 + 人眼对照清单 P0/P1/P2 分级 |
|
|
86
|
+
| **固定语义字阶** | CyberPPT `C0`/`T1–T14` 15 级 | `typography.levels`(15 级,role 指向 `modeTypeScale`,不重复存 pt) |
|
|
87
|
+
| **设计原理注入** | ppt-master 的 14 本文献映射(CRAP / 7:2:1 / 字体决策矩阵) | `design-system.md` §1a(四条可自检准则) |
|
|
88
|
+
| **12 列网格 + 安全边距** | ppt-master 的 `MARGIN` / `GRID` 常量 | `layout-constants.json` `grid`(13 条列轨 + 6 条行基线 + `safe`)+ `design-system.md` §1e |
|
|
89
|
+
| **风格集 + 每风格 JSON 定义 + 画廊** | 业界常见 20+ 风格 | 风格 **9 套**(8 色族 + 1 彩色数据板),`styles`+`stylesDark`+`styleAccents`+`styleDataColors` 同源 + 画廊 + 参考图。**不追数量**:同色族换名的冗余已删;新增门槛见 `styles.md` §10 |
|
|
90
|
+
| **SCR 论证 + 证据可追溯 + 多故事线脑暴** | CyberPPT 三阶段(证据表 → 脑暴 → SCR) | `outline-design.md` 七步法:② 证据表(MBB 字段 + 冲突不静默归一)③ 故事线脑暴(2–3 条 + issue tree / hypothesis tree)④ SCR 收敛 + 主张树 |
|
|
91
|
+
| **跨页叙事节奏** | ppt-agent-skill(密度交替 / 章节递进 / 首尾呼应 / 渐进揭示) | `outline-design.md` §一-续(含 5 条节奏回查清单) |
|
|
92
|
+
| **失败模式库 + 修复顺序** | ppt-agent-skill 的 8 failure modes | `failure-modes.md`(十四类模式 + 修复顺序铁律 + 错误解释纠正表) |
|
|
93
|
+
| **数据表随行(可追溯)** | CyberPPT「数据表 / 证据 ID」 | `chart.dataTable` 三态(notes / inline / off)+ `inline` 在图表下方附原生表格(双通道同渲染) |
|
|
94
|
+
| **PowerPoint 兼容门(打开 + 导 PNG)** | CyberPPT | 降级为**可选深度模式** `render_compare.py`(soffice 渲染 + 并排对照 + 偏差登记),缺失依赖自动跳过 |
|
|
95
|
+
|
|
96
|
+
### 明确不采纳(及原因)
|
|
97
|
+
|
|
98
|
+
| 机制 | 来源 | 不采纳原因 |
|
|
99
|
+
|------|------|-----------|
|
|
100
|
+
| ImageGen 逐页蓝图(生成 16:9 位图再逐页还原) | CyberPPT 第二阶段 | 环境依赖重;与「单文件零外链 + `pictures=0` 默认」冲突。本技能以「锁定版式 + 常量单源 + 形状还原规则」达成同等可复现性 |
|
|
101
|
+
| SHA-256 冻结签名 + 逐页人工验收确认 | CyberPPT | 交互轮次与耗时显著增加,与「一次问询 + 自动生成 + 校验闭环」定位冲突;改为 manifest 登记(可复现、无需冻结) |
|
|
102
|
+
| 禁止 `python-pptx`(必须只用 pptxgenjs) | CyberPPT 生成工具门 | 本技能用 pptxgenjs **生成**、用 python-pptx 做**第三方裁判**——职责分离比"单一引擎"更能暴露问题(实测抓出两处 OOXML 缺陷) |
|
|
103
|
+
| 联网检索素材脚本 | ppt-skill / ppt-agent-skill | 越出「报告生成」边界;外部数据由用户提供或对话中检索,来源须可追溯(`[n]` + 参考资料) |
|
|
104
|
+
| HTML→SVG→PPTX 三段式管线 | ppt-skill / ppt-agent-skill | 增加一次格式转换损耗;本技能的双通道模型(同一 `REPORT_MODEL` → 原生形状 + 原生图表)保真度更高且保住数据可编辑 |
|
|
105
|
+
| 允许 `pictures>0` 承载复杂视觉 | CyberPPT 混合还原 | 本技能默认 `pictures=0` 全原生可编辑;复杂信息图改用**形状/SVG 精确还原 + 数据表**达成同等视觉语义(且数据仍可核对) |
|