skills/ppt-station-skill/reference/design-rules.md

198 lines
7.0 KiB
Markdown
Raw Normal View History

# 设计规则 — 金融报告级 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
```
**同样的信息量,后者只用一半的页数,但每页都高密度。**