跳转至

P1.U-dock-cleanup-9to4 · XiLink Stage 右 dock 裁剪(9 drawer → 4 + XiTest 四件套)

Worker:ClaudeA · 前端 / 部门:前端 P1-xilink / 预计:1.0d / 优先级:P1 / 状态:ready

🔍 触发与解锁链

  • 触发:ADR-AIOS-08 v1.1 §2.1 议题⑤(2026-05-29 17:25 accepted)· ADR-12 #5 P0.U-measurement-rms-fft-phase(8379de2)zombie 后 P0.K-shared-meter-dock 三组件(RMSMeter / SpectrumChart / PhaseChart)真业务就位 · 本 fork 直接复用 · 不阻塞。
  • 解锁条件:本 fork zombie 后,议题④ 子图画布(P1.U-subgraph-canvas + P1.U-subgraph-schema-extend)解除 right dock 风格冲突预备条件。

任务定义(基于 ADR-AIOS-08 v1.1 §2.1)

frontend_vue3/src/stages/xilink/drawers/ 9 drawers 裁剪到目标布局:

❌ 删除 2 个: - DrawerInspector.vue(属性检查 · 用户拍板裁剪) - DrawerPropertyPanel.vue(浮动属性 · 用户原话"不知道这个是干啥的")

✅ 保留 3 个(议题⑤ 核心): - DrawerEngine.vue(议题① 主战场 · 已被 P1.UA8-runtime-selector-ui dispatched 中) - DrawerLog.vue(日志) - DrawerMetrics.vue(议题③ 主战场 · 已被 P1.UA8-perf-monitor-frontend dispatched 中)

