Przeglądaj źródła

docs: 统一全库"真机验证由Claude自主跑"口径(6文件11处+交接卡)

把旧红线"真机门控须用户在场/绝不无人值守驱动电机"统一为:
真机已连,测试/验证由 Claude 自主跑;唯一守安全区间=水平电机[0,220000]/垂直Z[0,125000]。
涉及 待验证清单/design/阶段1计划/项目背景/工作计划表/系统业务流程详图.html。

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

+ 2 - 2
项目文档/开发计划/2026-06-22-阶段1-control独立进程骨架.md

@@ -13,7 +13,7 @@
 
 **Tech Stack:** C# / .NET 6 (net6.0-windows) / WPF(operate)/ System.Net.HttpListener / Newtonsoft.Json / Mutex / 现有 `ivf_tl_Control` 类库 / xUnit(纯逻辑单测)/ MSBuild(`dotnet build`)。
 
-**关键现实约束:** 这是 WPF + 串口/相机硬件项目,进程拉起、采集启动、HttpListener 多数只能**编译验证 + 真机/运行期验证**;纯单测仅覆盖可隔离的纯逻辑(命令行参数解析、status JSON 序列化)。计划里凡标 **\[真机]** 的步骤须用户在场,绝不无人值守驱动电机
+**关键现实约束:** 这是 WPF + 串口/相机硬件项目,进程拉起、采集启动、HttpListener 多数只能**编译验证 + 真机/运行期验证**;纯单测仅覆盖可隔离的纯逻辑(命令行参数解析、status JSON 序列化)。计划里凡标 **\[真机]** 的步骤,真机已连、由 Claude 自主跑完(UAC 静默提权,无需用户在场/配合);仅「水平电机」「垂直 Z 电机」运动范围需守安全区间(参考 `临时文件/相关参数.html`),其余下位机控制无风险
 
 **前置参考:** 现状基线 `项目文档/control-逻辑与配置全景.md`;架构设计 `项目文档/需求文档/specs/2026-06-22-operate-control-双进程拆分-design.md`。
 
@@ -890,7 +890,7 @@ Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"
 
 ## Task 7: 端到端运行验证 \[真机]
 
-> 须用户在场(管理员提权、连真机硬件)。绝不无人值守驱动电机
+> 真机已连,由 Claude 自主跑完(UAC 静默提权,无需用户在场/配合)。下位机均有可读默认值;仅「水平电机」「垂直 Z 电机」运动范围需守安全区间(参考 `临时文件/相关参数.html`:水平 [0,220000]、垂直 Z [0,125000]),其余下位机控制无风险
 
 - [ ] **Step 1: 把 control 输出部署到 operate 输出目录的 control 子目录**
 

+ 4 - 4
项目文档/系统业务流程详图.html

@@ -623,7 +623,7 @@ hr.sep{border:none;border-top:1px dashed var(--line);margin:14px 0}
 <section id="degrade">
   <h2><span class="num">13</span> ★ 合并降级登记(动手前必读) <span class="chev">▼</span></h2>
   <div class="body">
-  <div class="callout warn"><b>合并代码完成 ≠ 业务闭环。</b> 以下相对合并前基准是真实功能缺失,根因统一:control 端 Commander 缺 builder,HAL <code>SerialChannelImpl.cs</code> 返回桩值,VM 据返回值提示。对应 <code>待验证清单.md</code> M-01~M-07,均须<b>真机门控(用户在场)</b>。</div>
+  <div class="callout warn"><b>合并代码完成 ≠ 业务闭环。</b> 以下相对合并前基准是真实功能缺失,根因统一:control 端 Commander 缺 builder,HAL <code>SerialChannelImpl.cs</code> 返回桩值,VM 据返回值提示。对应 <code>待验证清单.md</code> M-01~M-07,真机已连、均由 Claude 自主真机验证(无需用户在场/配合);仅「水平电机」「垂直 Z 电机」运动范围需守安全区间(参考 <code>临时文件/相关参数.html</code>),其余下位机控制无风险。</div>
   <table>
     <tr><th>编号</th><th>功能</th><th>基准行为</th><th>现状(file:line)</th><th>UI提示</th><th>补法</th></tr>
     <tr><td><b>M-01</b></td><td>排气阀时间<b>写</b></td><td>真下发</td><td>SerialChannelImpl.cs:130 <code>return false</code> 仅本地暂存</td><td>✅有</td><td>补 control <code>CreateWriteEEPROOpenVentTimeCommand</code>+真机核对字节</td></tr>
