---
id: v4-1865-wifi-hotspot-mode
title: Config-T 双 WiFi 模块 + Hotspot OFF state
doc_type: handoff
status: in-dev
target_release: "8.4"
last_updated: 2026-05-29
sources:
  - { type: jira, ref: "V4-1865", url: "https://tvunetworks.atlassian.net/browse/V4-1865" }
  - { type: jira, ref: "FB-7775", url: "https://tvunetworks.atlassian.net/browse/FB-7775" }
figma:
  file: rJJjWWs51n2iFOlCIC7aYG
  nodes:
    - { id: "6601:2", label: "Config-T page — V4-1865", url: "https://www.figma.com/design/rJJjWWs51n2iFOlCIC7aYG/Config-T---Local-UI---v7.7---8.0--20240220?node-id=6601-2" }
---

# V4-1865 Mockup Handoff — Config-T 双 WiFi 模块 + Hotspot OFF state

**Date**: 2026-05-29
**Author**: Nancy Zeng
**Status**: Draft v1 — awaits walkthrough
**Jira**: [V4-1865](https://tvunetworks.atlassian.net/browse/V4-1865) (High · Joshua Tucker · parent V4-1676 RPS One Software 8.4)
**Linked customer ticket**: [FB-7775](https://tvunetworks.atlassian.net/browse/FB-7775)

---

## 1. Context

V4-1865 两项需求：
1. **TM1100 第二内置 WiFi 模块复用为第二 WLAN 客户端**（不再只做 hotspot 用途）— Config-T 端 UI
2. **关闭 Hotspot 广播能力**（不只是拒绝新客户端）— Config-T 端 UI

**Scope confirmed**：V4 only（不覆盖 TM1000V3）— Nancy 2026-05-29 拍板。
**Library**：legacy `Config T (Local UI) V7.7&v8.0`（不切 tvu-design-system 新库，沿用 baseline 视觉契约）。

---

## 2. Deliverables（Figma file `rJJjWWs51n2iFOlCIC7aYG`）

新建 page：[`< V4-1865 > Enable Reuse of TM1100 Pack Second Internal WiFi Module 20260529`](https://www.figma.com/design/rJJjWWs51n2iFOlCIC7aYG/Config-T---Local-UI---v7.7---8.0--20240220?node-id=6601-2) (`6601:2`)，插在 V4 (V8.0+) "To be developed" 段下首位。

| Frame | Node ID | 描述 |
|---|---|---|
| F0 · Baseline (current) | `6602:1949` | 直接 clone 自 baseline `892:4252` (TM3-1408 page) |
| F1 · Module 1/2 — Connected | `6602:2230` | 分页器 `< 1 / 2 >`，Module 1 连 wifi_name_3 |
| F2 · Module 2/2 — Scanning | `6602:2511` | 分页器 `< 2 / 2 >`，Module 2 扫描态（state 由 M23 卡描述，frame 视觉沿用 baseline） |
| F3 · Module 2/2 — Both ON | `6602:2792` | 分页器 `< 2 / 2 >`，Module 2 连不同 SSID（同上） |
| F4 · Hotspot OFF state | `6603:287` | clone 自 baseline `986:4557`，toggle ON→OFF swap，4 字段 + Apply + Connected Clients opacity 0.35 表 disabled |
| F5 · M23 UX Delivery Spec | `6614:1203` | 双语 spec 卡，6 段：改动清单 / 模块切换行为 / Hotspot OFF 行为 / 状态图 / 边界 case / dev handoff checklist |

每 frame 上方有 brand-green caption 标识 state。

---

## 3. Key Decisions

### 3.1 IA · 选项 A（复用现成 pagination 组件）
- Onboard WiFi 卡片右上角的 `pagination/2` 实例（baseline 显示 `< 1 / 1 >`）扩展成 `< 1 / 2 >` / `< 2 / 2 >`
- 每页 = 一个物理 WiFi 模块的完整配置
- **理由**：designer 已为这个 case 预埋扩展位；零视觉破坏；用户心智匹配"翻页 = 切到另一个模块"

### 3.2 Library · 沿用 legacy
- Config-T 文件是 hybrid（legacy `Config T (Local UI) V7.7&v8.0` + tvu-design-system 新库共存）
- 本任务严格沿用 legacy 视觉契约（参 [FIGMA_LINKS.md](../FIGMA_LINKS.md) 库依赖说明）
- 所有 instance 用 legacy 组件：`WebUI/Form/Item/Switch` / `WebUI/Form/Item Copy[/2/3]` / `WebUI/Form/Item/Input` / `WebUI/Form/Item/Radio` / `WiFi list module` / `pagination/2` / `Button/Disable` / `分割线2` / `Device Item` / `icon/file/copy 2`

### 3.3 字体替换 · Inter Regular ↔ Helvetica Neue Regular
- Baseline 文件用 Helvetica Neue + PingFang SC，Figma MCP 环境本地未装
- pagination 数字 text node（被改了 characters 的 6 个 node）替换 fontName 为 Inter Regular
- 视觉上 14px 数字看不出差异；属于 mockup file 常规处理（不影响其它 legacy 字段，它们靠 Figma fallback 渲染）

### 3.4 F2/F3 内部 SSID list 故意不深改
- 理由：内部 SSID list 是 high-effort / low-deliverable-差异化 工作
- 状态行为靠 M23 spec card 文字描述给 RD（scanning → spinner + "Scanning…" placeholder / 连接态 → 行名 + " (Connected)" 绿色 / 错误态 → inline error chip + Retry）
- frame 只提供视觉骨架 + pagination 数字 + caption 区分

---

## 4. Open Questions（待 PM/RD/customer 拍板）

⚠️ 见 F5 M23 卡 §5 "Edge cases & open questions"：
- **Bonding / load-balance**：两路 WLAN 是聚合带宽还是主备？ → 找 Danner 确认 RPS V164 patch 实际行为
- **Lock-to-current toggle 跨模块行为**：仅当前页还是全局？推荐 per-module
- **同一 SSID 在两模块**：允许还是 UI 屏蔽？推荐 UI 屏蔽 + toast "Already connected on Module 1"
- **关闭 Module 2 时如果 Module 1 在 bonding**：fallback 行为？找 RD 确认
- **Hotspot OFF 时如有连接客户端**：优雅断开 + toast 文案待 PM 拍板

---

## 5. Next-session Pickup

| 项 | 状态 | 备注 |
|---|---|---|
| Walkthrough 用户 | ⏳ | 与 Nancy / PM / Joshua Tucker 走查 |
| 边界 case 5 个回 customer | ⏳ | 用户决定后回 Jira comment |
| F2/F3 内部 SSID list 是否深改 | TBD | walkthrough 后看 PM/RD 是否要 frame-level 视觉差异 |
| LCD 端是否联动 | ⏳ | 待 reporter Joshua / Trevor Yao 确认；当前 ticket 只要求 Config-T |
| Dev handoff (Bonnie Zhou 接) | 等 walkthrough 通过 | M23 卡 §6 dev checklist 6 项可直接用 |

---

## 6. Process Notes（给下次 session AI / 自己）

- **MCP `get_metadata` 不带 nodeId 只返 1 page 是 bug** — 实际文件 62 page。下次扫多 page 文件用 `use_figma` + `figma.root.children` 直接 enumerate
- **MCP `get_metadata` `hidden=true` 节点 screenshot 返回 1×1 空图** — 用 `get_design_context` 强渲染绕过
- **`node.query('INSTANCE[name=pagination/2]')` 因 `/` 被 CSS selector 拒** — 改用 `findAll(n => n.type === 'INSTANCE' && n.name === 'pagination/2')`
- **legacy 文件 instance 跨页 clone + appendChild 保留 library binding**（实证：从 page `892:4251` clone `892:4252` 到新 page `6601:2`，所有 instance 渲染正确）