🆕 新增 XiTest 四件套(本 fork 主要工作 · 复用 P0.K-shared-meter-dock 真业务组件): - RMSMeter · 实时电平表(从 frontend_vue3/src/components/measurement-shared/RMSMeter.vue read-only 引用 · 8379de2 已就位) - FreqResponseChart / SpectrumChart · 频响曲线(从 measurement-shared/SpectrumChart.vue 引用) - PhaseChart · 相位曲线(同上) - RealtimeScope / WaveformChart · 实时 scope 时域波形(若 8379de2 未含 · 用 stub 占位 · 等 ADR-12 #6 zombie 切真接口)

⚠️ 观察处理(本 ADR 不删):DrawerConnection / DrawerModules / DrawerProfile / DrawerProject(与顶层 panel 重复 · 但移除可能破坏现有用户习惯 · 留 ADR-08 闭环后下季度评估)

完整 prompt(直接复制粘贴 worker 终端)

[U-thread]: P1.U-dock-cleanup-9to4
[部门]: 前端 P1-xilink
[Worker CWD]: d:/work/25_claude/workspace/AlgoDepartment/04_development/
[Occupies]: P1.K-xilink-drawers · P0.K-shared-meter-dock(read-only)
[优先级]: P1 · 1.0d
[ADR]: docs/08-implementation/40-aios/ADR/ADR-AIOS-08-xilink-stage-ux.md(v1.1)
[业务行为契约引用]: ADR-08 §2.1 议题⑤ 裁剪决议 + 实施约束(必须复用 P0.K-shared-meter-dock · 不允许在 stages/xilink/ 自行实装 meter)
[参考文档]:
  - ADR-AIOS-08 v1.1 §2.1(裁剪决议)+ §1.4(议题归属表)+ §2.3(议题③ DrawerMetrics 后续工作 · 本 fork 不动)
  - ADR-AIOS-07 §2.1.2 + §2.3 边界铁律 #2(P0.K-shared-meter-dock 抽出 · 严禁 stages/xilink/ 自行实装 meter)
  - 已就位代码(ADR-12 #5 8379de2):
    · frontend_vue3/src/components/measurement-shared/RMSMeter.vue
    · frontend_vue3/src/components/measurement-shared/SpectrumChart.vue
    · frontend_vue3/src/components/measurement-shared/PhaseChart.vue
  - 现有 stages/xilink/drawers/ 9 drawers + stages/xilink/RightDock.vue(或对应入口 · grep 确认)
  - 不动 ADR-08 议题①/②/③ 已 dispatched 的并行 fork:
    · P1.UA8-link-error-check(BottomProblems · §2.2)
    · P1.UA8-perf-monitor-frontend(DrawerMetrics 数据填充 · §2.3)
    · P1.UA8-runtime-selector-ui(DrawerEngine RuntimeTarget · §2.4)

【背景】
ADR-08 议题⑤ 是右 dock 5 议题中最简单的一项 · 工作量 1.0d。本 fork 仅做"裁剪 + 引用"· 不实装 meter 数学(沿用 ADR-07 §2.3 第 2 项铁律 · meter 全在 P0.K-shared-meter-dock 内 · 本 fork read-only 引用)。

ADR-12 #5(`8379de2`)三组件已 zombie · 真业务就位(RMSMeter / SpectrumChart / PhaseChart 各自含 ① 输入输出 ② 收敛判据 ③ 失败回退 ④ 用户操作流 ⑤ e2e 真值)· 本 fork 直接 import 用即可。

【执行步骤】(5 步)

Step 1 · 删除 2 drawer 文件 + 引用清理(0.2d)
  - 删除 frontend_vue3/src/stages/xilink/drawers/DrawerInspector.vue
  - 删除 frontend_vue3/src/stages/xilink/drawers/DrawerPropertyPanel.vue
  - grep "DrawerInspector|DrawerPropertyPanel" 全仓 · 删除所有 import / 注册引用
  - 检查 RightDock.vue(或对应 drawer 容器)tab 列表 · 移除两项
  - 兼容性:若用户存在持久化"打开过 DrawerInspector"的 localStorage / pinia state · 加 LEGACY_DRAWER_MAP 把旧 ID 映射到 'engine'(默认 fallback)

Step 2 · 新增 DrawerXiTest.vue(0.4d · 本 fork 主体)
  - 路径:frontend_vue3/src/stages/xilink/drawers/DrawerXiTest.vue
  - 内部 4 tab(RMS / FreqResp / Phase / Scope)· 用 ElTabs 或现有 stages/xilink 风格
  - 各 tab 直接 <RMSMeter /> <SpectrumChart /> <PhaseChart /> 引用 measurement-shared 组件(read-only props)
  - WaveformChart / RealtimeScope:
    · 若 measurement-shared/WaveformChart.vue 已存在(grep 确认)→ 直接用
    · 若不存在 → 用 stub(占位文字"等 ADR-12 #6 P0.U-measurement-transfer-waveform zombie")· 不实装真业务
  - 节点选择 sink-pre / physical-input(沿用 ADR-07 §1.3.1)· 复用 measurement-shared 的 MeterNodeSelector(若有)

Step 3 · 注册到 RightDock(0.1d)
  - RightDock.vue tab 列表加 'xitest' 项 · icon + label
  - 默认折叠 · 用户首次切到该 tab 时 lazy 加载 DrawerXiTest

Step 4 · vitest 单测(0.2d)
  - 新增 stages/xilink/drawers/__tests__/DrawerXiTest.spec.ts
    · case:DrawerXiTest 渲染 4 tab + 切换工作正常
    · case:RMSMeter / SpectrumChart / PhaseChart 引用解析正确(mock 输入 → 渲染存在)
    · case:LEGACY_DRAWER_MAP 把旧 'inspector' 映射到 'engine'
  - 不退化 frontend 现有 356 测试基线

Step 5 · 自查 + commit(0.1d)
  - npm run typecheck 全绿(0 error)
  - npm run test:unit 不退化(基线 356/3 · 新增预计 +3-5 case)
  - 检查:grep "self-implemented meter|new RMSMeter\(\)" 在 stages/xilink/ 应为 0(沿用边界铁律)
  - commit subject: refactor(P1.U-dock-cleanup-9to4): cleanup xilink drawers 9→4 (delete Inspector/PropertyPanel + add DrawerXiTest with shared meter components)
  - commit trailer 三元组:[step=5/5] [pid=P1] [uid=U-dock-cleanup-9to4] [occupies=P1.K-xilink-drawers+P0.K-shared-meter-dock-read] [files=stages/xilink/drawers/...,stages/xilink/RightDock.vue]

【验收】(stop 前必跑)

形式合规:
  ☐ npm run typecheck 全绿
  ☐ npm run test:unit 不退化(基线 356/3)+ 新增 case 全过
  ☐ grep "DrawerInspector|DrawerPropertyPanel" 在源码区返回 0(注释 / 历史归档允许残留)
  ☐ 不在 stages/xilink/ 自行实装 meter 组件(grep 验证 · 沿用 ADR-07 §2.3 第 2 项铁律)
  ☐ 不动 ADR-08 议题①/②/③ 已 dispatched 的 P1.UA8-* 三 fork 文件

业务行为契约(端到端真值 · 必跑):
  ☐ DrawerXiTest 4 tab 切换 e2e:RMS / FreqResp / Phase / Scope 各 tab 渲染对应组件 · 不报错
  ☐ 删除 2 drawer 后用户打开 RightDock · 仅看到 4 个有效 drawer(Engine / Log / Metrics / XiTest · 加上观察处理保留的 4 个 = 实际 8 个 · 但裁剪目标完成)
  ☐ LEGACY_DRAWER_MAP 兼容:旧 localStorage 'inspector' → fallback 'engine' · 不抛错

【commit】
- subject + 三元组 trailer 见 Step 5
- 7 天宽限期内三元组缺失仅 warning · 6/2 起 strict mode 硬拒

【禁止】(6 项红线)
1. ❌ 禁止在 stages/xilink/ 自行实装 RMSMeter / SpectrumChart / PhaseChart 等 meter 组件(沿用 ADR-07 §2.3 第 2 项铁律 + ADR-08 §2.1 实施约束)
2. ❌ 禁止动 ADR-08 议题①/②/③ 已 dispatched 的 P1.UA8-link-error-check / perf-monitor-frontend / runtime-selector-ui 三 fork 文件(BottomProblems / DrawerMetrics 数据 / DrawerEngine RuntimeTarget)
3. ❌ 禁止删除观察处理 4 drawer(DrawerConnection / DrawerModules / DrawerProfile / DrawerProject · 留下季度评估)
4. ❌ 禁止跳过 LEGACY_DRAWER_MAP(用户旧 localStorage 必须能 fallback · 不能抛错)
5. ❌ 禁止实装 WaveformChart 真业务(若 measurement-shared 中无 · 用 stub · 等 ADR-12 #6 zombie)
6. ❌ 禁止越界引入 stages/xilink/ 其他子目录代码(沿用 ADR-08 §2.5 边界铁律)

解锁链(本任务 zombie 后)

  • ✅ 议题④ 子图画布(P1.U-subgraph-canvas 2.5d · P1.U-subgraph-schema-extend 0.5d)解除 RightDock 风格冲突预备
  • ✅ DrawerXiTest 落地后,XiTest stage 可借鉴本设计(右 dock 共享 meter 组件复用模式)

风险评估

风险 缓解
RightDock 容器组件命名/结构与预期不符 Step 1 先 grep "RightDock
measurement-shared 组件 API(props / emit)变化 Step 2 read 现有组件 props · 不修改 measurement-shared 任何文件 · 仅消费
WaveformChart 不在 measurement-shared 中(ADR-12 #6 未 zombie) Step 2 用 stub 占位 · 加 TODO 注释引用 ADR-12 #6 UID
用户旧 localStorage 持有 'inspector' / 'propertyPanel' 状态 Step 1 LEGACY_DRAWER_MAP fallback · vitest 兼容 case 验证

历史

时间 事件 hash
2026-05-30 12:06 dispatched · 用户拍板 start P1.U-dock-cleanup-9to4 · 与 ADR-11 v1.3 fork 1-v3/1b-v2 文件正交并行
2026-05-30 14:51 zombie · 用户拍板"全部完成"· ClaudeA 落 9→4 drawer 裁剪 + DrawerXiTest 4 tab 复用 P0.K-shared-meter-dock 真业务组件 ad1e458