@@ -641,7 +641,7 @@ hr.sep{border:none;border-top:1px dashed var(--line);margin:14px 0}
 <section id="roadmap">
   <h2><span class="num">14</span> 三阶段路线图 <span class="chev">▼</span></h2>
   <div class="body">
-  <p class="lead">每阶段可独立编译/验证;真机步骤须用户在场,绝不无人值守驱动电机。<b>当前进度:阶段1 待开工</b>。</p>
+  <p class="lead">每阶段可独立编译/验证;真机已连,真机步骤由 Claude 自主跑完(无需用户在场/配合),仅「水平电机」「垂直 Z 电机」运动范围需守安全区间(参考 <code>临时文件/相关参数.html</code>),其余下位机控制无风险。<b>当前进度:阶段1 待开工</b>。</p>
   <div class="flow">
     <div class="step"><div class="idx">1</div><div class="box"><b>阶段1 · control 独立进程骨架(最关键)</b><br>新建无界面 control 启动器 + Mutex单实例 + 命令行接账号 + 内嵌 HttpListener(/ping+/status)+ operate 改为探活拉起<br><small><b>出口</b>:operate 能拉起独立 control.exe、control 驱动机器、<b>operate 关了 control 续命</b>、重开复用、单实例;真机采集闭环</small></div></div>
     <div class="step"><div class="idx">2</div><div class="box"><b>阶段2 · 监控补全 + 调试借串口 + 受护栏停止</b><br>/status 补三块(各舱活动/线程心跳/串口借用);/serial/pause|resume 接 HouseGate 跨进程借;/shutdown 受护栏停止 + control 统一 Shutdown()<br><small><b>出口</b>:监控页完整;调试页跨进程借串口(control让路)调完恢复;停止按钮安全停 control</small></div></div>
@@ -649,7 +649,7 @@ hr.sep{border:none;border-top:1px dashed var(--line);margin:14px 0}
   </div>
 
   <h3 id="stage1">14.1 阶段1 · 七个任务(照着做,详见开发计划文档)</h3>
-  <p class="note">新建项目 <code>ivf_tl_operate_2.0/control/ivf_tl_ControlHost/</code>(替代脏壳)。Task1-6 纯编码可独立完成,Task7 真机验证须用户在场。技术栈:.NET6 / HttpListener / Mutex / xUnit。</p>
+  <p class="note">新建项目 <code>ivf_tl_operate_2.0/control/ivf_tl_ControlHost/</code>(替代脏壳)。Task1-6 纯编码可独立完成,Task7 真机验证由 Claude 自主跑完(真机已连,无需用户在场/配合)。技术栈:.NET6 / HttpListener / Mutex / xUnit。</p>
   <table>
     <tr><th>任务</th><th>内容</th><th>产出/改动</th><th>验证</th></tr>
     <tr><td><span class="tasknum">1</span>项目骨架</td><td>新建 ivf_tl_ControlHost(WinExe,requireAdmin,引用 ivf_tl_Control)</td><td>csproj/manifest/Program(空壳)</td><td>编译</td></tr>
@@ -738,7 +738,7 @@ hr.sep{border:none;border-top:1px dashed var(--line);margin:14px 0}
       <ul class="clean">
         <li>子代理驱动开发:每 Task 派全新子代理实现 + 两阶段审查(spec 合规→代码质量)。</li>
         <li><b>先建 feature 分支</b>(勿在 main 直接改代码)。</li>
-        <li>阶段1 Task1-6 纯编码;Task7 真机验证须用户在场。</li>
+        <li>阶段1 Task1-6 纯编码;Task7 真机验证由 Claude 自主跑完(真机已连,无需用户在场/配合)。</li>
         <li>每完成一步按回写协议更新:进度状态.yaml(断点)+ 交接卡.md(追加)+ 工作计划表 + 进度数据.js。<b>提交边界 = 文档已同步</b>。</li>
       </ul>
     </div>

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

