Przeglądaj źródła

docs(M区): M-07 Release网关验证 + M-05/M-06 订正为非回归 + M-04 代码核查定性

逐条核查剩余 M 区,定性可自主完成度:
- M-07 ☑ 已验证:Release 排除 #if DEBUG(test-gateway外网覆写),App.config outInter=0+urlIp内网→连内网网关;阶段1 Release E2E 登录成功坐实。
- M-06 订正:非合并回归——合并前 operate 与 control 两版 ComBin 同样硬编码 CreateReadEEPROMvertMtStartPulse(1);改按well=行为变更涉Z焦面,不盲改。
- M-05 订正:非回归(基线同样无条件true);本轮印证0x12写回包长(6)与0x11读(10)不同致写后读帧错位;改写成功判定有风险,待受控专项。
- M-04 ◑:SavePic忽略w/h转发SaveBmpPic(底层自带帧尺寸→无害);落盘格式等价性需受控抓帧(相机在用于活体成像,不宜无监督抓帧)。

结论:M-01/02/03(已修复提交)+M-07(已验证)= M区可无监督闭环部分完成;
M-04/M-05/M-06 及延后专项(D2-02设计/D3-04风险重构/整机自启需重启)需用户决策或受控时段。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie 2 dni temu
rodzic
commit
fc1ae1f73b

+ 13 - 0
项目文档/进度/交接卡.md

@@ -232,3 +232,16 @@
   - **旁注(顺带印证 M-05)**:无排空时"写后紧接读"偶现垃圾值/null=0x12 写回包长度(CustomProtocolLength 设 6)与 0x11 读(10)不同致残留字节帧错位,污染下一次读——这是既有 **M-05**"写EEPROM 成功判定/回包"可靠性问题,**非本次新命令字节错误**(字节错则干净回环不可能出现精确写入值)。加间隔即消失。M-05 帧错位/写成功校验列后续专项。
 - **核实**:4 单测真跑 red→green;harness 真编真跑经真实 SerialChannelImpl;两舱排气阀+一舱灯光回环实测、值已恢复;control+operate 双编译 0 错;`临时文件/` 已 gitignore(harness 不入库);codegraph sync 已跑。
 - **下一步**:提交(代码+测试+文档同步)。剩 M-04(调试页存图核对)/M-05(写成功判定·帧错位,本轮已定位现象)/M-06(ReadWellFocusZero 按 well)/M-07(Release 网关核对)+ 延后专项(D2-02 调试页借串口命令代理/D3-04 ComBin 两栈去重/整机开机自启复测需重启)。
+
+---
+
+## 2026-06-23 · 剩余 M 区(M-04~M-07)逐条核查定性 + M-07 验证 + 延后专项边界澄清
+
+- **背景**:M-01/02/03 修复提交后,逐条核查剩余 M 区是否可自主 TDD 完成,避免对"非回归/有风险/需决策"项盲改。结论:**M-01/02/03 是 M 区里唯一"明确合并降级 + 可纯逻辑 TDD + 可非破坏性真机验证"的一组,已闭环**;其余各有门槛。
+- **M-07 Release 连内网网关 ☑ 已验证**:Release 编译排除 `#if DEBUG`(其 `AppData.cs:108` 覆写 BaseUrl 到 test-gateway 外网);现部署 `App.config` `outInter=0`(不触发 `:87` 外网覆写)+ `urlIp=http://127.0.0.1`/`urlPort=10010`→ 最终 BaseUrl=内网网关。已由阶段1 operate WPF 真外壳 **Release** E2E 真服务器登录成功 + control→gateway 10010 ESTABLISHED 坐实。现场换站点仅改 `urlIp`。
+- **M-06 ReadWellFocusZero 按 well —— 订正为"非合并回归"**:核查发现合并前 operate(`ivf_tl_Entity/ComEntitys/ComBin.cs:871`)与 control(`ivf_tl_SerialHelper/ComBin.cs:895`)**两版基线都硬编码 `CreateReadEEPROMvertMtStartPulse(1)`**(只读 well-1 零点)。builder 支持 case 1-16 但 Wait 方法两版都传 1 → 这是 operate **原始设计**就有的限制,合并没改。改成按 well 是**行为变更**(影响 autofocus 的 Z 焦面零点、涉垂直电机焦面,正是需守安全区间的轴),需领域确认"well 级零点是否真实存在于 EEPROM" + 谨慎对焦真机验证,**不盲改**。已订正待验证清单 M-06 表述。
+- **M-05 写成功判定可靠性 —— 非回归 + 现象已定位**:`Write*Wait` 阻塞收回复即 true,不校验真实成功(基线 operate 同样无条件 true,非合并回归)。本轮 M-01~03 真机验证时**印证了帧错位现象**:`CustomProtocolLength` 对 0x12 写设回包长 6、对 0x11 读设 10,写后紧接读会因残留字节帧错位污染(无排空时偶现垃圾值/null,加间隔即消失)。改为校验写回包状态字 = 改动活动写路径、有风险(误判会破坏正常写),需真机逐字节定位 0x12 实际回包格式再动,列后续受控专项。
+- **M-04 调试页存图 ◑ 代码核查无害/落盘待受控抓帧**:`CameraImpl.SavePic(name,w,h)` 忽略 w/h 转发 `_camera.SaveBmpPic(name)`,底层从相机自身 SourceBuffer 取帧(自带尺寸)→丢弃入参 w/h **无害**;但落盘格式/旋转/位深 vs operate 基准 `MVCAPI.SavePic(buf,w,h,name)` 的等价性需一次受控抓帧核对。当前相机正被 control 用于活体培养成像,无监督抓帧可能干扰在运行的成像,**不宜无监督进行**,留受控时段验。
+- **延后专项边界(维持原判,非本轮可无监督完成)**:D2-02 调试页借串口命令代理=需设计大改面(逐操作命令代理);D3-04 ComBin 两栈去重=有风险重构(项目既定"不做无监督风险重构");整机开机自启复测=需真重启(会中断在运行的 control 驱动)。
+- **核实**:M-07 config 实读(outInter=0/urlIp=127.0.0.1:10010)+ Release 排除 DEBUG 覆写;M-06/M-05 两版基线源码逐行比对(均硬编码/无条件 true);M-04 转发链 file:line 核对。
+- **下一步**:M 区可无监督闭环的部分(M-01/02/03 修复 + M-07 验证)已完成;M-04(受控抓帧)/M-05(0x12 回包定位)/M-06(well 级零点领域确认)及三延后专项均需用户决策或受控时段/重启,建议按用户优先级逐个开专项。

