跳转至

P0.U-meter-types-v3 · ADR-12 Phase 1 起手 · 7 类 MeterFrame schema 落地

Worker:TBD(用户分配)· 部门:前端 (frontend_vue3) 预计:1.0d · 优先级:P1 · 状态:dispatched 隔离:文件隔离(types/* 全新文件 · 不动现有任何 .vue/.ts 业务文件)

🔍 触发与解锁链

  • 触发:ADR-AIOS-12 v2.1 accepted(2026-05-29 14:18 用户原话"accept ADR-AIOS-12 + start 3 fork")· Phase 1 #1 起手 fork
  • 前置就位:types/meter.ts 已含 6 基础类型(P0.U-add-meter-dock-kthread ea5e9e4 · 本任务扩展为 v3 完整 schema)
  • 本任务 zombie 后解锁:P0.U-widget-workspace-framework + P0.U-measurement-node-registry + P0.U-right-inspector-framework(Phase 1 剩 3 fork 全部依赖本任务的 types)+ Phase 2-4 全部 9 fork

任务定义(基于 ADR-AIOS-12 §2.3-§2.9 + §3.1-§3.7)

按 ADR-12 §2 主决议 + §3 业务行为契约 5 必填段,落地 4 类 schema 文件 + 7 类 MeterFrame schema + workspaceStore Pinia 骨架。仅 types/* + stores/workspaceStore.ts 7 新文件 · 不动任何 .vue 业务组件

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

[U-thread] P0.U-meter-types-v3
[部门] 前端 (frontend_vue3) · 推荐 skill: vuejs-typescript-best-practices
[Worker CWD] d:/work/25_claude/workspace/AlgoDepartment/04_development/(由用户分配的 worker / worktree 决定)
[Occupies] P0.K-shared-types(写) · P0.K-shared-meter-dock(read · 复用现有 types/meter.ts 6 类型)
[隔离] 文件隔离 · 仅写 frontend_vue3/src/types/* + stores/workspaceStore.ts · 不动任何业务组件 .vue
[优先级] P1 · 1.0d · ADR-12 Phase 1 起手 · 解锁 11 后续 fork
[ADR] docs/08-implementation/40-aios/ADR/ADR-AIOS-12-xitest-realtime-arch.md(必读 §2.3-§2.9 + §3.1-§3.7)
[业务行为契约引用] ADR-AIOS-12 §3.1-§3.7 7 类 MeasurementNode × 5 项契约示范(本任务仅落 schema · 业务行为留 Phase 2 实施)
[参考文档](绝对路径)
  - d:/work/25_claude/workspace/AlgoDepartment/06_docs/site-build/docs/08-implementation/40-aios/ADR/ADR-AIOS-12-xitest-realtime-arch.md(主 ADR · §2/§3 必读)
  - d:/work/25_claude/workspace/AlgoDepartment/06_docs/site-build/docs/08-implementation/40-aios/ADR/ADR-AIOS-07-p3-p4-overlap.md(§1.3.4 三层分工铁律 + §1.3.1 节点选择契约 · 必读)
  - d:/work/25_claude/workspace/AlgoDepartment/04_development/frontend_vue3/src/types/meter.ts(现有 6 类型 · 复用为基础)

【背景】
ADR-12 v2.1 accepted · Phase 1 起手 #1 · 落地 7 类 MeterFrame schema 给后续 11 fork 引用。types 是契约层 · 不含业务逻辑 · 不动任何 .vue 业务组件。

【执行步骤】

Step 1 · read 已有基础(只读)
- read frontend_vue3/src/types/meter.ts(6 现有类型:MeterNode/MeterNodeOption/MeterToolKind/MeterToolConfig/MeterDataFrame/MeterComponentProps · ea5e9e4 落地)
- 确认本任务扩展为 v3 不破坏既有引用(P3.U-tune-modes-impl c039075 + P4.U3 ceecccf + P5.U-meter-source-tap 4adda88 已 read-only 引用)

Step 2 · 新建 types/measurement-node.ts(对齐 ADR-12 §2.3)
- export type MeasurementKind(7 类:time-domain/frequency/transfer/electrical/recording/validation/utility)
- export interface MeasurementNode(7 子能力:input/processing/measurement/validation?/visualization/automation?/storage)
- export interface NodeInput(继承 ADR-12 §2.4 · node + channels + channelLabels?+ refChannel?+ measureChannel?)
- export interface ProcessingConfig / MeasurementConfig / ValidationRule / VizConfig / AutomationHook / StorageConfig(各为 stub interface · 字段名占位 · 让 worker 后续 Phase 实施时填实)

Step 3 · 新建 types/dashboard-widget.ts(对齐 ADR-12 §2.5)
- export type WidgetState(docked/floating/fullscreen/split-h/split-v)
- export type GridLayout(2x2/4-row/2x1/1-full/4x1/free)
- export interface DashboardWidget · export interface Workspace
- export type WorkspacePreset = 'tuning' | 'electrical' | 'recording' | 'multi-channel' | 'custom'

Step 4 · 新建 types/task-flow.ts(对齐 ADR-12 §2.9 · 占位 schema · 不实施执行引擎)
- export type FlowNodeKind(source/measurement/validation/logic/export)
- export interface FlowNode · export interface TaskFlow

Step 5 · 新建 7 类 MeterFrame schema(对齐 ADR-12 §3.1-§3.7 · ① 输入/输出契约段)
新建文件:
  - types/meter-frame-rms.ts → MeterFrame_RMS(参考 §3.1.①)
  - types/meter-frame-fft.ts → MeterFrame_FFT(参考 §3.2.①)
  - types/meter-frame-transfer.ts → MeterFrame_Transfer(参考 §3.3.①)
  - types/meter-frame-phase.ts → MeterFrame_Phase(参考 §3.4.①)
  - types/meter-frame-waveform.ts → MeterFrame_Waveform(参考 §3.5.①)
  - types/meter-frame-electrical.ts → MeterFrame_Electrical(参考 §3.6.①)
  - types/meter-frame-recording.ts → RecordingSession(参考 §3.7.①)
每个 schema **必须含字段单位注释**(Hz/dBFS/ms/° 等 · 物理元信息 noiseFloorDb/averagedCount/resolution)· 严守 ADR §3 输入输出契约要求

Step 6 · 新建 stores/workspaceStore.ts(Pinia 骨架 · 不实施业务逻辑)
- defineStore('workspace') · state:currentWorkspace?: Workspace · widgets: DashboardWidget[]
- 仅起骨架(getter/action stub) · 业务实施留 P0.U-widget-workspace-framework

Step 7 · 验收
- npm run typecheck → ✓ exit 0(7 新 types 无类型错误 · 不引入业务依赖)
- npm run build → ✓ 零错误(测试 types 无循环依赖)
- npm run test:unit → 基线保持 312/3(无新测试 · 也不破坏旧测试)
- 不动:frontend_vue3/src/stages/** + components/** + composables/** + 其他 stores/**(只读 read-only)

【验收】

- typecheck/build 全绿 · test:unit 312/3 基线保持
- 7 新 types 文件就位 + 1 store 骨架 · 总计 ≤ 350 行新代码(各 schema 30-60 行 · store 骨架 ≤ 60 行)
- 字段单位注释完整(Hz/dBFS/ms/° 等)· 严守 ADR-12 §3 输入输出契约规范
- 现有 types/meter.ts 6 类型保持不变(P3/P4/P5 read-only 引用不破坏)
- 与 aios-cpu1 ADR-11 实施完全不冲突(P3/P5 后端 services + P7 pysidecar 都不动)

**端到端真值** ⭐(.clinerules v1.8 §业务行为契约必填段强制要求)
- 本任务无业务真值(纯 types schema · 没有运行时行为)
- 但需自查:**Phase 2-4 后续 fork 引用本 types 时 · 必须能完整描述 §3.1-§3.7 业务行为契约 5 段**
  - 例:Phase 2 P0.U-measurement-rms-fft-phase 实施 RMS Meter Node 时 · 必须按 §3.1.⑤ 写 e2e 真值脚本(8 通道 -20dBFS 粉噪 · 8 bar -20±1dB 断言)
  - types 字段必须支持上述断言(如 rmsDb[]/peakDb[]/peakHoldDb[]/noiseFloorDb 等)
- 自查清单(派发前):
  - [ ] 7 类 MeterFrame 字段单位注释完整
  - [ ] 收敛判据可量化(physics meta:noiseFloorDb / averagedCount / resolution)
  - [ ] 失败回退路径有支持(channels/channelLabels 不一致检测)
  - [ ] 用户操作流字段就位(node 切换 / channels 选择)
  - [ ] e2e 真值脚本可写(rmsDb[] / freqs[] / magsDb[] 都已暴露)

【commit】
- subject:`feat(P0.U-meter-types-v3/measurement-node): types schema for ADR-12 Phase 1 起手`
- trailer:`[step=7/7] [pid=P0] [uid=U-meter-types-v3] [occupies=P0.K-shared-types+P0.K-shared-meter-dock] [files=types/measurement-node.ts+types/dashboard-widget.ts+types/workspace.ts+types/task-flow.ts+types/meter-frame-{rms,fft,transfer,phase,waveform,electrical,recording}.ts+stores/workspaceStore.ts]`

【禁止】
1. ❌ 不动任何 .vue 业务组件 / composables / 现有 stores(P0.U-widget-workspace-framework 才动 · 本任务只动 types/* + 1 个 store 骨架)
2. ❌ 不破坏 types/meter.ts 既有 6 类型签名(P3/P4/P5 已 read-only 引用 · 破坏会引发跨进程级联 bug)
3. ❌ 不嵌入业务逻辑(measurement 算法 / FFT 数学 / store action 实施 · 全部留后续 fork)
4. ❌ 不验"typecheck 全绿就 commit"——必须按 .clinerules v1.8 §业务行为契约必填段自查清单 5 项过 · 否则 prompt 偏离 ADR-12 §3 标杆
5. ❌ 不绑定 CPU(本 prompt frontmatter worker: TBD · 用户拍板分配 ClaudeA/B/C/D 或 worktree)
6. ❌ 不与 ADR-11 P5/P7 fork 文件重叠(本任务仅前端 · 后端 P5 + pysidecar 完全不动)
7. ❌ 不实施 Phase 2-4 内容(7 类 MeasurementNode 业务实施 / Inspector / Engine / Bottom Dock / Task Flow 执行引擎)

解锁链(本任务 zombie 后)

  • ✅ P0.U-widget-workspace-framework(2.5d · DashboardCanvas + Widget 容器 · 8 大功能)
  • ✅ P0.U-measurement-node-registry(1.0d · NodeFactory + LeftDock § Measurements)
  • ✅ P0.U-right-inspector-framework(0.5d · 6 段 Inspector 容器)
  • ✅ Phase 2-4 全部 9 fork(types 是必须前置)

风险评估

风险 缓解
⚠️ types 设计错 → 后续 11 fork 全返工 ADR-12 §3.1-§3.7 已锁字段 · worker 严格按 ADR 抄即可
⚠️ 与 types/meter.ts 既有 6 类型冲突 本任务扩展不破坏 · 旧 6 类型保持原签名 · 新增 7 MeterFrame_* 是独立类型
⚠️ 单位注释不完整(影响 Phase 2 业务真值断言) §验收段 5 项自查清单强制过 · 缺一项不允许 commit

历史

时间 事件 hash
2026-05-29 14:18 dispatched · ADR-12 accepted 后 Phase 1 #1 起手 (待 stop 时回填)