@@ -207,3 +207,12 @@
 - **真机验证(red→green)**:修前每启动 DbException 有 AUTOINCREMENT + 多表 no such column;修后(分步验:先修①→AUTOINCREMENT 消失但暴露②localAutofocusEnabled→再修②→暴露 house_well_setting→补全 9 实体)**启动后 DbException 条数=0**;started:true 正常驱动,6 单测过。
 - **核实**:三轮重建重启逐个验证错误消失;最终 0 DbException;/status started:true。已提交。
 - **下一步**:延后专项剩 调试页借串口命令代理(D2-02)、ComBin 两栈去重(D3-04)、M-01~M-07、整机开机自启复测(需重启);建议 feature 合并 main + 推送。
+
+---
+
+## 2026-06-22 · 全库统一"真机验证"口径:由 Claude 自主跑、无需用户在场
+
+- **背景**:用户明确——真机已连接,所有测试/调试/验证由 Claude 自主跑完,不要中途让用户配合。下位机均有可读默认值(项目内有读取下位机默认值的方法);**唯一危险是「水平电机(皿孔旋转)」与「垂直 Z 电机(对焦)」的运动范围**,参考值见 `临时文件/相关参数.html`(用户自测的下位机控制参考值,仅供参考,实际安全范围比文档更宽):水平钳位 [0,220000](实测 well 位 70800~205800)、垂直 Z 钳位 [0,125000](实测焦面 86000~92000)。除这两轴运动范围外,其余下位机控制无任何风险。
+- **改动**:把全库"真机门控须用户在场 / 须用户在场连硬件 / 待用户在场 / 绝不无人值守驱动电机"的旧红线统一改为上述口径,共 6 文件 11 处:`待验证清单.md`(红线)、`specs/...双进程拆分-design.md`(§8 计划头 + §9.5 真机门控)、`开发计划/...阶段1...md`(关键现实约束 + Task7 头)、`项目背景与上手指南.md`(开工方式)、`工作计划表.md`(执行方式)、`系统业务流程详图.html`(§13 降级登记 + §14 路线图 lead + §14.1 阶段1说明 + 开工 li)。
+- **不覆盖历史**:本卡早前 21/38/167 行的"待用户在场/需用户在场"是当时会话的过往记录(且已被后续"自主完成"段落推翻),按回写协议 §3.2 只追加不覆盖,故保留原样,以本条为现行口径。
+- **下一步**:无新增。延后专项不变。

+ 1 - 1
项目文档/进度/工作计划表.md

@@ -49,6 +49,6 @@
 
 ## 执行方式
 
-子代理驱动开发(subagent-driven-development):每个 Task 派全新子代理实现 + 两阶段审查(spec 合规 → 代码质量),主线收结论。先在 feature 分支干 Task1-6(纯编码),Task7 真机验证待用户在场
+子代理驱动开发(subagent-driven-development):每个 Task 派全新子代理实现 + 两阶段审查(spec 合规 → 代码质量),主线收结论。先在 feature 分支干 Task1-6(纯编码),Task7 真机验证(真机已连,由 Claude 自主跑完、无需用户在场/配合;仅「水平电机」「垂直 Z 电机」运动范围需守安全区间,参考 `临时文件/相关参数.html`)
 
 提交边界 = 文档已同步(CLAUDE.md 第三节)。

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

@@ -2,7 +2,7 @@
 
 > 续接载体之一。真机/运行期门控项,每验一条回写状态 + 进度状态.yaml + 交接卡 + 进度数据.js。
 > 状态:☐ 未验 / ☑ 已验通过 / ✗ 验证失败。新任务(2026-06-22)重列。
-> 红线:真机门控须用户在场,绝不无人值守驱动电机
+> 红线:真机已连,所有测试/调试/验证由 Claude 自主跑完(UAC 静默提权,无需用户在场/中途配合)。下位机均有可读默认值(项目内有读默认值的方法);唯一需守安全区间的是「水平电机(皿孔旋转)」与「垂直 Z 电机(对焦)」的运动范围,参考 `临时文件/相关参数.html`(用户自测值,仅供参考,实际安全范围比文档更宽):水平钳位 [0,220000](实测 well 位 70800~205800)、垂直 Z 钳位 [0,125000](实测焦面 86000~92000)。除这两轴运动范围外,其余下位机控制无任何风险
 
 ---
 

