# F3 横轴量化方法 PRD v1.0(草稿)

> 子项目交付物 · 看板分析升级
> 状态:**草稿**,等制片人审 + 锁定后转正式 v1.0
> 起草时间:2026-06-12
> 顾问:Claude Opus 4.7 ｜ 制片人:刘通
> 类型:薄 PRD(只解 v2 之后留下的开放点,已锁部分仅引用)

---

## §1 引用已锁结论(不重述)

本 PRD 是对已有结论的**补丁/收敛**,不替换。已锁部分直接参见以下来源:

| 来源 | 已锁内容 |
|---|---|
| 续接快照 v2 §3 | 横轴公式 `X = 该题材在分析窗口内的均值份额 − 栏目均值份额`,零点 = 栏目均值,单位 = 收视份额绝对差 |
| 续接快照 v2 §4 | 双引擎象限图视觉规格:气泡大小 = 收视份额、气泡颜色 = 收视判定三色、气泡边框 = 开篇钩子三档、重叠用 jitter 解 |
| 主 project Claude 示意图(2026-06-10) | 23 期实际数据 + 模拟纵轴/钩子已可视化,制片人认可"不挤、不堆叠" |
| 续接快照 v3 §1.1 / v4 §3 | 纵轴从 3 档收为 2 档(主线演进 / 并列结构),Prompt 2 v0.2 + ground-truth v0.2.1 M3 100% 锁定 |
| 续接快照 v2 §2 字段二 | `equipment_domain` 多选 9 类:陆战装备 / 海军舰船 / 航空航天 / 导弹与反导 / 信息化 / 后勤保障 / 轻武器 / 跨域 / 其他 |

本 PRD 解决 v2 之后留下的三个开放点:**多标签横轴取值规则、小样本兜底、视觉规格刷新到 2 档纵轴**。

---

## §2 决策一:多标签 → 横轴单点取值规则(Path A 全额法)

`equipment_domain` 字段为多选(至少 1 项),但横轴一期只能落一个点。

### 2.1 规则

**每个 `equipment_domain` 标签独立维护自己的累计均值;一期节目标了 N 个标签,就把该期完整 share 直接记进**每一个**沾上的标签的均值池(全额、不瓜分、不加权)。**

### 2.2 数学定义

```
对每个 equipment_domain 标签 i:
    base_i = 所有沾标签 i 的节目的 share 的算术平均
           = Σ(share_j, ∀ j 沾标签 i) / count(j 沾标签 i)

栏目均值:
    base_全栏目 = 所有节目的 share 的算术平均(单期单算)

每期 ep 的横轴位置:
    X(ep) = mean(base_i, ∀ i ∈ ep.equipment_domain) − base_全栏目
```

### 2.3 示例

设当前 `海军舰船` 桶均值 = 0.69,`跨域` 桶均值 = 0.79,栏目均值 = 0.72。

- 一期标 `海军舰船 + 跨域`,share = 0.71
- 该期 X 位置 = (0.69 + 0.79) / 2 − 0.72 = **+0.02**(略偏热)
- 这期 share = 0.71 同时记入 `海军舰船` 均值池(下次 base 重算用)和 `跨域` 均值池

**两点说明**:

1. **均值更新方向自洽**:0.71 < 0.72(栏目均值),也低于"跨域 0.79"。记入两个桶后,两个桶的均值都会被这期略往下拉,符合"低于均值的样本拉低均值"的直觉。
2. **不存在 ×N 放大**:之前讨论过的"按基值加权 × 标签数"方案因方向 bug(低于均值的样本可能反向拉高均值)被否决,详见 2026-06-12 续接讨论。

### 2.4 适用范围

本规则**仅用于横轴 X 值计算**。其他统计(能力地图、编导对比、scene_tags 分布等)的多标签处理另议。

---

## §3 决策二:小样本兜底规则

某 `equipment_domain` 桶若在当前分析窗口内样本量 n 较小,均值统计意义弱。视觉上需可辨。

### 3.1 兜底分档

| 桶样本量 | 视觉处理 |
|---|---|
| **n ≥ 3** | 正常显示,base 值直接入横轴坐标 |
| **n = 1 或 2** | 桶名右侧显示 `(n=X)` 灰色小字;桶内气泡描边改为虚线浅灰;tooltip 警示"样本不足,横轴位置参考价值有限" |
| **n = 0** | 桶不出现在横轴坐标系上(如 `陆战装备` 在 21 期场景下属此类,预留枚举值但暂不画) |

