| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- // 实时面板数据源(监控面板.html 读 window.PROGRESS_DATA)。每推进一步更新本文件。
- window.PROGRESS_DATA = {
- project: "operate/control 双进程拆分",
- generatedAt: "2026-06-23 21:30",
- phase: "三阶段主体完成;M区全闭合;配置收敛真机验证;D2-02 调试页命令代理 第一阶段 control 后端 批A+批B 落地(TDD 25单测绿)",
- currentTask: "D2-02 调试页跨进程命令代理 · 第一阶段(control后端):批A(单测工程 IvfTl.ControlHost.Tests + 数据类 DebugSession/DebugCommandResult + 红线电机钳位 MotorClamp + 测试替身 Fakes)+ 批B(DebugSessionManager:acquire/release/heartbeat/幂等 + 超时自动回收 SweepExpired + Execute 命令分发 读数/握手/阀/LED/电机红线钳位/EEPROM写)。全程严格 TDD red→green,逐 Task 单独 commit,全量 25 单测绿(Smoke1+MotorClamp10+SessionManager6+Execute8)。8 commit 在 feature/d2-02-debug-command-proxy。剩 批C(Task8 ControlHttpServer /debug 路由 + Task9 Program 装配 SweepExpired 看门狗)+ Task10 真机 curl 冒烟。",
- note: "安全地基(spec §5):DebugSessionManager 注入 Func<int,IHouseGate>+Func<DateTime> 时钟可纯单测;会话表 ConcurrentDictionary;绝不指望 operate 主动还,SweepExpired 超时(TTL)自动 Dispose 归还兜底,心跳续约只罚失联不罚操作时长。红线电机钳位放 control:VerticalMoveTo/HorizontalMoveTo 及 Forward/Backward 相对目标越界(垂直[0,125000]/水平[0,220000])返 OUT_OF_RANGE 且不下发串口。Execute 失效 sessionId 一律拒(SESSION_EXPIRED 防抢串口)。Task5 踩坑:批A FakeLease.Dispose 不触发 gate.ResumeCapture 致超时回收测试红,改 FakeLease 持 gate 引用 Dispose 时恢复采集(对齐真实 HardwareLeaseImpl)。8 commit:批A b4da856/e3fa590/ae80804/be88acf + 批B 968ad59/b7e8e40/cdc4976/5922797。分支 feature/d2-02-debug-command-proxy 待并 main。",
- milestones: [
- { name: "阶段1 · control 独立进程骨架(完成)", tasks: [
- { id: "Task1-7", name: "全过+D1-08死锁修复+operate真外壳E2E+数据入库DB铁证", status: "☑" }
- ]},
- { name: "阶段2 · 监控补全+借串口+受护栏停止", tasks: [
- { id: "D2-01", name: "监控页跨进程/status三块(harness验)", status: "☑" },
- { id: "D2-03", name: "受护栏停止/shutdown(口令+安全停机释放硬件)", status: "☑" },
- { id: "D2-02", name: "调试页命令代理:第一阶段control后端 批A+批B(单测工程/数据类/红线钳位MotorClamp/Fakes + DebugSessionManager 会话/超时回收/Execute分发含电机钳位,TDD 25绿);剩批C HTTP路由+装配+真机冒烟", status: "◑" }
- ]},
- { name: "阶段3 · 清理老壳+装机收尾", tasks: [
- { id: "D3-01", name: "退役删ivf_tl_ControlTest(两编译0错)", status: "☑" },
- { id: "D3-03", name: "双进程部署指南+布局E2E验", status: "☑" },
- { id: "D3-02", name: "开机自启注册表方案验(整机复测需重启)", status: "◑" },
- { id: "D1-10", name: "control oplog审计埋点迁移到活栈(project=control真机入库)", status: "☑" },
- { id: "D3-05", name: "control崩溃看门狗(崩溃重拉/DPAPI凭据/可暂停停止卸载,TDD+真机5项)", status: "☑" },
- { id: "HIL", name: "硬件在环回归套件IvfTl.Hardware.HilTests(守护M-05帧长/M-06按well焦点/M-01-03 EEPROM写;门控Skip+默认零写入,真机4/4)", status: "☑" },
- { id: "CONFIG", name: "配置收敛(operate↔control连接组7键单一数据源tl-shared.config经<appSettings file=>合并读+operate删12换气CCD死键;SharedConfigStore+operate单测工程;真机改一处对称生效)", status: "☑" },
- { id: "D3-04", name: "删operate死串口栈(去重·有风险删除·被D2-02阻塞)延后专项", status: "✗" }
- ]}
- ],
- pending: [
- { id: "D1-01", rel: "Task7", point: "operate拉起control(真实ControlProcessLauncher实跑:探活→拉起→轮询)", env: "运行", risk: "中", status: "☑实跑" },
- { id: "D1-02", rel: "Task7", point: "/ping、/status 返回JSON", env: "运行", risk: "低", status: "☑" },
- { id: "D1-03", rel: "Task7", point: "control 独立进程真机硬件获取(6相机SN/7COM口True)", env: "真机", risk: "高", status: "☑" },
- { id: "D1-04", rel: "Task7", point: "operate关闭后control续命(harness退出control仍跑)", env: "运行", risk: "高", status: "☑" },
- { id: "D1-05", rel: "Task7", point: "复用已在跑的control(真实代码:已在运行直接连接,PID不变)", env: "运行", risk: "中", status: "☑实跑" },
- { id: "D1-06", rel: "Task7", point: "单实例 Mutex:第二个 control 自退", env: "运行", risk: "低", status: "☑" },
- { id: "D1-07", rel: "Task7", point: "完整闭环+数据入库(house_collect 37℃真温/alarm_data 落108库)", env: "真机", risk: "高", status: "☑DB实证" },
- { id: "D1-08", rel: "合并遗留", point: "serialBin/HAL借用ComBin重开不复活发送线程致握手死锁 修复", env: "真机", risk: "高", status: "☑已修复验证" },
- { id: "D1-09", rel: "合并遗留", point: "control本地SQLite InitTables AUTOINCREMENT建表失败(不阻塞)", env: "运行", risk: "中", status: "☑已修复" },
- { id: "D1-10", rel: "阶段3", point: "control硬件操作进operation_log(审计埋点迁移到control活栈,project=control真机70行)", env: "真机", risk: "低", status: "☑已修复验证" }
- ]
- };
|