---
id: v4-2285-2286-embedded-audio-routing
title: Embedded Audio Routing (V4-2285 / V4-2286)
doc_type: design-record
status: QA
target_release: "8.4"
last_updated: 2026-06-04
sources:
  - { type: jira, ref: "V4-2285", url: "https://tvunetworks.atlassian.net/browse/V4-2285" }
  - { type: jira, ref: "V4-2286", url: "https://tvunetworks.atlassian.net/browse/V4-2286" }
figma:
  file: rJJjWWs51n2iFOlCIC7aYG
  nodes:
    - { id: "6748:443", label: "Embedded Audio Routing delivery section", url: "https://www.figma.com/design/rJJjWWs51n2iFOlCIC7aYG/Config-T---Local-UI---v7.7---8.0--20240220?node-id=6748-443" }
---

# Feature Design Record — Embedded Audio Routing (V4-2285 / V4-2286)

> 模板：tvu-design-system `templates/consumer-product/docs/specs/_feature-design-record.template.md`（9 段）

- **JIRA**：[V4-2285](https://tvunetworks.atlassian.net/browse/V4-2285) 嵌入到全部 4 个 SDI 通道 + [V4-2286](https://tvunetworks.atlassian.net/browse/V4-2286) 支持 4/8 CH 外接设备　**Scope**：Config-T（Local UI）
- **Owner(dev)**：Bonnie　**PM**：Trevor Yao　**Designer**：Nancy
- **Status**：待 review（待固件确认 3 假设）　**日期**：2026-06-04（F1 修复 2026-06-05）
- **Epic**：[V4-1676](https://tvunetworks.atlassian.net/browse/V4-1676) RPS One Software 8.4

## 1. 问题与根因
Config-T › Live › VoIP/IFB（RPS One/TM1100）现状：外接音频的 **Embedded Audio** 只能固定嵌到 **Transmitter 1**（"To transmitter 1" 是静态文字、不可选），且只支持 2ch。客户（如用 ART Dual Pre Amp / ART USB 4/8 通道设备）需要把外接音频嵌到任一 SDI 通道（Transmitter），以及把多通道设备的全部声道嵌入。**这是功能缺失，不是 bug**。两票同一控件，合并设计。

## 2. Scope & Non-goals
- **做**：把单行 Embedded Audio 升级为路由列表（源设备 · 通道 · → Transmitter），支持多行/多设备、4/8 CH。
- **不做**：不改上方 Transmitter 1-4 mixing 模式逻辑；不涉及 LCD 触屏（本需求只在 Config-T）；不涉及 receiver 侧。

## 3. Baseline 参考
- 现状屏 `RPS One/ 4 Audio Inputs Device`（node `2791:1520`）——本设计的克隆源（M21 sibling 视觉契约来源）。
- 下拉组件 file-local `WebUI/Form/Selector`（mainComponent `3:290`，480×36，黑@20%底+白字+chevron）。

## 4. 设计 — 状态与指示模型
- **正常**：路由表每行 = [Source 下拉][Channels 下拉][→ Transmitter 下拉][✕ 删除]；"+ Add routing" 增行。
- **边界/异常态**（已写进 M23 卡）：
  - 空列表 = 不嵌入（embedding off）
  - 两行指向同一 Transmitter = 冲突 → **拦截保存 + 行内告警**（2026-06-08 定：拦截优于后者覆盖，防误配；open-questions gate 清理）
  - 设备拔出 → 行显示"未找到设备"、路由失效
  - 最多行数 = transmitter 数（4）
- 视觉沿用现有 VoIP/IFB 页语言，不自造范式。

## 5. UX 交付
- **产品 UI 文案**（设备语言单语，M33）：Embedded Audio / Source (external device) / Channels / → Transmitter (SDI) / + Add routing / Apply。
- **次级文字色**：表头/提示用 legacy 页实测 **`#999999`**（**不是**新库 `#A6ADB8`；C4 file-level convention 优先）。主 label `#f1f1f1`。
- **保存交互**：路由表下方有 **Apply 按钮**（克隆现有 Transmitter 区 Apply，`Button/Disable` 同款），改完路由需 Apply 保存。
- **select 状态**（库 2026-06-05 重命名）：有值 `status=Value` / 占位 `status=Placeholder` / 错误 `UX=error`。
- **路由表对齐（M-INTEGRITY I1，2026-06-08 修）**：路由表整体右缘对齐 legacy 单控件右缘（abs `-86`，= 上方 Transmitter 下拉 / Audio Level / 下方 Bluetooth 列表的统一内容右边界），避免表比其它区宽、右缘参差。表宽 478 = 三列固定宽 Source 207 / Channels 105 / Transmitter 140 + ✕14 + 列间距 4×3；表内不再用 Fill（Fill 会撑到 814 突出右缘）。**Embedded Audio 的 Apply 容器同样从 Fill(814) 收成 689**，让 Apply 按钮右缘与上方 Transmitter Apply / 下方 Scan 对齐。
- **注释层**（双语 M23）：navy `#2B2D42` 卡 + 4px cyan 左 stroke，段落 Changes / Interaction / States & edge cases / Open(固件) / Acceptance。
- **M33 语言隔离 + UX 说明分离**：mockup 帧**内**只放产品 UI（单语英文，含告警 "⚠ Transmitter 1 already used…" / "⚠ Device disconnected — routing inactive"）；所有 **UX 说明移到帧外**——每个状态帧下方一个 navy 注释卡（双语 EN+CN，M23 填充容器，不裸浮）。避免开发把 UX 注释/中文误当成产品要显示的内容。
- **组件来源**：Jira requirement = 真 file-local 组件 clone（`2392790e…`）+ hyperlink（M23.8）；路由下拉 = **真库组件 `select box/filled`**（TVU UX Design System，key `ca2ff89d…`，dark/M，Roboto 值文字；**有值用 `status=normal`、占位才用 `status=default`**；error 态用 UX=error 变体）；展开态 = `Drop down List/Select`（key `12602e73…`）。
- **图标组件（M32，2026-06-08 修）**：路由列的 3 处图标一律用 **TVU UX Design System 真图标组件**，禁止 Unicode glyph 手搓——`→ Transmitter` 箭头 = `icon/Arrow/Right_1`（key `a135a513…`）；行末删除 = `icon/Edit/Delete`（key `6379e020…`，垃圾桶语义优于 ✕）；`+ Add routing` 的 + = `icon/Edit/Add 1`（key `b55b65cc…`）。均 16×16。箭头/删除 fill override 成列标题灰 `#999999`（legacy file-level hex，C4 优先）；Add 绿沿用现有 hex `{0.2,0.671,0.31}`（本 legacy 文件无 `UX/Brand/Brand` local variable，hex 例外，F1 已认可）。**AFTER 主屏 + 状态帧 S0–S5 全部统一替换**（共 7×→ / 11×✕ / 7×+Add），帧外注释卡里的描述性 "→/+Add" 文字保留不动。
  > 注：早期用 Inter 自建复合体（因工具无法加载 legacy Helvetica），2026-06-05 按 Owner 反馈换成真库 Select。新库 select 比 legacy 深填充略浅，是"legacy 页用新库组件"的取舍。

## 6. 决策记录
| # | 决策 | 理由 |
|---|---|---|
| 1 | 两票合并一个设计 | 同一 Embedded Audio 控件 |
| 2 | Option B 路由列表（vs 最小改 / 挂每 transmitter）| 一次干净覆盖多设备→多 transmitter + 多通道；用户拍板 |
| 3 | 下拉用 Inter stand-in | 工具环境无法加载 legacy Helvetica 给 library 实例填字；production 仍用真组件 |
| 4 | 3 个固件假设走 M23 卡待确认，不阻塞出图 | 多数边界态/视觉不依赖固件，可先出图后定稿 |

## 7. 依赖 / 待办
**已知行为（2026-06-08 Owner 确认，非本次新增，作为设计依据，不作 open question 抛固件）**：
1. **多设备**：即使同时接多个外接设备，默认使用**最新插入**的设备。
2. **声道上限**：单个 Transmitter 最多 **16 声道**。

**内置音频回退 + Source 动态列数（2026-06-23 用户确认，设计依据）**：
- **外接未接入/断开 → 回退内置音频**：外接 Audio Device 未接入或断开时，source 默认回退**内置音频**（Built-in audio，立体声 2CH = 1 列 CH 1-2），**不报 warning**，矩阵正常可交互。「曾嵌入后断开」(state5 `7388:1062`) 同样回退内置音频，原外接嵌入的 ● 清除，附中性提示告知 "External device disconnected — switched to Built-in audio; previous embedding cleared."。state1 `7364:661` = 从未接外设的内置音频默认态（无提示，super-head "Built-in audio" 已表意）。
- **Source 列数随设备声道动态（2/4/8CH = 1/2/4 列）**：列数 = 设备声道数 ÷ 2；2CH→1 列 / 4CH→2 列（UMC404HD 192k 当前实测）/ 8CH→4 列。super-head 设备名 + CH-pair 列头随生效设备重新派生；行（Tx SDI 输出对）独立于 source 声道数。UX 说明卡 `7350:877` Source channels 小节含 **8CH=4列**可视化示意（`7445:1116`，4 列各 78 压进 480）。

**拟定假设（working assumption，⏳ 已在 JIRA 向 PM 确认）**：
3. **Embedded Audio 路由 与 上方 Transmitter 1–4 mixing 模式 相互独立**：mixing 模式处理 **SDI 自带**音频通道；Embedded Audio 将**外接设备**音频作为**额外声道叠加**到目标 Transmitter 的 IP 流（合计 ≤16 声道），不与上方 mixing 设置联动 → 路由列表 UI 不需与上方 mixing 控件关联。**理由**：Pack 只读 SDI → 编码 IP（Trevor FB-9586/V4-2285 评论），外接音频是独立于 SDI 的另一音频来源。**若 PM 推翻为"受 mixing 约束/同入口冲突"，则路由列表需补 mixing 联动/防冲突 UI**。

> 按 open-questions gate 规则（meta-rules 触发器 P，commit `00179d78`），open question 不贴 Figma 交付 / M23 卡 —— 假设 3 改在 JIRA 向 PM 确认；假设 1/2 已知，直接作为设计依据。

环境约束：use_figma 工具无法加载 Helvetica → 下拉单元用 Inter stand-in。

## 8. 交付链接
- Figma Section（**新交付物**：新 Mockup + UX 说明）：`6748:443` — [open](https://www.figma.com/design/rJJjWWs51n2iFOlCIC7aYG/Config-T---Local-UI---v7.7---8.0--20240220?node-id=6748-443)。含 AFTER `6716:288` / PRD `6727:447` / M23 卡 `6728:443` / Jira widgets `6750:11`+`6750:21` / Journey `6785:465` / 状态帧 S0-S5。
- **BEFORE / Current 效果图 `6716:220` 放在 Section 外**（页面左侧）做现状对比参照，不属于交付 Section。
- 新 Page：`6716:2`。布局：左=BEFORE(现状)，右=Section(新设计)。
- **M23 多状态流程图 + Journey map**（同 Section 内，screens 下方）：Journey card `6785:465`；状态帧 S0 `6786:467` / S1 `6786:477` / S2 `6787:476` / S3 冲突 `6788:503` / S4 拔出 `6788:542` / S5 展开 `6789:1792`；cyan 箭头 + 条件标签连接。
- Stage 0 + F1 走查：[docs/audits/2026-06-05-v4-2285-2286-stage0-f1-walkthrough.md](../audits/2026-06-05-v4-2285-2286-stage0-f1-walkthrough.md)

## 9. 路由与评审
- **Assignee**：Config-T → **Bonnie Zhou**（2026-06-08 已转，两票）　**Reviewer(PM)**：Trevor Yao　**FYI**：fujianfang · Bonnie Zhou · Dave Hu
- **JIRA 回复**：✅ **已发**（2026-06-08，两票同文 ADF：真 @Trevor mention + V4-2285/2286 issue smart link + Figma Section smart link + A/B/C mixing 关系选项[推荐 A] + FYI mention）。V4-2285 comment `246010` / V4-2286 comment `246012`。假设 1/2 已知未抛；假设 3 (mixing 关系) 以 A/B/C 选项 + 推荐 A 形式请 PM 选。

---
> 流程：本需求走 ⓪ Stage 0(lite) → ①②③④ → ⑤ F1（已修 3 medium）；⑥F2-late/⑦journey 待固件确认定稿后跑。Stage 0 上游 framing 已回流 design-process.md（commit 8b42aa9f）。
