# 异常处理 + 验收清单

> 本文档定义 one-paper-company 的异常处理策略和验收清单。

## 异常处理

| 场景 | 处理方式 |
|---|---|
| 股票代码无法解析 | AskUserQuestion 让用户提供代码 |
| K 线数据缺失（如 2010 前不可机读） | 沿用原页策略：稀疏 scatter 点 + 标注"复权近似，只画点不连线" |
| 财务数据不全 | 缺失季用 null 占位，图表自动断线 + vp-foot 标注"部分季缺失" |
| 行业格局墙无数据 | 内置半导体/软件/能源/金融 行业模板兜底，或简化为单波 |
| 品牌色识别失败 | 默认 #76b900 + 提示用户"未识别品牌色，使用默认绿" |
| Wikimedia 图片抓取失败 | 占位灰底 + alt 文字 + figcaption 标注"图片待补" |
| ECharts 加载失败 | canvas/chart 区显示"图表加载失败，请检查浏览器" |
| 自选股 qfq 接口异常 | 降级 WebSearch 抓月K，标注"数据来源：网络公开行情" |

## 验收清单

- [ ] 输入"英伟达 2026Q3" → 生成的 HTML 与原页视觉 1:1（回归基准）
- [ ] 输入另一家公司 → 生成结构完整、配色正确、无报错的 HTML
- [ ] HTML 双击可离线打开，所有图表/动画/交互正常
- [ ] 数据信源三层标注齐全（数组注释 + vp-foot + outro footgrid）
- [ ] 移动端响应式正常（≤960px 单列、≤560px 信号卡单列、961-1180px 中等屏幕）
- [ ] 横竖屏切换时所有图表正确 resize（orientationchange 触发）
- [ ] s9/s10 滚动到视口中部时正确激活（tail spacer + rootMargin 调整）
- [ ] 15 个数据数组全部从 data.json 注入，模板内无硬编码公司数据
- [ ] 品牌色仅替换 --green/--green-d，其余配色不变
- [ ] 产物 HTML 体积 < 3MB
- [ ] 打印 PDF 时所有内容可见（@media print）

## 已知限制

1. **v2.0.0 仅周期复盘形态可用**：速览卡/估值地图/竞争格局为路线图，待 v2.1-v2.3 实现
2. **研究观点依赖人工**：wall/scores/excluded/radar/signals 这 5 项是"研究观点"而非"客观数据"，Phase B 必须让用户确认
3. **像素字字母表**：已覆盖 A-Z + 0-9 + 标点，支持任意 ticker；长公司名（>8 字符）需调小 scale
4. **K 线红涨绿跌**：中国色系（up=#c0392b 红，down=#2e9e5b 绿），跨公司通用
5. **单公司单页**：本期不做多公司对比页
6. **中文版**：本期不做英文版
