|
@@ -154,3 +154,14 @@
|
|
|
- **新发现 D1-10(诊断功能缺口,归阶段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。归阶段3 处理。control 诊断走 RunRecord/HouseComRecord 文件日志,业务数据入库走 MQTT,闭环不受影响。
|
|
- **新发现 D1-10(诊断功能缺口,归阶段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。归阶段3 处理。control 诊断走 RunRecord/HouseComRecord 文件日志,业务数据入库走 MQTT,闭环不受影响。
|
|
|
- **核实**:harness 真编真跑(operate 真实 ControlProcessLauncher.cs);house_collect/alarm_data 行实读(tl_sn/温度/create_by/create_time 全对得上 control 运行期);健康 control 可提权 taskkill 干净结束(非僵尸)。
|
|
- **核实**:harness 真编真跑(operate 真实 ControlProcessLauncher.cs);house_collect/alarm_data 行实读(tl_sn/温度/create_by/create_time 全对得上 control 运行期);健康 control 可提权 taskkill 干净结束(非僵尸)。
|
|
|
- **结论**:阶段1 进程拆分 **代码完成 + 端到端闭环(前端拉起→真机自控环→数据入库)全程真机实证**。剩余均属未来阶段或预存欠账:operate WPF 外壳实跑(僵尸门控/需重启)、D1-09 SQLite、D1-10 oplog、M-01~M-07、阶段2/3 拆计划。
|
|
- **结论**:阶段1 进程拆分 **代码完成 + 端到端闭环(前端拉起→真机自控环→数据入库)全程真机实证**。剩余均属未来阶段或预存欠账:operate WPF 外壳实跑(僵尸门控/需重启)、D1-09 SQLite、D1-10 oplog、M-01~M-07、阶段2/3 拆计划。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 2026-06-22 · operate WPF 真外壳端到端实跑(补齐前端入口闭环)
|
|
|
|
|
+
|
|
|
|
|
+- **背景**:Stop hook 指出 operate WPF 外壳(真前端入口)未实跑(僵尸 20268 占 operate 单实例 Mutex)。穷尽手段自主跑通,不依赖用户重启。
|
|
|
|
|
+- **做法(E2E 脚手架,env 门控,跑完已还原·未提交)**:临时两处改动——① `App.xaml.cs` Mutex 名在 `OPERATE_E2E=1` 时切 `ivf_tl_Operate_e2e`(绕僵尸占用的 Mutex);② `MainWindow_Loaded` 在 `OPERATE_E2E=1` 时跳登录窗、用 App.config 凭据走**与 LoginWindow.StartDish_Click 完全相同的真实 `AppDataInit`**(真服务器登录)。构建 operate Release + 把 control Release 部署到 operate 输出目录 `control\` 子目录(真实部署布局)。bat 包装设 env + 提权启动真 operate.exe。
|
|
|
|
|
+- **实跑结果(真机)**:真 operate.exe(PID 20104,21:45:55)→ E2E 真实登录成功(未失败否则 `this.Close()` 退出)→ MainWindow_Loaded → `ControlProcessLauncher.EnsureRunning` → **10s 后拉起 control(PID 22156,21:46:05)**;control `/status={"ok":true,"pid":22156,"tlSn":"NEO-1-20230411","started":true}` 驱动机器。**杀真 operate 20104(模拟用户关 operate)→ control 22156 仍在跑、/status 仍 started:true = "operate 关了 control 续命"用真 WPF 外壳实证**(D1-01/D1-04 升级"真外壳实跑")。
|
|
|
|
|
+- **还原**:两处脚手架已还原(`git diff` 两文件 vs 已提交=空),operate Release 重编 0 错误。
|
|
|
|
|
+- **核实**:进程时序(operate 先、control 后 10s)、control /status、operate 存活=登录成功、杀 operate 后 control 续命,均实测。
|
|
|
|
|
+- **下一步**:阶段2(监控补全 /status + 借串口 /serial/pause|resume + 受护栏停止 /shutdown)。**安全红线**(设计文档 §line178):调试借串口的电机驱动验证需用户在场,绝不无人值守驱动电机——我实现代码 + 自验不驱动电机的部分(/status、/shutdown、/serial 让路即停轮询)。
|