待验证清单.md 8.4 KB

待验证清单 · operate/control 双进程拆分

续接载体之一。真机/运行期门控项,每验一条回写状态 + 进度状态.yaml + 交接卡 + 进度数据.js。 状态:☐ 未验 / ☑ 已验通过 / ✗ 验证失败。新任务(2026-06-22)重列。 红线:真机门控须用户在场,绝不无人值守驱动电机。


阶段1 · control 独立进程骨架

编号 验证项 门控 状态
D1-01 operate 启动后能拉起独立 ivf_tl_ControlHost.exe(管理员静默,不弹 UAC) 运行 ☑ 真外壳实跑
D1-02 http://127.0.0.1:38080/ping/status 返回 JSON 运行
D1-03 control 独立进程真机硬件获取(6相机SN读到/7 COM口 True) 真机
D1-04 operate 关闭后 control 进程仍在驱动(核心目标) 运行 ☑ 真外壳实跑
D1-05 重开 operate 复用已在跑的 control(不重复拉起) 运行 ☑ 真实代码实跑
D1-06 单实例:手动起第二个 control 发现 Mutex 已占自退(进程数仍为1) 运行
D1-07 control 完整采集闭环 + 数据入库(started:true / 真机自控环 / 落库) 真机 ☑(修死锁后·DB实证)
D1-08 serialBin/HAL 借用ComBin重开不复活发送线程致串口握手死锁 修复 真机 ☑ 已修复并真机验证
D1-09 control 本地 SQLite 建表 schema bug(预存,非死锁) 运行 ✗ 待修
D1-10 control 硬件操作不进 operation_log(oplog 埋点在 operate 的另一套栈) 运行 ✗ 归阶段3(两栈去重)

2026-06-22 真机验证实测说明(D1-xx 详情见交接卡同日段):

  • D1-01/D1-05 真实代码实跑(非机制层):编译运行 operate 端真实 ControlProcessLauncher.EnsureRunning(集成测试 harness 临时文件/LauncherTest,<Compile Include> 链入真文件):① control 未运行时 IsControlAlive=False → 已拉起 control.exe → 轮询就绪 → True(拉起路径);② control 已运行时 IsControlAlive=True → "已在运行,直接连接" → True、PID 不变、进程数恒 1(复用路径)。harness(operate 代理)退出后 control 仍在 = 续命亦由真实拉起路径实证。唯一未跑 = operate WPF 外壳(登录窗→MainWindow),因僵尸 20268 占 operate 单实例 Mutex,但其调用的拉起逻辑已实跑验证。
  • D1-07 数据入库闭环 DB 实证:control 运行期(20:19 起)直查 108 aivfo_tl_setting 库:house_collect 20:18 后新增 22 行、alarm_data 新增 270 行;抽样实读:house_collect = tl_sn=NEO-1-20230411, house_sn=2..9, temperature=37.16/37.46℃(真实箱体温), 多点温度, house_door=0, create_by=admin_admin, create_time=20:29;alarm_data = house_sn=11 PRESS alarm(control 自主检测缓冲瓶低压上报)。闭环:control 读真机传感器 → MQTT/服务器 → 108 库入库,实锤。
  • ☑ 项均 108 集群在线 + 真机连接、Claude UAC 静默提权自主完成,全程无需用户配合点击/起停进程。死锁修复同样惠及 operate(同 ScanDevices→serialBin 路径)。
  • D1-09 预存 SQLite schema bug(非死锁/非拆分):InitTablesAUTOINCREMENT only allowed on INTEGER PRIMARY KEY,某表建表失败,control 仍运行(读本地培养记录成功),影响限该表本地持久化。
  • D1-10 oplog 缺口(归阶段3,非闭环阻塞):核查发现全 OperationLogger 埋点都在 operate 侧(ivf_tl_Operate + operate 的 ivf_tl_Services/HttpHelper + operate 的 ivf_tl_Entity 的 Camera/ComBin),control 子树零埋点。control 硬件操作的 oplog 收口本就挂在 operate 的另一套 ComBin/Camera 栈(=阶段3 "ComBin 两套栈去重 G1-2")——故给 ControlHost 单加 InitOperationLog 也不会产 oplog(control 自己串口栈无埋点)。归阶段3 两栈去重一并处理。control 诊断走 RunRecord/HouseComRecord 文件日志(本次定位全程靠它),业务数据入库走 MQTT,闭环不受影响
  • 旁注:ServiceDishAndBalanceData 接口返回失败=无皿时服务器无培养记录、回退本地,正常非缺陷。

阶段2 · 监控补全 + 调试借串口 + 受护栏停止

