---
id: v4-2312-channel-status-indicator
title: 通道 Lock/Live 状态提示器 (TM1100 LCD 触屏)
doc_type: design-record
status: in-dev
target_release: "8.4"
last_updated: 2026-06-02
sources:
  - { type: jira, ref: "V4-2312", url: "https://tvunetworks.atlassian.net/browse/V4-2312" }
  - { type: jira, ref: "FB-9831", url: "https://tvunetworks.atlassian.net/browse/FB-9831" }
  - { type: slack, ref: "#tvu-one thread 2026-05-14", url: "https://tvunetworks.slack.com/archives/C021E1BNTPF/p1778736814810419" }
figma:
  file: 0054ib0nLmt27bC3QlGDl7
  nodes:
    - { id: "5802:1373", label: "Live/VoIP/Speaking monitor home (baseline landing)", url: "https://www.figma.com/design/0054ib0nLmt27bC3QlGDl7/Touch-Screen-v7.7---8.0--20240220?node-id=5802-1373" }
---

# V4-2312 设计 Spec · 通道 Lock/Live 状态提示器(TM1100 LCD 触屏)

- **Jira**：[V4-2312](https://tvunetworks.atlassian.net/browse/V4-2312) · Task · To Do · Medium · Assignee: Nancy Zeng
- **父 Epic**：[V4-1676](https://tvunetworks.atlassian.net/browse/V4-1676) RPS One Software 8.4 bugs & tasks controller
- **关联**：[FB-9831](https://tvunetworks.atlassian.net/browse/FB-9831)（Polaris feedback，implements）
- **来源 Slack**：[#tvu-one 线程 2026-05-14](https://tvunetworks.slack.com/archives/C021E1BNTPF/p1778736814810419)
- **作者**：Nancy Zeng　**日期**：2026-06-02　**状态**：草稿，待 Owner review → 进 Figma mockup

---

## 1. 背景与根因（从 Slack 解码）

### 现象
某路喂 4K SDI 源时，背包本机屏幕显示输入视频正常、系统能检测到、授权正常，但在 **R（接收端）上显示「无源 / No Source」**（多台 R 复现）。同源换 HD 正常；同源换另一台背包正常 → 问题在这台背包的逻辑。

### 根因（fujianfang 在 Slack 给出）
**这不是 bug，是 TM1100 固件的刻意限制。** 因 CPU 性能不足，固件**禁止「第一路 4K + 第二路 1080P 同时 live」**。当第二路正在与某 R 直播时，若第一路是 4K，第一路就会在 R 上显示无源。

### 痛点
发生时**背包触摸屏上没有任何提示**，客户无法感知「第一路为什么在 R 上无源」，只能翻 pack log / tpds 上报排查。

### 本 Spec 要解决的
在背包 LCD 触屏上加状态提示，让用户当场看懂：**哪一路被占用 / 不可用、被谁占用、以及背后的规则**——不用再翻 log。

---

## 2. 范围

| 维度 | 内容 |
|---|---|
| **界面** | TM1100 本机 LCD 触屏 UI（Touch Screen Figma，fileKey `0054ib0nLmt27bC3QlGDl7`，480×320） |
| **落点屏** | 直播监控主屏 **"Live/VoIP/Speaking"**（node `5802:1373`）——2×2 四宫格 = 那「4 路通道」 |
| **In scope** | 触屏上的通道 lock/live 状态提示 + 被挡 4K 路的「不可用 + 规则」说明 |
| **Non-goals** | ❌ 不改 R / Receiver UI（不在 TVU Pack scope，需另开票）；❌ 不修 4K 并发限制本身（预期行为）；❌ 不动 HD 路径（已正常） |

---

## 3. Baseline 参考（已从 Figma 探出，本设计必须对齐其视觉语言 M21）

| 参考 | node-id | 截图 | 用途 |
|---|---|---|---|
| 直播监控主屏（落点） | `5802:1373` | [live-monitor-home.png](./assets/v4-2312-baseline/live-monitor-home.png) | 指示器最终落在这张屏的四宫格 + 右侧信息面板 |
| Slot 状态配色规范 | `7615:14` | [slot-status-logic.png](./assets/v4-2312-baseline/slot-status-logic.png) | 现有「色点 + 状态词」语言 |
| 区分可用/直播 receiver | `6922:24862` | [distinguish-receiver.png](./assets/v4-2312-baseline/distinguish-receiver.png) | 现有「红色文字 = live」范式 |

### 主屏现有结构（`5802:1373`）
- **顶栏**：红色 `● LIVE` + 源格式 `SDI-1080i59.95` + `HDR` 徽标 + 右侧状态图标。
- **四宫格视频区**（`5802:1465`，358×206）：每格左上角绿色数字徽标 `1/2/3/4` = 各路通道。
- **右侧信息面板**（`5802:1438`）：`Stop` / `Receiver PM_X7L` / `Bitrate` / `Delay` / 编码 = 当前直播通道逐路信息。
- **底栏**：绿色圆点 = modem slot 状态。

### 现有状态语言（必须沿用，不另造）
- **Slot 配色**：🟢 绿 `OK/已连接`、⚪ 灰 `No Device`、🔴 红 `Dialing...`、🟠 橙 `Connecting...`。
- **Receiver 列表**：**红色文字 = 正在直播**；白色文字 = 在线/可用；选中 = 背景高亮 + 左侧三角标记，**三角恒为白色 `#f1f1f1`，不跟状态变色**。
  > ⛔ 本行原文「选中 = 背景高亮 + **绿色图标**」已作废（owner 2026-09-16 定调）。那句抄自 2025-11-05 需求图 `6922:24862`——该图里三角画的确实是绿色（实测像素 `#69ad48`），但 **LCD canonical 与线上所有 LCD 帧一律是白色 `#f1f1f1`**（`lcd-canonical-spec.md` §2 写死，实测 `8062:7022` / `8153:558` 均为 `#f1f1f1`）。判据：**三角是「光标停在哪一行」的位置指示，不是状态色**；让它跟着状态变色会和"红=live / 白=可用"这套状态语言抢同一个信号（§C8 一号多义）。
- **结论**：**红色在这套 UI 里已等于「直播中」**。本设计的「live」跟红色走；被挡的 4K「不可用」**不可用红色**（红是 live 专用），改用中性/灰或橙系，最终配色进 Figma 时按 slot 图例定（见 §7 待办）。

---

## 4. 状态与内容模型

通道共 4 路（1 主 + 3 非主）。每路状态：

| 状态 | 触发 | 表现（贴在对应宫格） |
|---|---|---|
| 空闲 Idle | 无 live/lock | 维持现状，无额外装饰 |
| 直播中 Live | 该路与某 Rx 直播 | 沿用红色 live 语言（角标/文字红） |
| 占用 On Hold | 被某 Rx 占用但当前无源（Live On Hold） | 状态词 `On Hold / 占用中` |
| 不可用 Unavailable（4K 被挡） | 该路喂 4K，因另一路正在直播被固件挡住 | 状态词 `Unavailable / 不可用` + 就地一句因果 |

**优雅降级（Rx 名）**：占用方 Rx 名拿得到就显示（如 `PM_X7L`），拿不到显示「某接收端 / a receiver」。取决于固件接口（见 §7 待办）。

---

## 5. 交互与可见性（方案 A · 已选定）

- **情境出现**：仅当至少一路 live / on-hold / unavailable 时，提示才出现；全空闲时主屏零干扰。
- **落点**：状态贴在**对应宫格**（延用已有数字角标，不另造控件）。被挡的 4K 那格（无视频）就地带一句因果。
- **详情**：复用**右侧 Receiver/Bitrate/Delay 信息面板**——在其中补「lock/live 状态 + 占用方 + 规则」，**不新开面板**。
- **色调**：信息态，不报错。live 用现有红色语言；unavailable 用中性/灰（非红）。
- **触屏**：可点区 ≥ 44px。

---

## 6. 文案草稿（中英双语 · 简化版 · 待与 LCD baseline 术语对齐）

> 原则（用户确认）：详情**只给「当前状态(不可用) + 规则 + 被谁占用」**，不展开长篇因果、不给「停止第二路」这类操作步骤。

- **宫格状态词**：`Live / 直播中`（红，占用路）、`On Hold / 占用中`、`Unavailable / 不可用`（被挡 4K 路）
- **被挡 4K 路就地一句**：
  - EN: `4K unavailable — another channel is live`
  - ZH: 「4K 不可用：另一路正在直播」
- **右侧面板补充**：
  - 占用路：`CH2 · Live · {Rx}` /「第二路 · 直播中 · {Rx}」（拿不到名 → 某接收端）
  - 被挡路：`CH1 (4K) · Unavailable` + 规则一行 `4K and a second channel can't run at the same time` /「4K 与第二路不能同时直播」

---

## 7. 依赖 / 待办（进 Figma 前/中必须解掉）

1. **固件数据可用性**（找 fujianfang / renhu 确认）：LCD 能否拿到 ① 每路 live/on-hold 状态 ② 占用 Rx 标识 ③ 4K-conflict 触发标志。决定降级策略 + 因果文案能写多具体。
2. **被挡状态最终配色**：`Unavailable` 在现有 slot 图例里没有对应项（红=live 已占用）。进 Figma 时按 slot 配色规范定中性/灰/橙，做 sibling 对齐（M21）。
3. **落点精确化**：宫格角标扩展 vs 宫格内 overlay；右侧面板补充字段的具体布局——进 Figma 探 baseline 控件后定。
4. **最终 UI 术语**：跟 Touch Screen baseline 现有词对齐（「No Source」现用什么词、「LIVE」大小写等）。

---

## 8. 下一步

- 本 Spec 经 Owner review 后，进 **tvu-design-mockup 流程**：在 Touch Screen 文件新建 page（M45 命名 + M23.8 Jira 关联），基于 `5802:1373` 做 baseline + 各状态 frame + M23 双语 UX 交付卡 → F1 走查 → F2 persona。
- 注意：实现产物是 **Figma mockup**，不是代码；不走 writing-plans。

---

## 9. 决策记录（本次 brainstorm 拍板）

| # | 决策 | 理由 |
|---|---|---|
| D1 | 提示落 **LCD 触屏**，R UI 另算 | 项目 scope 只覆盖背包；Slack 也指触摸屏无提示 |
| D2 | 内容 = **状态 + 因果都要** | 既解决「哪路被谁占用」也解决「4K 为何无源」 |
| D3 | 出现方式 = **情境出现 + 复用右侧面板看详情** | 空闲零干扰；不新开面板省 LCD 空间 |
| D4 | **沿用现有状态语言**（红=live / slot 色点 / 状态词），不另造徽标 | M21 sibling 对齐，避免风格断层 |
| D5 | 详情**只摆事实**（状态+规则+占用方），不给操作步骤 | 用户确认，避免过度详细 |
