# V4-2333 衍生轮 — Test Signal Parameters（LCD + Config-T 双端）design-record

> 日期：2026-07-28 · Owner：Nancy · 状态：mockup 开建中
> 设计定案真源：`docs/specs/2026-07-28-v4-2333-test-signal-parameters-design.md`（决策 D1–D7 不再复述）
> 上游：`docs/specs/2026-07-09-v4-2333-transmission-test-design-record.md`

---

## 1. 需求来源 Source

| 类型 | 单据 / 链接 |
|---|---|
| 开发任务 | [V4-2333](https://tvunetworks.atlassian.net/browse/V4-2333) — RPS One LCD Transmission Test |
| 关联功能请求（scope 权威） | [FB-9937](https://tvunetworks.atlassian.net/browse/FB-9937) |
| 触发点 | Trevor（PM）在 V4-2333 追问测试图卡的分辨率/帧率规格 → 派生「是否开放测试信号参数、放哪个产品线」范围问题；owner 2026-07-28 拍板两端都做 |
| 参考设计 | MicroApps「Parameters」面板 `DtZcMkhNy6qh6jbQQnhreQ` node `83:9846` |

---

## 2. M48 起手 Rule-Coverage Self-Check（开建前产出，交付前逐条回勾）

### 2.1 locked spec（来自 spec §2 / §3 / owner 拍板）

| # | locked spec | 本轮怎么落地 | 状态 |
|---|---|---|---|
| L1 | 参数 = 设置，非每次运行的选项；实时生效 + 自动保存 + 重启不丢 | 两端均无「保存/取消」二选一流程；Config-T 底部 `Update` 仅在有未提交编辑时可用；PRD/UX 卡显式写行为 | ☐ |
| L2 | LCD 只暴露 Pattern / Format / Tone | L2 设置页只 3 行；Timecode / Overlay 组只读提示，不给控件 | ☐ |
| L3 | LCD 默认直开测（点 Test Signal 立即用当前值），设置走齿轮 | L1 屏保留 Test Signal 按钮原语义，仅**新增**齿轮入口 | ☐ |
| L4 | Config-T 新 Tab 插 IP Source 之后 | 复用 tab 条 active 槽位（原 NDI Source 作废槽位）改 `Test Signal` | ☐ |
| L5 | 运行中两端参数全置灰 + hint「Stop the test to change parameters」 | C2 / L4 两屏；不做「改参数自动重启流」 | ☐ |
| L6 | 默认值全沿用参考面板（Color Bars / 1920×1080 / Progressive (p) / 30 / Beep every 1 sec / Timecode ON · Local Time / `#F8F8F8` / Overlay Top Left · Medium；Overlay Text 空） | C1 帧逐项按此填；PRD 默认值表 | ☐ |
| L7 | LCD 对叠加组只读可见 | L2 设置页底部一行只读 hint 反映 Config-T 的 Timecode / Overlay 现值 | ☐ |
| L8 | 一个 feature 的新设计交付集同 Section；文档卡宽 = PRD 宽 | LCD 侧 PRD=680 → 新 UX/Journey 卡也 680；Config-T 侧 sibling PRD（`7452:4`）=1000 → Config-T 文档卡统一 1000 | ☐ |

### 2.2 active M-rule 命中清单

| Rule | 命中原因 | 落地 |
|---|---|---|
| M0 | ≥3 元素 / 多帧 | §3 映射表（已带真 key） |
| M1 | Config-T 顶栏 | 顶栏 `Header` remote instance 随 clone 保留，不自画 |
| M21 / M21.2 | existing product 增量 + 色值合同 | 色值从 sibling 帧实测（divider `#434343`、LCD 绿 `#7ED321`≈(0.494,0.826,0.130)、LCD 双底 `#252525`/`#313131`），不套 DS token |
| M23 / M23.0 | UX 交付卡 | 双端各一套 canonical 5 段（Section Header / Why / Changes / Data Contract / Interaction / Acceptance） |
| M23.6 | 帧间连线 | LCD L1→L2→L3 / L2→L4 正交折线 + 起点圆点 + 手绘箭头 |
| M23.7 | 每帧 state-label | 每帧 caption = what + why + invariants |
| M23.10 / M23.11 | 卡语言 + scope | 白话 If-Then；不塞 persona / roadmap / open questions |
| M23.12 | 卡 placement + 宽度 | 见 L8 |
| M23.14 | 双语堆叠行距 + 段名层级 | 段名 cyan Medium 15 / 正文 13；ZH 同色 opacity 0.45、字号 −2、紧行距 |
| M23.18 / M23.18.1 | 卡皮肤 + 画布底色 | 双端产品帧均深色（LCD `#252525`；Config-T dark theme）→ **navy 卡**；新 Config-T page 画布 `0.418` |
| M23.8 / M23.8.1 | Jira 组件 + 来源可点 | Config-T 侧 clone `7455:1416` 改 V4-2333 + `setRangeHyperlink`；PRD 来源段全 ticket 可点 |
| M45 / M45.1 | Config-T 新需求 → 新 page | `< V4-2376 > Test Signal Parameters · Config-T 20260728`（2026-08-06 轮二十八随主单改号，日期段 = 创建日不变），插 `To be confirmed`（`1:2`）正下方 index 4 |
| M46 | LCD 侧迭代既有 | 先 probe instance 可改性，改 text override / 尺寸，不 detach、不自画 overlay |
| M42 / M42.2 / M42.3 | clone 建新帧 | clone 前 probe 源 paint（LCD 按钮渐变为 raw，属 file-level 合同，clone 后不改）；clone 后枚举 children；既有交付节点一律不动（新帧另建） |
| M47 | 改 text fontName | 先存 `textStyleId`，Verdana 不可加载 → Roboto fallback 后回绑 |
| M31 | 布局机制 | 新建卡 / 表单行走 Auto Layout；LCD 480×320 视口帧 + 浮层为 absolute（视口语义，允许） |
| M32 / M32.1 / M32.3 / M35 | 库优先 + 锁库 + affordance trace | 所有 `search_design_system` 带 `includeLibraryKeys: ['lk-057f6ba0…']`；gear = 复用文件内 `TouchScreen/Icon/settings`（trace 见 §4） |
| M-COLOR C1/C2/C3 | 填色 | Config-T 新增控件继承库 instance 绑定；LCD 自绘区按 M21.2 sibling 实测值 |
| M-INTEGRITY I1–I6 | 布局完整性 | 建前 probe 落点（I6）、建后 overlap/I3 复检、装饰元素 parent = 产品帧（I4） |
| M-FONT / M-TXT-ICON-AUDIT | 字号 + glyph | 注释卡 18/15/13/12/11（M23.14 优先）；产品区禁 Unicode glyph，选中标记用既有 vector 范式 |
| M43 | Overlay Text 长文本 | C1 输入框给 p50/p95/max 声明 + 截断说明（见 §5） |
| M-LIFECYCLE | 每批次后机检 | REST 缺 token → `use_figma` in-file 机检，禁伪造 PASS |
| domain M12 | 外部事件反馈 | 运行中改参数 = 阻断 + hint，不静默 no-op |
| LCD 双背景色硬规则 | LCD 页面 | 导航 + 底部 `#252525`，内容区 `#313131` |
| figma-technical-reference Q15 | Section 内定坐标 | Section 子节点 x/y 为 section-relative，落点用 `absoluteBoundingBox` 复验 |

### 2.3 state-completeness 枚举（first-class entity = Test signal parameter set）

| 状态 | 覆盖 |
|---|---|
| Read（当前值可见） | C1 / L2 ✅ |
| Update（改参数） | C1 下拉展开 C3 ✅ / L3 选项列表 ✅ |
| Create / Delete | N/A —— 参数集是设备单例，无增删（沿用 D1） |
| 单选 / 多选 | 全部为单选（下拉 / radio / 分段），无多选 🟡 无需帧 |
| 动作前 → 中 → 后 | 前 = C1/L2 idle；中 = C2/L4 运行中置灰；后 = 参数即时生效（无独立后态帧，PRD 注明实时生效） ✅ |
| 后置修改（运行中想改） | C2 / L4 置灰 + hint 明确「先 Stop」 ✅ |
| edge / 错误 | Overlay Text 超长 → 截断规则（§5）🟡 注释说明；无非法值（全为枚举选择） |
| 外部事件（domain M12） | 测试中插摄像头 → 已交付轮的 toast + 源字段联动（本轮不重复） ✅ 既有 |

---

## 3. M0 元素 → 组件映射表（真 key 已实测坐实）

### Config-T（file-level 语汇 = Config-T Local UI 库 + TVU DS 混用，按 sibling V4-1827 AFTER 帧实测）

| Element | 组件 / 来源 | key | Status |
|---|---|---|---|
| 全窗壳（顶栏 `Header` + tab 条 `Menu_2/*` + `line` + Tx `button/no icon` 1-4 + `CopyRight`） | clone 参考帧 `7485:1145`（含真 instance） | — | ✅ |
| Tab `Test Signal` | tab 条内 `Menu_2/Active` 槽位改字（原作废 NDI Source 槽位） | — | ✅ |
| 表单行容器 | `WebUI/Form/Item/Input` / `WebUI/Form/Item/Radio`（Config-T 库） | — | ✅ |
| Pattern / Resolution / Scan Type / Frame Rate 下拉 | `select box/filled`（TVU DS） | `bdcaffea5b617071f10fa7225b6c8932e4517ee2` | ✅ 实测 sibling instance |
| 下拉展开面板（C3） | `Drop down List/Select`（Type=Radio） | `a7f202124b7f7e315e1435ce05c942eb62fa898d` | ✅ |
| 选项行 | `Drop down List/Item` + `radio`（on / off） | on `891592e14b62d63caf3704c66d4a85e29d576d52` / off `fde5f10640c030f7a6e74a1f0e29b35fba2bbef4` | ✅ |
| Tone Mode / Timecode 时间源 单选 | `radio`（同上 key） | 同上 | ✅ |
| Timecode 开关 | `switch`（TVU DS component_set） | `bf16e8f5ba6b8bd85a0b75961d19589a08a5c3a5` | ✅ search 实测（带 includeLibraryKeys） |
| Overlay Text / hex 输入 | `WebUI/Form/Input&Pleaceholder`（Config-T 库，sibling 实测在用） | — | ✅ |
| Position / Text Size 分段 | `button/no icon`（Config-T 库；primary+green = 选中 / common+gray = 未选，同 Tx 选择器范式） | — | ✅ |
| Text Color 色块 | ⚠️ DS 无 color-swatch → 自画 rect（4px 圆角）+ hex 输入并列，标入库候选 → 回填 catalog | — | ⚠️ 自画 |
| Update / Start Test / Stop Test | `web button`（`clickable=no` = disabled 态） | `e01fe50e2ce71857a3a0bc2cc2ca3db72e6811d2` | ✅ |
| 分组分隔线 | clone sibling divider `7889:790`（raw `#434343`，file-level 合同） | — | ✅ |

### LCD（设备端自绘，不用 DS 库；范式来源全部实测坐实）

| Element | 范式来源 | 实测要点 |
|---|---|---|
| 480×320 屏体 / 顶带 / 底部 slot 条 / 右栏 | clone `9359:492` | 右栏 `video parameter` `9359:639`（x381 w84 h180）；Test Signal 按钮 `9359:640`（84×32，绿渐变 r6） |
| ~~齿轮入口~~ | ~~文件内既有 `TouchScreen/Icon/settings` instance `9359:560`~~ | **2026-07-29 按 D9 撤销**：home 屏底栏已有同源同形齿轮，同屏第二个齿轮＝两个相同图标指向不同目的地。已删除 instance `9592:571`，L1 右栏几何回滚到已交付帧原值 |
| **设置入口（改后）** | **`Settings` 二级列表 `5802:1074`**（page `5486:668`「Optimization of GUI 20250804」，底栏齿轮 → 主菜单 `5802:819` → 第一格 `Settings` 的落地页；帧名 `Config`、页标题 `← Settings`） | 480×320；bg `#252525`，VERTICAL Auto Layout gap 8 pad 6/0/6/0；导航条 46 高（绿返回箭头 24×24 @x16 + 标题 20 绿 `#7ed321` @x52）；内容区 480×**210** bg `#313131` pad 6/24/6/24 → 行宽 **432**；行 432×40 HORIZONTAL gap 12 pad 6/0/6/0，左 label 16 白 + 右值容器 FILL/MAX（右对齐）16 白 + 下向三角 vector 14×8 `#f1f1f1`；底栏 36 高 = `down`/`up` 62×36（remote instance）+ **file-local `LCD Button` `Type=Home, Status=Normal` 84×36** |
| 新增行 `Test Signal` | clone 同列表内 `Slot` 行 → 改 label + 值 | 值 = `Color Bars · 1080p30`（Pattern · Format 摘要）；三角设 visible（可下钻行，与 `Receiver` / `VoIP & IFB` 同）。⚠️ 源 `Slot` 行的值文本在源文件里是 `opacity 0` 占位（它在源帧被裁在可见区外），clone 会继承 → 已复原为 1；非下钻行的三角保留 `visible + opacity 0` 作占位以对齐右缘（5 行值右缘实测全部 3314） |
| 设置页（导航条 + 双背景 + 行 + 底部条） | **`8878:2`「Option B · Video Encode」= LCD 设置页 canonical 范式**（owner 2026-07-29 指定；原 clone `8487:11` 的栅格已按此重做） | 页 bg `#252525` / content-panel `#313131`；导航 46 高（绿返回箭头 24×24 @x16 + 路径式标题 20px `#7ed321`）；**内容容器 456 宽竖向 Auto Layout**；**行 = 456×42，pad 6/0/6/0，gap 12，counterAxis CENTER，底部 1px `#252525` 分隔线**；左 label 16px `#ffffff`，右控件容器 FILL + primaryAxis **MAX**（右对齐）+ gap 8；底部 36 高（`down`/`up` 62×36 + **OK 82×36 + Home 84×36**） |
| 分段 pills | `Item/normal` / `Item/active` instance（`8525:235/237/239`） | 32 高，clone 后改字 |
| **底栏按钮（OK / Home / Back / disabled）** | **file-local component set `LCD Button`**（`4518:3244`，key `6ddb4464c0b1ea41d867f75a9841c13dc9effc29`，remote=false） | 变体轴 `Type` = `Back`｜`Home`｜`Primary`，`Status` = `Normal`｜`Disabled`｜`Live`｜`Stop`。**OK = `Type=Primary` + 文本覆盖**（该变体默认文案是 `Start`，必须改写为 `OK`）82×36；Home = `Type=Home` 84×36；禁用态 = **`Status=Disabled` 真变体**（不用 opacity 凑）。文本为 Verdana（组件内自带，无需写字体）。**禁从其它页 clone 远端库的 `OK`/`Back` 组件**——那是另一套谱系 |
| Format 选项列表浮层 | **`5314:9520`「RVF from Receiver/ Options」= LCD 选项列表 canonical 范式**（owner 2026-07-29 指定；上一轮只 clone 了其中的面板 `5314:9564`，漏了字段绿框） | 面板 240×176，bg `#313131` + 绿 `#7ed321` 3px INSIDE 边框；行 240×35 bg `#252525`，选中行 240×**36** + 1px 绿边；选中 = 绿字 + 左侧 vector 标记（`5314:9566`，20×11.298 `#f1f1f1`）；**被编辑字段行加 3px `#7ed321` INSIDE 边框 + radius 2（范式 `5314:9552`），面板右对齐字段行右边缘、顶边与内容区顶端齐 → 两者绿描边连成一体**；▼▲ 翻动 |

---

## 4. M35 affordance trace

```
1. Affordance: settings-entry (intent: 进入测试信号参数设置)
2. Vocabulary scan: TouchScreen/Icon/settings ×7 in-file instances (9359:560 / 9359:746 / 9469:134 / 9480:177 / 9359:71 / 9517:594 / 9530:210)；DS 库 icon/Setting/Switch(9a6fdd67…)、icon/Setting/Setting
3. Same-screen occupancy check（2026-07-29 新增的第 3 步，见下方病灶）:
   目标屏 = L1 home idle。该屏底栏 Operation Icon 已有 TouchScreen/Icon/settings instance 9592:434（28×28）→
   本 affordance 的候选图标在同屏已被占用，且占用者指向「全局 Settings」，与本 intent 的目的地不同。
4. Chosen: 不新增图标。复用底栏既有齿轮的既有导航树 —— 在 Settings 二级列表 5802:1074 末尾新增一行
   Test Signal（与 Delay / VoIP & IFB / Slot 同级），路径 = 底栏齿轮 → Settings → Test Signal → 参数页。
```

> **本条 trace 的病灶实证（2026-07-29 owner 走查，已回流 design-spec D9）**：上一轮此 trace 的 Chosen 理由原文是「复用文件内 `TouchScreen/Icon/settings` —— **与 LCD 底栏既有设置图标同源，视觉词汇一致，无需引第二套**」。把「和底栏那个长得一样」当成了**正面**依据写下来，而那个底栏齿轮**就在同一屏右下角** → 同屏两个同源同形齿轮指向不同目的地。
>
> 根因：M35 trace 原三步（intent / vocabulary scan / chosen）只校验「候选图标在**文件**词汇里有没有先例」，**不校验「候选图标在目标屏内是否已被别的目的地占用」**——库优先 / 词汇复用规则在此反向致害。故本 trace 起加入第 3 步 **same-screen occupancy check**：先枚举目标屏内该图标（及同族图标）的既有 instance 与各自目的地，命中即禁止复用，改走既有导航树。

```
1. Affordance: value-picker-disclosure (intent: 行尾标记表示该行可展开选值)
2. Vocabulary scan: 参考帧 8878:21 Path（14×7.908 下向三角 `#f1f1f1`，HDR/HLG 行）；LCD 文件内 5314:9540/9545「向右-实心」GROUP（28×28 右向三角）
3. Chosen: **复刻 8878:21 的下向三角**（owner 指定设置页范式；2026-07-29 走查推翻上一轮的圆圈 › 右尖括号）——自绘 vector，非 Unicode glyph
```

```
1. Affordance: status-positive (intent: 选项列表里标出当前生效项)
2. Vocabulary scan: 5314:9566 Path vector（选中行左侧标记）+ 选中行绿字
3. Chosen: 复刻 5314:9565 选中行范式（绿字 + 左侧 vector），禁用 ▶ Unicode
```

```
1. Affordance: field-under-edit (intent: 让展开的选项面板与它属于哪一行产生视觉归属)
2. Vocabulary scan: 5314:9552 字段容器（3px #7ed321 INSIDE + radius 2）+ 5314:9562 缺口外框 vector，二者与面板 5314:9564 的绿边共同构成连续轮廓
3. Chosen: 给被编辑行加同规格绿框，面板右对齐该行右边缘 → 行的右段与上下边被面板遮住，天然形成 canonical 的连续轮廓，无需再画缺口 vector（2026-07-29 owner 指定 5314:9520 为选项列表默认范式）
```

---

## 5. Field-Length Distribution 声明（Overlay Text，M43 UX 侧镜像）

| 维度 | 值 |
|---|---|
| 典型长度 p50 | 8–12 字符（`STUDIO A` / `CAM-01 TEST`） |
| p95 | 24 字符 |
| 最长理论值 | 32 字符（输入框上限，PRD 写明） |
| 可复制语义 | 否（纯叠加显示文本） |
| 截断业务影响 | 叠加文本超出画面安全区 → 画面侧按像素宽裁切；Config-T 输入框内超长走单行滚动，不 wrap |

---

## 6. M49 Design Quality Contract（lite）

- **Baseline**：LCD = page `9343:2` Section `9402:59` 既有 4 屏交付集（`9359:492` 起）；Config-T = page `7452:2` 的 V4-1827 Round-3 交付集（帧 / 卡 / PRD 范式）。
- **Keep**：LCD 既有 4 屏（`9359:492` / `9359:678` / `9469:65` / `9480:108`）+ 既有 PRD/UX/Journey 卡内容一律不动，本轮只新增；Config-T 既有 page 不动。
- **Change**：LCD 新增 4 屏 + 新 AFTER 子 Section + 本轮 UX/Journey 卡；PRD `9343:3` 追加「测试信号参数」段。Config-T 新建 page + 3 帧 + PRD/UX/Journey/Jira 卡。
- **Remove**：None（无删除授权 → 不删不隐藏任何 baseline 内容）。
- **Do not touch**：`9530:140` 方案对比 Section、`9359:2` BEFORE Section、V4-1827 全部节点。
- **Semantic pattern**：同类「从枚举里选一个值」→ Config-T 一律 `select box/filled` + `Drop down List/Select`；同类「≤3 个短选项就地切换」→ Config-T `button/no icon` 分段 / LCD `Item/active|normal` pills；同类「二元开关」→ `switch`。
- **Feedback UI inventory**：本轮唯一反馈类元素 = 运行中不可改的 inline hint（semanticClass = inline alert，两端同措辞同位置，no-action）。不新增 toast / modal。
- **Content contract**：见 §7 Canonical Terms。
- **Simplicity**：Config-T 单屏承载全量参数但按 3 组 + 2 分隔线分块；LCD 只 3 行（不镜像全量），运行中态复用同屏 disabled，不新增独立页面。

---

## 7. Canonical Terms（全 mockup / PRD / handoff 严格 reference）

> ⚠️ **2026-08-06 轮三十（D41 ①）—— 提交动作措辞按端统一，本段其余条目不受影响**：
> | 语境 | canonical | 禁用 |
> |---|---|---|
> | Config-T 提交动作 | **`Apply`** | `Update` / `Save` / `Submit` / `OK` |
> | LCD 提交动作 | **`OK`** | `Apply` / `Save` / `Submit` |
> | 提交成功提醒 | `Parameters applied — test signal reconnected.` | — |
> | 提交失败提醒 | `Couldn't apply parameters — test signal unchanged.` | — |
> | LCD 「带未应用改动离开」 | **无确认步骤、直接丢弃**（D41 ②） | 不要写 `Confirm discard changes?`（那是 Config-T 专属） |


| Concept | EN canonical | ZH canonical | 禁用同义词 |
|---|---|---|---|
| 测试信号（无源时推送的循环图卡 + 1kHz） | `test signal` | 测试信号 | ❌ test pattern signal / 测试流 |
| 图卡图案 | `Pattern` | 图案 | ❌ Test Pattern / 图卡类型 |
| LCD 侧合并预设（分辨率 + 扫描方式 + 帧率） | `Format` | 格式 | ❌ Resolution / 制式 / Video Format |
| 提示音模式 | `Tone Mode` | 提示音模式 | ❌ Audio Tone / Beep Mode |
| 时间码叠加 | `Timecode` | 时间码 | ❌ Time Code / TC |
| 画面叠加文字组 | `Overlay` | 叠加显示 | ❌ Watermark / OSD |
| 开始 / 停止测试 | `Start Test` / `Stop Test` | 开始测试 / 停止测试 | ❌ Start Stream / Stop Live |
| 提交参数改动（Config-T） | `Update` | 更新 | ❌ Save / Apply / 保存 |
| 提交参数改动（LCD） | `OK` | 确定 | ❌ Save / Apply / Done |
| 回上一级（LCD） | 左上角返回箭头（无文字按钮） | 返回 | ❌ 底栏 `Back` 按钮 |
| 回待机首页（LCD） | `Home` | 首页 | ❌ Exit / 退出 |
| 运行中禁改提示 | `Stop the test to change parameters` | 停止测试后才能修改参数 | ❌ Cannot edit while running |

---

## 8. 交付节点索引（建完回填）

> **2026-08-06 轮三十新增（D41 ③ 提交结果双态）**：
> | 帧 | node | 说明 |
> |---|---|---|
> | LCD `L6` | `9965:610` | OK applied · success toast（就地改造自轮二九那个「discard」帧 —— 该帧当时只是 L5 的复制、面板从未建出） |
> | LCD `L7` | `9988:647` | OK failed · error toast（clone L5，提交键免切变体） |
> | LCD annot | `9971:404`（重写）/ `9989:459`（新建） | B7 / B8 |
> | LCD 连线 | `9988:731` | B7→B8，两端 Δ3px |
> | Config-T `CT7` | `8418:1356` | Apply succeeded（toast `8419:1682`，Apply `Enable=no`） |
> | Config-T `CT8` | `8418:1463` | Apply failed（toast `8419:1937`，Apply 保持 `Enable=yes`） |
> | Config-T annot | `8418:1570` / `8418:1571` | CT7 / CT8 |


| 交付物 | 节点 |
|---|---|
| Config-T page / feature Section | page `8075:2`（`< V4-2376 > Test Signal Parameters · Config-T 20260728`，画布 0.418）/ Section `8075:1000` |
| Config-T C1 / C2 / C3 | `8075:1001` / `8081:447` / `8081:536`（C3 下拉浮层 `8081:2408`）|
| Config-T PRD / UX / Journey / Jira | `8084:517` / `8085:517` / `8086:517` / `8083:999`（hyperlink 已验）|
| Config-T 帧 caption | `8087:517` / `8087:518` / `8087:519` |
| LCD AFTER 子 Section | `9592:365`（在 feature Section `9402:59` 内）|
| LCD L1 / **L1.5** / L2 / L3 / L4 | `9592:366`（**齿轮 `9592:571` 已按 D9 删除，右栏回滚**）/ **`9634:271`（新增 Settings 列表，内容区 `9634:320`，新行 `9636:276`）** / `9593:536` / `9594:214`（浮层 `9593:942` @228,61）/ `9594:251` |
| **caption 序号 ↔ 帧对应**（2026-07-29 二轮，因插入 L1.5 而重编号） | ① = L1 `9592:366` · ② = L1.5 `9634:271` · ③ = L2 `9593:536` · ④ = L3 `9594:214` · ⑤ = L4 `9594:251`（帧名仍用 L1/L1.5/L2/L3/L4 记号，两套编号均自上而下单调递增） |
| LCD 2026-07-29 走查重做新增节点 | 内容 Auto Layout 容器 L2 `9608:214` / L3 `9610:216` / L4 `9610:217`；下向三角 caret L2 `9609:214`·`9609:215` / L3 `9610:405`·`9610:406` / L4 `9610:410`·`9610:411`；OK 按钮 L2 `9609:405` / L3 `9610:407` / L4 `9610:412`（L4 opacity 0.4） |
| LCD 走查已删除节点 | 圆圈 › chevron group `9593:954`·`9593:959`·`9594:236`·`9594:245`·`9594:273`·`9594:282` |
| LCD caption / 连线 | caption `9595:214`(①) · **`9641:276`(②，新增)** · `9595:215`(③) · `9595:216`(④) · `9595:217`(⑤) / 连线 4 条 `9595:218`(①→②) · `9595:221`(②→③) · `9595:224`(③→④) · **`9634:268`(④→⑤，新增)**，锚点两端 Δ3px |
| LCD PRD 追加段 / UX 卡 / Journey 卡 | `9599:214`(§4b) + `9599:215`(§5b) 于 PRD `9343:3` / `9597:214` / `9598:214` |
| 布局回收 | 既有 Journey 卡 `9396:59` → (3880,1520) → **2026-07-29 二轮再下移到 (3880,1647)**（本轮 UX 卡 `9597:214` 因 Acceptance 加条目从 1309 增高到 1392，撞上老卡 67px）；sub-Section `9592:365` 高 1730→**2180**（插入 L1.5 后 5 帧 y = 60/450/900/1350/1800）；feature Section `9402:59` 宽 2807→5360、高仍 2560 |
| **参考物落地（非交付物，置于交付 Section 左侧）** | LCD：page 级 Section `9625:217` @(-2832,505)（范式 clone `9625:219`/`9625:287` + 参数面板图 `9625:345` + caption `9626:271–273` + 三列对照表 `9627:271–274`）· Config-T：page 级 Section `8095:517` @(-1100,0)（`8094:517–521`）|
| handoff | `TVU Pack/docs/handoffs/2026-07-28-v4-2333-test-signal-parameters-handoff.md` |

### 8.1 走查轮四重构后的节点索引（2026-07-29 晚，替代上表的 LCD 段 —— 上表保留作历史）

owner 拍板「一个 feature 只有一个 AFTER 流程图」（design-spec **D12**）后，LCD 交付集已合并进单一 Section，节点归属全部变化：

| 项 | 现状 |
|---|---|
| **AFTER Section（唯一）** | `9359:491`「AFTER — Transmission Test + Test Signal Parameters（同起点 · 两条线）」1990×2240；旧 sub-Section `9592:365` 已删（空） |
| **共同起点** | ① `9359:492` @(40,40) —— 07-09 已交付帧本体；**本轮重复起点 clone `9592:366` 已删**（含其 caption `9595:214`） |
| **线 A（直接开测，07-09 已交付）** | A1 `9359:678` @(40,490) · A2 `9469:65` @(40,940) · A3 `9480:108` @(40,1390) |
| **线 B（参数设置，本轮）** | **B1 `9672:257` @(1000,40)** = clone canonical 主菜单 `5802:819`（补齐齿轮→Settings 之间缺失的一跳）· B2 `9634:271` @(1000,490) · B3 `9593:536` @(1000,940) · B4 `9594:214` @(1000,1390) · B5 `9594:251` @(1000,1840) |
| **caption（编号体系已改）** | ① `9495:2` · A1 `9495:3` · A2 `9495:4` · A3 `9495:5` · **B1 `9672:281`（新建）** · B2 `9641:276` · B3 `9595:215` · B4 `9595:216` · B5 `9595:217` —— 线 A caption x=540 / 线 B caption x=1500 |
| **连线 8 条（两端 Δ3）** | 线 A：`9490:4`/`9490:7`/`9490:10` @x272 · 线 B：`9595:221`/`9595:224`/`9634:268`/**`9671:257`(新建)** @x1232 · **①→B1 横向分叉 `9673:306`** @(517,196) 480×8（白点 ELLIPSE + cyan RECTANGLE 横段 + POLYGON 箭头拼装，**不拉伸既有连线 VECTOR** 以免箭头变形）；原 64 高连线 `9595:218` 已删（间距不匹配） |
| **L3 面板新增行** | `9661:4779`/`9661:4781`（owner 手加的占位，本轮填 `720p50`/`720p60`）+ **`9665:276`（新建，`1080i60`）**；面板 `9593:942` ~~固定回 canonical 240×176~~ → **2026-07-30 轮五按 owner 拍板改 `240×211`**（放出第 6 行 `1080p60` 进首屏，见 design-spec **D13**）+ `clipsContent`；第 7 行 `2160p30`（`9593:952`）仍被裁、靠 `▼▲` 翻页 |
| **L3 连体绿框（§M17.1 唯一实现者）** | **`Rectangle 1009` `9658:4777`** @(4,47) VECTOR，`fills[0].visible=false` + 绿色 `strokes` w=2 CENTER，阶梯形连体路径（左侧横条 = `row · Format` 行框 abs 88→130 · 右侧块 = 面板框）。**手法与 canonical `5314:9520` 的 `Rectangle 4 (Stroke)`（`5314:9562`）同源**——两边都是"面板自身 stroke 关闭、靠一个手画 VECTOR 画连体框"。**2026-07-30 随面板同步 224.5 → 211**（绿框底 258 vs 面板底 257 贴合）。⚠️ **勿删**：它是该帧唯一的绿框来源，删掉 §M17.1 范式整体消失（07-29 曾误判为"灰色残留待删"，因只读了 `fills` 没读 `strokes`）|
| **L1.5 列表补回行** | **`9668:276`（Receiver）· `9668:281`（Encoder）** = clone canonical `5802:1119`/`5802:1124`，字体实测 Verdana（正确）；`Test Signal` 行 `9636:276` 移到 index 1；容器 `9634:320` pad 恢复 `6/24/6/24` |
| **feature Section** | `9402:59` 6210×2620；4 张交付卡改横向单行：旧 UX `9393:59` @(3130,195) · 旧 Journey `9396:59` @(3890,195) · 本轮 UX `9597:214` @(4730,195) · 本轮 Journey `9598:214` @(5490,195) |

**M0 补一行**（LCD 段）：`B1 主菜单页` → 范式来源 = clone 同文件 canonical `5802:819`（`Settings` 主菜单，480×320，第一格 = `Settings`），零改动引用、字体全 Verdana。

### 8.2 hint 类节点全集（2026-07-30 轮六实测，替代轮五「三处 hint」的不全记录）

> **Scope 声明（§M-DISCIPLINE.SCOPE）**：覆盖 LCD page `9343:2` 的 **9 个产品帧全集**（①/A1–A3/B1–B5），**含 INSTANCE 子树**；命中判据 = 图层名或文案匹配 `hint|set in|Stop the test|Config-T|Configuration page|read-only`。

| 帧 | 节点 | 图层名 | 文案 | opacity | 状态 |
|---|---|---|---|---|---|
| ① `9359:492` | `9373:70` | `Test Signal hint` | `Tap Test Signal to test the link` | 1 | 07-09 已交付，无 drift（轮五漏统）|
| B3 `9593:536` | `9593:981` | `hint · Config-T only groups (read-only)` | `Timecode: On · Local Time    Overlay: Off — set in Configuration page` | 1 | 正确样本（D7 已交付）|
| B4 `9594:214` | `9594:250` | 同 B3 | 同 B3（**2026-07-30 轮六统一**，原为 `— set in Config-T`）| **1**（轮六由 0 改正）| D7 已交付；被 Format 面板遮右段 149px、左段可见 216px = 真机物理事实 |
| B5 `9594:251` | `9594:287` | `hint · stop the test to change parameters` | `Stop the test to change parameters` | 1 | 名实相符，无 drift |

- 四处样式同源：`Roboto/Regular` 12 · `lineHeight PIXELS:14` · `letterSpacing PERCENT:0` · fill `#8a8a8a` · 全单段 · 均帧内直属（非 instance 内）。
- **轮五「三处图层名与内容不符」一条已被推翻**：三处名实全相符（B5 的名字本就是 `hint · stop the test…`）。病灶 = 看了 B3/B4 的名字就推断第三处，未实测 —— §M-DISCIPLINE.SCOPE 第 3 类错误在该规则立完的当轮复发。详见 handoff §1j 末尾表 + §1k-B。
- 这四段 Roboto 仍属 88 处字体债（产品帧目标字体 Verdana），轮六未动 fontName。

### 8.3 交付层收敛后的节点索引（2026-07-30 轮六，替代 §8.1 的交付卡段）

owner 判定 feature Section 内容过多 → 按「职责分层 + 每层每个事实只说一次」收敛。**四张同类卡合并成两张**（与本轮 PRD 的追加模式对齐）。

| 项 | 现状 |
|---|---|
| **feature Section** | `9402:59` **4610×2620**（原 6210×2620）· children **4**（原 6） |
| **PRD（未动）** | `9343:3` @(111,195) 680×2380 · 7139 字符 |
| **AFTER Section** | `9359:491` @(1040,215) 1990×2240（未动结构；内部 5 个本轮 caption 已瘦身） |
| **UX 交付卡（唯一）** | `9597:214` @(3130,195) 680×**2106** · **6554 字符**（合并两卡 10,704，−39%）· 名 `UX · Transmission Test + Test Signal Parameters (RPS One LCD) — Delivery notes (V4-2333)`。Changes 段内分 `① Transmission Test — shipped 07-09` / `② Test Signal Parameters — this round` 两小节（新增 `sub` 样式档 Roboto/Medium 13 · lh20 · cyan `#33A4FD`）。demo video hyperlink（`watch`/`查看` → `youtu.be/lG5LZNhfyGM`）已随整段覆盖重建 |
| **Journey 卡（唯一）** | `9598:214` @(3890,195) 680×**1236** · **3658 字符**（合并两卡 5075，−28%）· 名 `User Journey Map · Transmission Test + Test Signal Parameters (LCD) (V4-2333)`。canonical 5-stage 骨架，旧卡 5 个任务态按语义归并；**删 `Thoughts` 字段**、Touchpoints 并进 Actions、Pain+Opportunities 合成 `Pain → Fix` |
| **已删** | 旧 UX 卡 `9393:59`（4621 字符）· 旧 Journey 卡 `9396:59`（1710 字符）—— 内容已并入上面两张，非丢弃 |
| **本轮 caption（瘦身后）** | 只留「标题 + Δ 行（EN/ZH）」，与 07-09 基准（均 172 字符）对齐：B1 `9672:281` 421→**197** · B2 `9641:276` 1556→**525** · B3 `9595:215` 780→**460** · B4 `9595:216` 711→**532** · B5 `9595:217` 517→**354**。删掉的三段 = `Why:`（UX 卡已有）/ `Invariants:`（实现细节属 design-record）/ **`Rules in play:`（内部规则编号，dev/QA 不需要）** |
| **PRD（轮六后半重构）** | `9343:3` @(111,195) 680×**2092**（原 2380）· **6207 字符**（原 7139，−13%）· children **7 = Title + §1–§6**（canonical 6 段，**无字母后缀段**）。`§4b`(`9599:214`) 与 `§5b`(`9599:215`) **已合并进 `§4`(`9345:2`) / `§5`(`9345:3`) 并删除**，需求重编号 **1–11 连续**（机检 `requirementNumbers` 无断号）。`§1 Source` 四个 hyperlink（V4-2333 / FB-9937 / HubSpot 45628160626 / demo video）未受影响 |
| **交付层总量** | 29,783 → **21,379 字符（−28%）**；PRD 6207 · AFTER 4960 · UX 6554 · Journey 3658 |
| **feature Section 终态** | `9402:59` **4610×2495**（原 6210×2620）· 高度收到实际内容 + 40 边距 · absBottom 3000，距下方 `TEST Mode Identity` Section（y 3215）余量 **215** |

**PRD 重构删掉的三类内容**（详见 handoff §1k-D）：① **互斥条目** —— 原 `req 4`「不提供图卡类型选择、不提供参数设置」与原 `req 5`「Config-T 本期不做」已被衍生轮 D2/D4 推翻，`§5` 末条「v1 不暴露任何图卡类型/参数选项」同理，三条均删（留着 dev 会读成"本期不做参数"）② **设计决策** —— 原 `req 13` 的 4 跳路径 / 第 2 行落点 / 行值摘要下沉 UX 卡 Interaction，PRD 只留「入口挂既有 Settings 树、首页不新增入口」③ **跨 surface 内容** —— Config-T 全量参数集与其默认值（Text Color / Overlay position / text size）指向 Config-T 自己的 PRD（`8084:517`），本卡是 LCD PRD。

**顺带修的 4 处 stale**（详见 handoff §1k-C）：① L1.5 caption 前后矛盾（Δ 说"第 2 行不是末尾"、`Invariants` 说"追加末尾"——轮四改落点时漏改，删段即消解）② L2 caption `Config-T` → `Configuration page`（M44）③ L3 caption「RPS One 硬件支持」→ D10 的微服务/mediahub 口径 ④ REFERENCE 对照表 `9627:273` `Cont.` → `Continuous`（轮四改了 L3 帧却漏了对照表）。

**机检**：`childOverflow []` · `childOverlap []` · page 级 Section 两两求交 `[]` · §2a ①轮 8 模式扫全 page（含"已删卡 ID 残留"）真命中 1 已修。Section 高度未动 —— 合并后最高卡 2106 < 可用 2425。

---

## 9. 遗留（不进交付物，仅本记录 + Jira 讨论）

- Format 预设清单的硬件支持范围需 dev（Edward）核定；PRD 用「以 RPS One 实际支持能力为准」表述，不写 TBD（§No Open Questions in Deliverables）。
- Config-T 参数 per-Transmitter vs 全局：本轮按 per-Tx 画（与 IP Source / NDI 一致），PRD 以「按 Transmitter 分别保存」正向陈述，dev 若否再改。

- **【轮三十新增】LCD `OK` 与 `V4-1542`「configure LAN IP on the touch screen」的 `Apply` ×7 跨页不一致** —— owner 以设备实机为准拍板用 `OK`（实测反证已完整呈报，见 handoff §1k-AE ③）。若后续要把 LCD 提交措辞真正统一，`V4-1542` 是要一并改的那一处。
- **【轮三十新增】`LCD Button` 仍无 `OK` / `Apply` 变体** —— `Type=Primary` 默认文案是 `Start`，现有 label 全靠文本覆盖 + Verdana 本环境不可写 ⇒ **每个新 LCD 帧的提交键文案都要 owner 手改**。长期解法仍是给组件加变体（本轮未做，owner 未拍板）。
- **【轮三十补正 · Open scope，待 dev 定】提交失败的原因枚举与各自文案** —— 效果图上只画了一个通用失败态（`Couldn't apply parameters — please try again.`，只说「失败 + 下一步」）。真实可能的失败原因（设备忙 / 写入被拒 / 后端服务无响应 / 制式组合不被硬件支持 …）与每种对应的文案，**以开发提供的错误码为准**，处理方式同 D25「Format 取值以开发清单为准，图上为示例」。发 Jira 时顺带问 **Edward（LCD）/ Bonnie（Config-T）**。两端 UX 卡 Data Contract 已写明这一点。

