skills/ppt-station-skill/reference/design-rules.md
wangyitong a65adcc2e5 Initial commit: merged, deduplicated, and vetted skill collection
Sources: extracted from two upstream archives (skill-repo, skills-main),
merged with the following policy:

- 15 broken symlinks (pointing to /Users/jameslee/.cc-switch/skills or
  ../../.agents/skills on a foreign machine) discarded
- 3 real name collisions with identical content (ai-pair, ifind-http-api,
  zhipu-websearch) kept as one copy
- Functional overlaps deduped keeping the strongest variant:
  - docx family: kept docx (official, full toolchain) + docx-cn
    (GB/T 9704 Chinese official-document constants),
    dropped docx_writer (no scripts, name collided with docx)
  - humanizer family: kept humanizer-zh (6 zh reference docs),
    dropped humanizer (en, redundant for CN workflow)
- Skills that only ran in a foreign environment removed:
  ablemind-ops, app-publish, hlb-design-system, openclaw-adj-skill,
  claude-driver
- alphapai excluded from this public repo because its SKILL.md hard-coded
  live credentials

Result: 25 skills, 572 files, ~7.5 MB.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 14:47:12 +08:00

198 lines
7.0 KiB
Markdown
Raw 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.

# 设计规则 — 金融报告级 PPT 标准
> 来源:投行级研报 77页逐页分析 + 用户反馈迭代。
> 本文档定义"专业"的具体标准。所有金融/投资报告类 PPT 必须遵守。
---
## 核心原则
1. **信息密度优先** — 每页至少 2 个数据元素图表、表格、KPI。一图一页是浪费。
2. **零装饰** — 无 emoji、无花哨装饰。视觉层次靠字号+粗细+颜色。
3. **克制用色** — 每张图表最多 2-3 种颜色。主色60%、辅助色30%、强调色10%。
4. **每页有来源** — 底部 8pt 灰色脚注,标明数据来源。
---
## 页面结构模板(固定框架)
投行级研报每页均有固定结构ppt-station 应遵循:
```
[标题 16pt 粗体] [页码/章节标记]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (全宽 1pt 细线)
[左图/左内容 50%] [右图/右内容 50%]
[来源: Bloomberg, Wind] [公司/品牌名]
```
### 精确坐标(由 Design Tokens 控制)
| 元素 | x | y | w | h | 字号 | 颜色 | Token |
|------|---|---|---|---|------|------|-------|
| 页面标题 | 0.60 | 0.25 | 12.133 | 0.50 | 16pt | text_dark | `page_title_size`, `header_y` |
| 全宽分隔线 | 0.60 | 0.80 | 12.133 | 0.015 | — | primary | `divider_y`, `divider_h` |
| 内容区 | 0.60 | 1.00 | 自动 | 5.80 | — | — | `content_y`, `content_w`= slide_w - 2*margin |
| 来源脚注 | 0.60 | 7.10 | 10.0 | 0.30 | 8pt | text_muted | `footer_y`, `footer_size` |
**注意**:标题用 16pt不是 26-28pt全宽细线不是 2" 短装饰线)。
**现已自动化**`add_page_header()` 和 `add_page_footer()` 自动处理页眉/页脚,注册布局无需手动编写。
---
## 布局选择 — 50/50 双图是默认
投行级研报 58% 的内容页使用 50/50 左右双图。
### 应该合并为一页的组合
| 左图 | 右图 | 为什么 |
|------|------|--------|
| 股价走势 | 累计收益率 | 同一标的的价格+回报 |
| 营收/利润柱图 | 利润率/ROE折线 | 规模+效率双视角 |
| 费用结构 | 现金流 | 投入+产出 |
| 当年收益柱图 | 成立以来累计 | 短期+长期 |
| PE/PB范围 | PE历史走势 | 估值概览+趋势 |
### 什么时候用上下双图(`two_charts_vertical`
- 共享日期轴的趋势对比(如收入增速 vs 利润增速)
- 需要最大化时间轴跨度(上下图均使用全宽)
- 数据量大、需要高分辨率的时间序列
### 什么时候用图表+表格(`chart_table`
- 趋势图 + 截面数据快照组合(如走势图 + 最新财务指标表)
- 需要同时展示可视化和精确数值
### 什么时候用全页单图
- 超长时间序列20年+,需要全宽展示)
- 多系列散点图/气泡图
- 复杂堆叠图5+系列)
### 什么时候不需要 section_divider
投行级研报没有分隔页。章节区分靠:
- 左侧竖色标0.15" × 0.4",章节颜色)
- 页面标题前缀(如"走势分析 — 股价趋势"
如果报告超过 20 页,可以用 1 个 section_divider。10-15 页报告不需要。
---
## 排版规范
### 字号体系(克制)
| 元素 | 投行级标准 | 不要超过 |
|------|---------------|---------|
| 页面标题 | 16pt Bold | 18pt |
| 封面标题 | 36pt Bold | 40pt |
| 图表副标题 | 11pt | 14pt |
| 数据标签 | 7-9pt Bold | 10pt |
| 图例 | 9pt | 10pt |
| 轴标签 | 9pt | 10pt |
| 来源脚注 | 8pt | 9pt |
| KPI 大数字 | 28-32pt | 32pt |
### 字体
| 场景 | 标题 | 正文/图表 |
|------|------|----------|
| 金融报告 | 黑体 Bold | 黑体 |
| 通用商务 | 微软雅黑 Bold | 微软雅黑 |
---
## 配色规范
### 背景
- 内容页:**纯白 `FFFFFF`**(不要浅色系背景)
- 标题页/结论页:**深色 `bg_dark`**
### 图表
- 主系列(柱/面积用色板色1偏浅大面积不刺眼
- 次系列折线用色板色2深色细线需高对比度
- 参考线/均值线:用 `accent` 色 + 虚线
- **同一张图表最多 3 种颜色**(投行级标准)
### 正负色
- 正向(增长/超额):`positive` 绿
- 负向(下跌/不足):`negative` 红
- 中性:`text_muted` 灰
---
## 表格规范(投行级,自动启用)
`add_table()` 默认 `ib_style=True`
- **无垂直边框** — 仅保留表头上下 + 表格底部水平线(表头 1pt primary 色,数据行 0.5pt `#E2E8F0`
- **数值列自动右对齐** — 检测超过 50% 数值的列,自动右对齐
- **首列左对齐** — 标签/名称列
- **斑马纹** — 偶数行 `table_zebra_even`,奇数行 `table_zebra_odd`
## 图表规范ChartJunkCleaner 自动执行)
`ChartBuilder.build()` 后自动清洗:
- 图表外边框 → 移除
- Y 轴网格线 → 极浅灰色虚线 (`#E8E8E8`, 0.5pt, dot)
- 刻度线 → none
- 图例边框/填充 → 移除
- plotArea 边框 → 移除
---
## 绝对禁止
1. **禁止 emoji** — 金融报告不使用任何 emoji。用编号"01"、"02")或色块替代图标。
2. **禁止每图一页** — 默认使用 `two_charts` 布局把相关图表并排。
3. **禁止大字号标题** — 页面标题不超过 18ptDeckLinter 会报 WARN
4. **禁止纯文字页** — 每页至少一个数据可视化元素。
5. **禁止没有来源的图表** — 用 `data["footnote"]` 传入DeckLinter 会检查 footer 存在性)。
6. **禁止花哨配色** — 单图不超过 3 色,全 PPT 不超过 5 色。
7. **禁止无分隔线** — 标题下方是全宽分隔线(`add_page_header` 自动处理)。
8. **禁止手写标题+分隔线** — 使用 `add_page_header()` 或注册布局自动处理。
---
## 对比示例
### 不专业(之前安克报告的模式)
```
Page 1: title_dark
Page 2: kpi_cards4个指标
Page 3: bullet_points3个要点 + emoji ⚡🏠🎧)
Page 4: section_divider "走势分析" ← 浪费一页
Page 5: 股价走势图(独占整页) ← 信息密度低
Page 6: 累计收益率(独占整页) ← 应与 Page 5 合并
Page 7: kpi_cards风险指标
Page 8: section_divider "财务分析" ← 又浪费一页
Page 9: 营收利润(独占整页) ← 信息密度低
Page 10: 利润率趋势(独占整页) ← 应与 Page 9 合并
...
= 18 页,只有 5 个图表
```
### 专业(投行研报模式)
```
Page 1: title_dark
Page 2: kpi_cards6个指标+ 来源脚注
Page 3: two_charts — 左:股价走势 / 右:累计收益率
Page 4: two_charts — 左:营收利润 / 右:利润率趋势
Page 5: two_charts — 左:费用结构 / 右:现金流
Page 6: two_charts — 左:竞争对比柱图 / 右:ROE趋势对比
Page 7: comparison_table竞争格局数据表+ 来源脚注
Page 8: bullet_points竞争壁垒用编号代替emoji
Page 9: conclusion_dark
= 9 页10 个图表 + 1 表 + 1 KPI
```
**同样的信息量,后者只用一半的页数,但每页都高密度。**