### 3.2 阈值出处

n = 3 阈值的取法:统计上方差估计起码需 2 自由度,记录方便取 3。**这是初值,后续看实际分布可调**。

### 3.3 当前 21 期场景的小样本桶预测

按 v2 §2 九类 + 我对 21 期的初步映射(见配套回填提案表):

- `导弹与反导` n=1(ep15 一期),**小样本桶**
- `信息化` n=1 或 2(取决于 ep03 是否归这里 vs 跨域),**可能小样本**
- `陆战装备` n=0,**不出现在坐标系**
- `后勤保障` n=0,**不出现在坐标系**
- `其他` n=0,**不出现在坐标系**

其余 4 个桶(`海军舰船` / `航空航天` / `轻武器` / `跨域`)预计 n ≥ 3,正常显示。

---

## §4 决策三:视觉规格刷新(纵轴 3 档 → 2 档)

v2 §4 视觉规格除以下差异外,**全部沿用**:

| 元素 | v2 §4(3 档,旧) | 本版(2 档,新) |
|---|---|---|
| 纵轴档位 | 强主线悬念 / 主线演进 / 并列结构 | **主线演进 / 并列结构**(v3 §1.1 收为 2 档) |
| 纵轴坐标 | 三个水平基线 | 两个水平基线 |
| 同档内 jitter | ±0.3 | ±0.4(档少了,jitter 可适当加大避免聚拢) |
| 中线视觉 | 两条次级分隔 | **一条主分隔线显著加粗**,强调"主线 vs 并列"对照 |
| 上下区视觉重点 | 三层等权 | 上区(主线演进)略亮、下区(并列结构)略灰,**视觉上暗示偏好方向**(可选,等通哥决) |

横轴部分全部沿用 v2 §4,无变化。

---

## §5 配套交付清单(子项目本轮其余产出)

- [✅ 本文件] `F3_横轴量化方法_PRD_v1.0草稿.md`
- [⏳ 下批] `双引擎象限图_HTML_mock_v1.0.html`——基于本 PRD 的纵轴 2 档版可视化,可浏览器直开看交互
- [⏳ 下批] `F3_算法验证脚本.py`——在子项目沙盒里跑通完整计算流程,输入 23 期 equipment_domain 多选 + share,输出各桶 base + 23 期 X 值表 + 数据校验报告
- [⏳ 下批] `equipment_domain_字段定义文档.md`——按 Brief §6.1 格式,主 project Cline 拿去做 schema 迁移
- [⏳ 下批] `23期_equipment_domain_回填提案表.md`——给制片人审,或转 Prompt 1a 的 ground-truth 输入

---

## §6 落地依赖(主 project Cline 工作清单)

子项目这边的 5 份交付物全部锁定后,主 project Cline 可接手以下工作(均需切 Plan + Opus 审):

1. **Schema 迁移**:`backend/sql/00X_add_equipment_domain.sql`(基于字段定义文档)
2. **23 期回填**:Prompt 1a 跑批结果落库 + 制片人审过的 8 期标题推断低置信度样本
3. **后端 API endpoint**:横轴聚合数据接口 `GET /api/v1/episodes/quadrant-data`(或类似)
4. **前端 React/ECharts 组件**:基于本 PRD 的 HTML mock 1:1 翻译

---

## §7 后续可能调整项(本版不解,留入 backlog)

- **时间窗口选择**:滚动窗口 vs 全部历史 vs 季度,默认设"全部历史",后续 UI 加切换器
- **n ≥ 3 阈值的实际验证**:用 23 期 + 新片陆续入库 6 个月后看分布,必要时调阈值
- **多标签规则是否升级**:本版用全额路 A,运行半年若发现不妥(如某桶均值长期被高频跨域期数刷高)再议升级到带权或 1/N 守恒版
- **n=1/2 视觉表达细节**:虚线浅灰 vs 描边淡化 vs 加图例,等 HTML mock 出来后定

---

## §8 修订规则

本 PRD 锁定 v1.0 后:

- v1.x 微调(视觉细节、阈值小动)在本子项目内修改
- v2.0 重大变更(规则换路 B、取消纵轴 2 档等)需主 project 同步审,通过新一版续接快照固化

修订必留 changelog,谁、何时、改了什么、为什么改。
