# Stage 0 (lite) + F1 Walkthrough — V4-2285/2286 Embedded Audio Routing

**日期**：2026-06-05　**Deliverable**：Section `6748:443`（AFTER 屏 `6716:288`）Config-T VoIP/IFB
**Page type**：Settings / Form（→ Data Audit 跳过；M3/M4/M7 N/A）
**Rules**：design-process.md + mockup-conventions.md（M0/M21/M23/M32/M-COLOR/M-INTEGRITY/M45）

---

## Stage 0（lite 上游 framing — 补做）

### Persona
直播/外场工程师，给 TM1100/RPS One 配多机位直播。要把**外接音频设备**（调音台 / ART 前置放大 / USB 多通道接口）的声道嵌进**指定的 SDI transmitter**。在时间压力下操作，关心：把对的音频源接到对的视频通道、支持专业多通道设备、少折腾。

### 关键 Journey（配置外接音频路由）
1. 接外接音频设备到 pack → 2. 进 Config-T › Live › VoIP/IFB → 3. 启用 embedded audio → 4. 每个源：选设备 → 选通道 → 选目标 transmitter → 5. Apply，在接收端验证 → 6. 设备变动时增删路由。

### 边界 / 异常态（设计必须处理或显式声明）
| # | 边界态 | 当前 mockup 是否覆盖 |
|---|---|---|
| E1 | 空列表 = 不嵌入 | ⚠️ 仅文字说明，无空态视觉 |
| E2 | 同一 transmitter 被两行同时指向（冲突）| ❌ 未处理 |
| E3 | 同通道被多设备占用 | ❌ 未处理 |
| E4 | 路由后设备被拔出（stale 行）| ❌ 未处理 |
| E5 | 8ch 设备 vs transmitter 通道容量上限 | ⚠️ = 固件假设 #2，挂 M23 卡 |
| E6 | 最多几行（= transmitter 数 4？）| ❌ 未声明 |
| E7 | 与上方 Transmitter 1-4 mixing 模式的关系 | ⚠️ = 固件假设 #3 |

> **价值印证**：这些边界态**大多不依赖固件**（E1/E2/E3/E4/E6 是纯 UX 决策）——证明"现在跑 framing/F1 不是浪费"。E5/E7 才依赖固件。

---

## F1 Walkthrough Report

### 1. Sibling Visual Contract（M21）
- Sibling：现有 RPS One VoIP/IFB 屏（`2791:1520`，本设计的克隆源）
- ✅ 路由单元底色（黑@20%）/ 圆角 4 / 白字 / chevron — 匹配 `WebUI/Form/Selector`
- ⚠️ 字体 Inter（环境无 Helvetica）vs 页面 Helvetica — tooling 限制，已记
- ⚠️ **路由表左对齐在 label 列（x=0），其他控件内容缩进到 x=219** — 视觉不一致（I1）

### 2. PRD + US 覆盖
| 需求 | 对应 | 覆盖 |
|---|---|---|
| V4-2285 嵌入到任一 transmitter | 路由行 → Transmitter 下拉 | ✅ |
| V4-2285 多设备 → 不同 transmitter | 多行 | ✅ |
| V4-2286 支持 4/8 CH 设备 | 示例含 4ch；无 8ch 示例 | ⚠️ partial |
| 边界态（空/冲突/拔出）| — | ❌ missing（见 Stage 0）|

覆盖：3/4 partial（happy path 全覆盖，边界态缺）

### 3. Rule Compliance
| Rule | Status | Evidence |
|---|---|---|
| M0 Phase 0 | ✅ | 映射表已产 |
| M32 library-first | ⚠️ partial | 下拉单元是 Inter stand-in（Helvetica tooling block），非真 selector 实例 |
| M-COLOR C1 | ❌ | "+ Add routing" 绿用 hex `{0.2,0.671,0.31}` 未绑 `UX/Brand/Brand` variable |
| M-INTEGRITY I1 | ⚠️ | 路由表左对齐不一致（见 §1）|
| M23 | ⚠️ partial | 卡在（navy+cyan+双语），但**未文档化多状态**（空/冲突/拔出）→ M23 触发条件（≥2 状态）应补 |
| M23.8 Jira | ✅ | 真组件 + hyperlink |
| M45 page 命名 | ✅ | `< V4-2285 + V4-2286 > … 20260604` |

### 4. Anti-pattern Scan
| Anti-pattern | Found |
|---|---|
| 自画替代库组件 | ⚠️ 下拉单元（Helvetica 逼的，已诚实声明）|
| hex 硬编码替代 token | ✅ found：绿色 Add 链接（M-COLOR C1）|
| 参考输入当 spec | ❌ |

### 5. 数据可行性 Audit
N/A（Settings 页）

### 6. Recommended Next Actions
| 优先级 | Action | Owner |
|---|---|---|
| 🟡 Medium | M23 卡补**多状态文档**：空态 / transmitter 冲突 / 设备拔出 / 最多行数（E1/E2/E4/E6）| AI（auto-fix 候选）|
| 🟡 Medium | 路由表左缘对齐到 x=219（或显式声明"full-width table 是有意"）| AI |
| 🟡 Medium | 补 8ch 示例行 / 文案澄清 4 vs 8ch（V4-2286 覆盖）| AI |
| 🟢 Low | 绿色 Add 链接绑 brand variable（legacy 文件若无该 variable 则记 hex 例外）| AI |
| 🟢 Low | Inter stand-in → 真 selector（待环境支持 Helvetica）| defer |

**Walkthrough complete.** Issues：0 high / 3 medium / 2 low。happy path 健全；缺口集中在**边界态文档化**（Stage 0 缺席的后果）+ 小幅视觉一致性 + token 绑定。

---

## 2026-06-05 更新 — Owner 反馈后修复

- ✅ **流程图补全**（原 M23 partial + 边界态 missing）：按 journey 从 0 建 M23 多状态流程图 **S0–S5**（空/单条/多条/冲突/拔出/展开）+ 5 段 journey map + cyan 箭头条件标签。各状态可视化，"改了哪/有哪些态"一眼看懂。
- ✅ **Select 换真库组件**（原 M32 partial / 自画 anti-pattern）：路由下拉从 Inter 自建复合体换成真 `select box/filled`（key `ca2ff89d…`），S3/S4 用 UX=error 变体，S5 用 `Drop down List/Select` 展开面板。M32 违例解除。
- ⚠️ 残留：新库 select 比 legacy 深填充略浅（legacy 页用新库的取舍，已在 design-record 记）；绿色 Add link 仍 hex（low，待 review）。
- 流程认知回流：⓪ Stage 0 上游 framing 已进 `design-process.md`（commit `8b42aa9f`）。