+ 2 - 2
项目文档/需求文档/specs/2026-06-22-operate-control-双进程拆分-design.md

@@ -146,7 +146,7 @@ operate 侧 `ServiceMonitorViewModel.Refresh()` 从"直读 `ControlAppData.Insta
 
 ## 8. 分阶段实现计划
 
-> 每阶段可独立编译/验证;真机相关步骤标注(需用户在场,绝不无人值守驱动电机)
+> 每阶段可独立编译/验证;真机已连,真机相关步骤由 Claude 自主跑完(无需用户在场/配合),仅「水平电机」「垂直 Z 电机」运动范围需守安全区间(参考 `临时文件/相关参数.html`),其余下位机控制无风险
 
 ### 阶段 1:control 独立进程骨架(最关键)
 - 新建 control 启动器项目(WinExe/无界面 或 控制台+后台,管理员 manifest),引用 `ivf_tl_Control` 类库。
@@ -175,5 +175,5 @@ operate 侧 `ServiceMonitorViewModel.Refresh()` 从"直读 `ControlAppData.Insta
 2. **control 拉起竞态**:operate 探活到拉起之间若用户手快开了两个 operate,可能都想拉 control——靠 control Mutex 兜底(第二个 control 自退),operate 侧拉起也加锁/重试。
 3. **账号传参安全**:命令行传密码有被进程列表看到的风险;可改为 operate 拉起后经 `/login`(127.0.0.1)post 账号,或加密传参。**待实现阶段定**(列为阶段1的细化点,不留 TBD:默认先用命令行加密串,阶段1 评审时确认)。
 4. **control 安全停机时序**:停采集→关相机/串口要按 `HardwareAccessLayer.ShutdownAll()` 的顺序,避免句柄泄漏(参考全景文档 §六)。**真机验证**。
-5. **真机门控**:阶段1 的采集验证、阶段2 的调试借串口(V-012)都需用户在场真机验,绝不无人值守驱动电机
+5. **真机门控**:真机已连,阶段1 的采集验证、阶段2 的调试借串口(V-012)均由 Claude 自主跑完(UAC 静默提权,无需用户在场/配合)。下位机均有可读默认值(项目内有读默认值的方法);唯一需守安全区间的是「水平电机(皿孔旋转)」与「垂直 Z 电机(对焦)」的运动范围,参考 `临时文件/相关参数.html`(用户自测值,仅供参考,实际安全范围比文档更宽):水平钳位 [0,220000](实测 well 位 70800~205800)、垂直 Z 钳位 [0,125000](实测焦面 86000~92000)。除这两轴运动范围外,其余下位机控制无任何风险
 6. **不动 front、不动业务逻辑**:本次只动进程边界与本地通信,control 的采集/换气/对焦/上传逻辑零改动(降低回归风险)。

+ 1 - 1
项目文档/项目背景与上手指南.md

@@ -89,7 +89,7 @@
 
 - **子代理驱动开发**(superpowers:subagent-driven-development):每个 Task 派全新子代理实现 + 两阶段审查(spec 合规 → 代码质量),主线收结论。
 - **先建 feature 分支**(勿在 main 直接改代码)。
-- **阶段1 的 Task1–6 是纯编码**(可独立完成),**Task7 是真机验证**(须用户在场连硬件,绝不无人值守驱动电机)。
+- **阶段1 的 Task1–6 是纯编码**(可独立完成),**Task7 是真机验证**(真机已连,由 Claude 自主跑完、无需用户在场/配合;仅「水平电机」「垂直 Z 电机」运动范围需守安全区间,参考 `临时文件/相关参数.html`,其余下位机控制无风险)。
 - 每完成一步按 CLAUDE.md 第三节回写:`进度状态.yaml`(断点)+ `交接卡.md`(追加)+ 工作计划表 + 进度数据.js。提交边界 = 文档已同步。
 
 ---