编号 验证项 门控 状态
D2-01 监控页跨进程显示完整(/status 三块:活动/阀态/借用让路 + 心跳/磁盘/链路) 运行 ☑ 真机验证
D2-02 调试借串口:control 让路(暂停该舱采集)→ 恢复(原 V-012) 真机 ◑ 让路契约已验/调试页完整驱动待设计
D2-03 受护栏停止(二次确认+工程师口令)能安全停 control 运行 ☑ 真机验证

2026-06-22 阶段2 实测说明(详见交接卡同日段):

  • D2-01 ☑:control 端 /status 返回完整 MonitorSnapshot(补 §6 三块:WorkingType/ValveState/CapturePausedByGate);operate 端 ControlClient.GetStatusSnapshot()(harness 实跑真代码)往返反序列化 10 舱、真温 37℃、三块字段正确;ServiceMonitorViewModel.Refresh 已由"同进程 AppData"改为 HTTP /status;监控页 XAML 加三列。
  • D2-03 ☑:/shutdown 错口令→403 拒绝、对口令 tl13579→200 安全停机(HAL.ShutdownAll 关硬件 + 进程退出 + 7 COM 口全释放,非僵尸);operate 端 ShutdownControlCommand(二次确认+Microsoft.VisualBasic.InputBox 口令)+ 监控页受护栏按钮。
  • D2-02 ◑:/serial/pause {houseSn} 实测——舱2 CapturePausedByGate=true 且 COM4 串口停发(control 让路,不驱动电机)→ /serial/resume 恢复;operate ControlClient.SerialPause/Resume 验证生效。但调试页完整借串口驱动在拆分下断链:debug 页原 gate.Acquire同进程 HAL 同一物理句柄(HouseDebugPageViewModel:256),拆分后 operate 进程 HAL 是空单例、拿不到 control 持有的串口——需 control 暴露串口/相机命令代理(当前设计文档未细化的大改面)+ 驱动电机受安全红线门控(设计 §178 需用户在场)。让路契约(/serial/pause|resume)已就位作基础,调试页完整驱动列独立子任务(需设计+受监督真机验)。

阶段3 · 清理 + 装机(待阶段3拆计划后补全)

编号 验证项 门控 状态
D3-01 退役删 ivf_tl_ControlTest 后 operate/control 仍编译运行正常 编译+运行
D3-02 operate 开机自启,开机自动起 operate→拉起 control 运行
D3-03 全新部署一次到位(两 exe + 端口 + DependFile + 开机自启) 部署

合并遗留 · operate 侧降级 / 待验证(与双进程拆分并行存在)

来源:2026-06-22 复核评审逐条源码坐实;详见 需求文档/操作端逻辑与配置全景.md §八。 这些是"三项目合并"阶段做了一半、未真机验收的功能缺口——合并代码完成 ≠ 业务闭环。 状态:☐ 未验 / ☑ 已验通过 / ✗ 验证失败 / ▼ 已知降级未接通。 根因统一:ivf_tl_operate_2.0/control/IvfTl.Hardware/Impl/SerialChannelImpl.cs(control 端 Commander 缺 builder)。

编号 验证项 现状(file:line) 门控 状态
M-01 舱室排气阀时间 EEPROM 真下发下位机 SerialChannelImpl.cs:130 return false 不下发,仅本地暂存(HouseDebug:534);需补 control CreateWriteEEPROOpenVentTimeCommand + 真机核对字节(源码注释挂 V-010) 真机
M-02 舱室排气阀时间 真读下位机 SerialChannelImpl.cs:137 return -1,静默保留旧值(无 UI 提示,最易误判正常) 真机
M-03 缓冲瓶灯光亮度 EEPROM 真下发 SerialChannelImpl.cs:143 return false,仅本地+服务器(Buffer:268);需补 control CreateWriteEEPROMLightNum 真机
M-04 调试页存图与基准一致 CameraImpl.cs:148 丢弃宽高转 SaveBmpPic,自称等价未验证;核对落盘格式/旋转/位深(无 UI 提示) 真机
M-05 写 EEPROM 类"成功=true"可靠性 WriteWellHorizontalPos/WriteScanStep/WriteOpenIntakeTime 阻塞收回复即 true,未校验真实成功(SerialChannelImpl.cs:106-118) 真机
M-06 ReadWellFocusZero 按 well 区分 control Z 对焦零点为整舱单值,well 入参被忽略,与 autofocus 按 well 读零点有差异(SerialChannelImpl.cs:94) 真机
M-07 Release 连内网网关(非测试外网) AppData.cs:91-111 #if DEBUG 覆写 BaseUrl 到 test-gateway 外网;真机/排障必须用 Release + 现场核对 urlIp 部署