+ 4 - 4
项目文档/进度/待验证清单.md

@@ -69,10 +69,10 @@
 | M-01 | 舱室排气阀时间**写** EEPROM 真下发下位机 | `SerialChannelImpl.cs:130` 已去桩→调 `_com.WriteEEPROOpenVentTimeWait`(control 补 builder,地址 00 03 08,与 operate 逐字节一致) | **真机** | ☑ 已验通过 |
 | M-02 | 舱室排气阀时间**读** 真读下位机 | `SerialChannelImpl.cs:137` 已去桩→调 `_com.ReadEEPROMVentWait`(control 补 builder/Wait,地址 00 03 08) | **真机** | ☑ 已验通过 |
 | M-03 | 缓冲瓶灯光亮度**写** EEPROM 真下发 | `SerialChannelImpl.cs:143` 已去桩→调 `_com.WriteEEPROMLightNumWait`(control 补 builder,地址 00 05 34) | **真机** | ☑ 已验通过 |
-| 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` | 部署 | ☐ |
+| M-04 | 调试页存图与基准一致 | `CameraImpl.cs:148` `SavePic(name,w,h)` **忽略 w/h** 转发 `_camera.SaveBmpPic(name)`(底层从相机自身 SourceBuffer 取帧、自带尺寸→丢弃入参 w/h **无害**);落盘格式/旋转/位深 vs operate 基准 `MVCAPI.SavePic` 等价性需一次**受控抓帧**核对(当前相机正被 control 用于活体成像,不宜无监督抓帧干扰) | **真机** | ◑ 代码核查无害/落盘格式待受控抓帧 |
+| M-05 | 写 EEPROM 类"成功=true"可靠性 | `WriteWellHorizontalPos`/`WriteScanStep`/`WriteOpenIntakeTime` 阻塞收回复即 true,未校验真实成功(SerialChannelImpl.cs:106-118)。**非合并回归**(基线 operate 同样无条件 true)。本轮 M-01~03 验证时印证:0x12 写回包长度(`CustomProtocolLength`=6)与 0x11 读(10)不同→写后紧接读会帧错位污染下次读(加间隔即消失)。改为校验写回包状态字=有风险(改活动写路径,误判会破坏正常写),需真机逐字节定位 0x12 回包格式 | **真机** | ☐ 非回归·现象已定位·改动有风险待决策 |
+| M-06 | `ReadWellFocusZero` 按 well 区分 | **非合并回归**:合并前 operate `ComBin.cs:871` 与 control `ComBin.cs:895` **同样硬编码 `CreateReadEEPROMvertMtStartPulse(1)`**(只读 well-1 零点),builder 虽支持 case 1-16,但 Wait 方法两版基线都传 1。改按 well=**行为变更**(影响 autofocus 的 Z 焦面零点,涉垂直电机),需领域确认 well 级零点是否存在 + 谨慎对焦真机验证,**不盲改** | **真机** | ☐ 非回归·待决策 |
+| M-07 | Release 连内网网关(非测试外网) | ✅ **已验证**:Release 排除 `#if DEBUG`(其 :108 行覆写到 test-gateway 外网);部署 `App.config` `outInter=0`(不触发 :87 外网覆写)+ `urlIp=http://127.0.0.1`+`urlPort=10010`→ BaseUrl=内网网关。已由阶段1 operate WPF 真外壳 Release E2E 真服务器登录成功 + control 10010 ESTABLISHED 坐实。现场换站点改 `urlIp` 即可 | 部署 | ☑ 已验通过 |
 
 > **2026-06-23 M-01/M-02/M-03 ☑ 已修复并真机验证(TDD)**:
 > - **根因**:合并阶段 control 端 Commander 缺 3 个 E方 builder(`CreateWriteEEPROOpenVentTimeCommand`/`CreateReadEEPROMVentNum`/`CreateWriteEEPROMLightNum`),`SerialChannelImpl` 对应方法返回桩值(false/-1),写排气阀时间/读排气阀时间/写灯光亮度未真正下发下位机。

+ 1 - 1
项目文档/进度/进度状态.yaml

@@ -32,4 +32,4 @@
     名称: 清理老壳 + 装机收尾
     状态: 未开始
     备注: "退役删ivf_tl_ControlTest脏壳 + operate开机自启 + ComBin两套栈去重(G1-2) + 部署文档。待阶段2完成后拆计划"
-下一步: 提交 M-01~03(代码+测试+文档);剩 M-04(存图)/M-05(写成功判定·帧错位)/M-06(按well零点)/M-07(Release网关) + 延后专项(D2-02/D3-04/整机自启复测需重启)
+下一步: M区可无监督闭环部分已完成(M-01/02/03修复+M-07验证);剩 M-04(受控抓帧)/M-05(0x12回包定位)/M-06(well级零点领域确认,均非回归/有风险)+ 延后专项(D2-02设计/D3-04风险重构/整机自启需重启),均需用户决策或受控时段