Parcourir la source

docs(d2-02-t3): 建轻量进度跟踪+CLAUDE.md开机先读指向它(无缝衔接重启)

- 新增 项目文档/进度/D2-02-第三阶段-自动对焦重构-进度.md:单文件进度,含Phase1-5/Task勾选+需求精髓+环境备忘+两份权威文档指针,下次重启读它即接上
- CLAUDE.md:修断指针(旧"第二节开机先读"已随瘦身删除)→改指新进度文件;并定下上一轮CLAUDE.md瘦身(删除指向已清理文件的旧开机先读/回写协议明细)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huangjie il y a 2 jours
Parent
commit
2712cfd360
2 fichiers modifiés avec 83 ajouts et 46 suppressions
  1. 8 46
      CLAUDE.md
  2. 75 0
      项目文档/进度/D2-02-第三阶段-自动对焦重构-进度.md

+ 8 - 46
CLAUDE.md

@@ -1,66 +1,28 @@
 # aivfo-tl-3.0 — 时差培养箱合并改造项目
 
 > 路径约定:下文所有 `项目文档/...` 均相对仓库根目录 `aivfo-tl-3.0/`。
-> 本文件两台引擎:**第二节(开机先读)** 保证重启后无缝衔接;**第三节(回写协议)** 保证文档不滞后。
+
 
 ## 一、沟通约定(最先生效)
 - 全程用**中文**回复。
 - 代码/文件**检索、定位**优先用 **codegraph**(MCP `codegraph_explore` / `codegraph_node`,或 shell `codegraph explore "..."`),而非 grep/读文件。
 - 代码**理解**优先用 `codegraph_explore` —— 一次返回相关符号源码 + 调用链。
 - 增删改文件后跑 `codegraph sync`(增量同步索引,保持最新);仅在索引异常/需全量重建时才用 `codegraph init`。
-- 第二节(开机先读)与第三节(回写协议)是**硬纪律**,每次都执行。
+- **开机先读(无缝衔接)**:当前任务 = D2-02 第三阶段「自动对焦重构」,进度与续接看 `项目文档/进度/D2-02-第三阶段-自动对焦重构-进度.md`(含 Phase/Task 勾选 + 两份权威文档指针),读它即可接着干。
+- 第三节(回写协议)是**硬纪律**:每完成一个 Task 勾进度文件 + 同步提交。
 - 我不太懂技术,所以和我沟通以及输出的文档尽量大白话一些,当然前提是claude能看懂,因为都是靠claude编程。
 
-## 二、开机先读这些(无缝衔接引擎,按顺序)
-> **当前任务:operate / control 双进程拆分 → 现进行到 D2-02 第三阶段「自动对焦重构」**(调试页全自动标定 + control 升级版自动对焦 + per-well 运动范围;spec 已定见下)。**已完成阶段(阶段1/2、命令代理、MJPEG、舱室故障、配置收敛、HIL 等)的开发计划/specs/交接卡旧历史已归档到 `项目文档/归档/`,开机不读、需回溯时查。**
-每次新会话 / 关机重启后,严格按此顺序读,读完即可接着干(**本节为续接顺序的唯一权威**,`项目背景与上手指南.md §四` / `00-需求总览.md §六` 应与本节对齐):
-1. `项目文档/项目背景与上手指南.md` —— **总入口·新会话第一篇**:项目全貌(三桌面程序 + Java 微服务)/当前任务/已定架构/技术栈/已知坑,一篇读懂"在做什么"。
-2. `项目文档/进度/进度状态.yaml` —— **轻断点**:当前断点 / 下一步 / 阶段概览(读这个就知道现在干到哪、下一步干啥)。
-3. `项目文档/进度/工作计划表.md` —— **阶段真实状态 + 顶部「全局概览·续接指南」**(阶段1/2/3 干到哪、文档三层结构、续接三件套一览)。
-4. `项目文档/需求文档/specs/2026-06-24-D2-02-第三阶段-自动对焦重构-design.md` —— **当前活跃任务设计**(调试页重构 + control 升级版自动对焦 + per-well 范围参数;实现计划待 writing-plans 出)。续接细节另见 `临时文件/自动对焦重构-讨论纪要与需求锚点.md`(防丢纪要,不入 git)。
-5. `项目文档/进度/交接卡.md` —— **拉到最后一段** = 最近一次工作的细节。
-6. 按需再读:架构看 `需求文档/specs/2026-06-22-operate-control-双进程拆分-design.md`;现状基线看 `需求文档/control-逻辑与配置全景.md`(control 全图)+ `需求文档/操作端逻辑与配置全景.md`(operate 全图,含**§八 合并降级登记**);验证进度看 `进度/待验证清单.md`;全局背景看 `00-需求总览.md`(总纲,勿删)。
-
-⚠ 环境/账号信息以 `项目文档/开发环境/服务器测试环境.md`(**当前实际部署 = 108 原生环境,权威**)+ `连接配置清单-换服务器必读.md` 与用户实际部署为准;`环境与账号清单.md` 描述的是**本机 Docker 备用环境**(compose `tl-mw`),非当前运行环境,勿据它定连接信息。
-
-## 三、回写协议 —— 硬纪律(文档不滞后引擎)
-
-### 3.1 轻断点规则
-`进度状态.yaml` 的 `当前任务` **只保留当前断点**(正在做什么 + 下一步 + 阻塞),**控制在约 5 行内**。每推进一步**覆盖更新**它,**不在这里堆历史**——历史细节一律进 `交接卡.md`。
+## 二  项目说明
+- ` 临时文件\ivf_tl_control_2.0` ,`临时文件\ivf_tl_operate_2.0`、`AutoFocusTool` 三个项目合并成了`aivfo-tl-3.0\ivf_tl_operate_2.0`,并做了一些改造。
+-  当前项目后端源码 `ivf_tl_operate_2.0 `, `aivfo-ai-middleware `, `aivfo-business-manage `, `aivfo-data-transmission `, ` aivfo-framework  `,`aivfo-gateway  `, `aivfo-oplog  `, `aivfo-service  `;-  当前项目前端源码  `Aivfo.OperationLog `, `aivof-tl-control` ,`aivfo-front-manament-2.0  `;
 
-### 3.2 交接卡 = 追加式历史
-每完成一步或暂停,在 `交接卡.md` **末尾追加**一段,格式:`## 日期 时间 · 一句话标题`,下列「改动 / 核实 / 踩坑 / 下一步」。**只追加,绝不覆盖**。
 
-### 3.3 回写矩阵 —— 什么事发生,就更新哪些文件
-
-| 触发事件 | 必须回写的文件 |
-|---|---|
-| 完成一步 / 暂停 | `进度状态.yaml`(覆盖断点)+ `交接卡.md`(追加)+ `进度数据.js`(让 `监控面板.html` 反映) |
-| 任务状态变化(开始 / 完成 / 待验证) | `工作计划表.md` |
-| 真机验证了一条 | `待验证清单.md` 对应 `D1-xx`(阶段编号) |
-| **设计 / 方案改了** | 对应 `需求文档/specs/*-design.md` + `00-需求总览.md`(若动总纲)+ 受影响的 `开发计划/*.md` |
-| 新增源码文件 / 删除文件 | 改完跑 `codegraph sync`(增量同步索引) |
-
-### 3.4 提交边界 = 文档已同步(强约束)
-一个任务做完、**准备 `git` 提交时**,先把上表中该任务牵动的**所有**文件一次性同步到位,**再提交**。
+## 三、提交边界 = 文档已同步(回写协议·强约束)
 **「git 提交 = 文档已和代码对齐」** —— 不允许只提交代码而不更新文档。
 
-### 3.5 任务收尾主动提醒 /clear(省 token)
-每完成一个任务、**回写完文档(并提交)后**,主动对用户说一句:
-**"✅ 这步完了、文档已同步,断点都落在 `进度状态.yaml`/`交接卡.md` 里,建议现在 `/clear` 再继续下一步(省 token)。"**
-理由:状态已落盘,清空对话不丢任何东西,下个会话照常续接。这是**提醒、非强制**——由用户决定清不清。
-
 ## 四、文档地图(`项目文档/` 下,按需深入查)
-> 当前任务 = operate/control 双进程拆分,现进行到 D2-02 第三阶段自动对焦重构。**已完成阶段的开发计划/specs/交接卡旧历史已归档到 `项目文档/归档/`**(开机不读,需回溯时查)。旧任务(M0-M8)文档已清空。
-- `项目背景与上手指南.md`   ★**新会话第一篇总入口**(项目全貌/当前任务/已定架构/技术栈/已知坑);开机先读顺序见第二节。
-- `00-需求总览.md`            新任务总纲(为什么拆/目标/范围/关键决策,勿删)。
-- `需求文档/`              *做什么*:`specs/2026-06-22-operate-control-双进程拆分-design.md`(总架构基线,9章含拓扑/HTTP契约/生命周期/分阶段)+ `specs/2026-06-24-D2-02-第三阶段-自动对焦重构-design.md`(**当前任务设计**)+ `control-逻辑与配置全景.md`(control 现状基线)+ `操作端逻辑与配置全景.md`(operate 现状基线 + **§八 合并降级登记**,标 file:line)。已完成阶段 specs 已归档 `归档/需求文档-specs/`。
-- `开发计划/`              *怎么做*:当前任务(自动对焦重构)实现计划待 writing-plans 出。**已完成阶段计划全部归档** → `归档/开发计划/`(阶段1/命令代理/MJPEG/舱室故障/配置收敛/HIL/operate接入旧案)。
-- `系统业务流程详图.html`  ★开发上手总文档(单页可视化,浏览器打开):汇总背景/架构/两份全景/阶段1计划/降级登记,读一篇即懂「为什么改→改成什么样→现在什么样→接下来改什么→怎么上手」。
-- `进度/`              续接回写文件(进度状态.yaml=断点 / 工作计划表.md=阶段状态 / 交接卡.md=追加历史 / 待验证清单.md=真机门控)+ `进度数据.js` / `监控面板.html`(实时面板)。
-- `开发环境/`            `服务器测试环境.md`——**当前实际中间件部署(108 原生环境,权威·编译部署先查这里)**;`连接配置清单-换服务器必读.md`——换服务器逐项改 IP/端口/账号;`环境与账号清单.md`——本机环境/版本/账号凭证/Docker 备用环境排障记录;`start-all.sh`(一键起微服务集群)。
+- `开发环境/`      `服务器测试环境.md`——**当前实际中间件部署(108 原生环境,权威·编译部署先查这里)**;`连接配置清单-换服务器必读.md`——换服务器逐项改 IP/端口/账号;`环境与账号清单.md`——本机环境/版本/账号凭证/Docker 备用环境排障记录;`start-all.sh`(一键起微服务集群)。
 - `排障/`              `全量操作日志-排障指南.md`——全量操作日志的细节(两层日志/热开关/入库/查库/SQL),从 §五 拆出,需排障时再读。
-- `归档/`              **已完成阶段的开发计划/specs/交接卡旧历史**(开机不读,真机回归/回溯时查):`开发计划/` + `需求文档-specs/` + `交接卡-2026-06-归档.md`。
 
 ## 五、排障利器:全量操作日志(运行期能力)
 - 系统有"全量操作日志":C#/Java 全操作记 谁/功能/输入/输出/报错/结果,经 Kafka→`aivfo-oplog`→`log` 库 `operation_log` 表,跨端共用 `trace_id`。**排障第一步**:拿 `trace_id` 拉跨端时间线,找 `result=失败` 那条读 input+error。

+ 75 - 0
项目文档/进度/D2-02-第三阶段-自动对焦重构-进度.md

@@ -0,0 +1,75 @@
+# D2-02 第三阶段 · 自动对焦重构 — 进度跟踪(轻量·无缝衔接用)
+
+> **下次重启先读本文件**,再读下面两份权威文档即可接上。
+> 更新时间:2026-06-25
+
+---
+
+## ★ 一句话现状
+头脑风暴 + 需求文档 + 实现计划**全部完成并提交**;**即将开工 Phase 1 Task 1.1**(还没动实现代码)。
+
+## ★ 两份权威文档(接手必读)
+- **需求**:`项目文档/需求文档/specs/2026-06-25-D2-02-第三阶段-自动对焦重构-需求文档.md`(git 975a7df)
+- **实现计划**:`项目文档/开发计划/2026-06-25-D2-02-第三阶段-自动对焦重构-实现计划.md`(git fa6686f)—— 5 Phase、bite-sized 任务在此
+
+## ★ 当前分支
+`feature/d2-02-stage3-operate-debug`。⚠ 旧 stash@{0}("VM逐方法走command"半成品)**已弃用,别恢复**。
+
+---
+
+## ★ 需求精髓(30 秒回忆)
+- **调试页(人工)只定/存"运动范围"**(水平=参考位±半幅、垂直=清晰位±半幅),不存固定 FocusZ。
+- **采集(自动)**每次触发在范围内跑四步算法实时定焦面 → 存当次标定(scene=1) → 水平定点拍、垂直绕焦面上下拍 N 层(本地 `PhotoLayerCalculator` 排层为准、上传 DB)→ 复用到下次触发。
+- **服务器不再做清晰度评分**(旧"拍N层送Java评分选层"已废)。
+- 存储:范围→服务器 MySQL(权威)↔ control 本地 SQLite(缓存);标定结果→control 本地(scene 0/1)+ 机旁 JSON。
+- 引擎在 control,operate 经**借用闸门**借硬件;调试与采集对焦互斥。
+- 决策清单 D1–D13 见需求文档 §十一。
+
+---
+
+## ★ Phase / Task 进度(勾选推进)
+
+### Phase 1 — 数据层 + Java(地基)  ⬜ 进行中起点
+- [ ] 1.1 范围列增量迁移 SQL(`sql/migrations/2026-06-25-autofocus-range.sql`)
+- [ ] 1.2 base 脚本同步加列(`sql/aivfo_tl_setting.sql`)
+- [ ] 1.3 Java DAO 加字段(HouseWellSetting 2 列 / TlSetting 4 列 + buildDefault)
+- [ ] 1.4 Mapper saveOrUpdateData INSERT 列同步(**漏加=静默丢数据**)
+- [ ] 1.5 well/update 加范围分发 + **补 sendUpdateSettingEvent(修 MQTT 缺口)**
+- [ ] 1.6 control/operate C# DBEntity + ConvertHelper 手映射同步
+
+### Phase 2 — control 采集对焦  ⬜
+- [ ] 2.1 FocusRangeResolver 纯逻辑 + 单测(TDD)
+- [ ] 2.2 ReadWellFocusRange 公用方法 + path B 注入引擎
+- [ ] 2.3 本地 PhotoLayerCalculator 为拍层权威(calCCDPosition 退兜底)
+
+### Phase 3 — control 标定协作 + operate 调试页重构  ⬜(开工前详化)
+- [ ] 3.1 CalibrationCoordinator(借 lease 逐孔标定 + 进度/推流)
+- [ ] 3.2 control `/debug/calibrate/*` 端点
+- [ ] 3.3 operate CalibrationClient + 单测
+- [ ] 3.4 HouseDebugPageViewModel/View 重构(3×6 总览 + 逐孔微调 + 保留手动)
+- [ ] 3.5 调试页保存范围走 well/update
+
+### Phase 4 — front-manament 砍对焦预览窗  ⬜(开工前详化)
+- [ ] 4.1 去掉 DetailView "对焦预览"入口
+- [ ] 4.2 删/停 AutoFocusWindow + GetAutofocusPicturesApi 消费链
+- [ ] 4.3 核对看胚胎切焦平面(0 层=焦面+层对称)不受影响
+
+### Phase 5 — 真机三门 + 启用安全门  ⬜(开工前详化)
+- [ ] 5.1 74000 伪峰(范围排除)
+- [ ] 5.2 真胚胎峰比阈值(focus_peak_ratio_threshold)
+- [ ] 5.3 EEPROM 4 个手写生效(对焦不写)
+- [ ] 5.4 电机安全区间不撞机
+- [ ] 5.5 置 local_autofocus_enabled=1 启用 + 端到端
+- [ ] 5.6 use-after-free 压测
+
+---
+
+## ★ 环境备忘(开工要用)
+- **C# 编译**:Release(真机/连内网必须);`dotnet build .../ivf_tl_Control.sln -c Release`;operate.exe 在跑会锁 DLL→先关。control 测试工程 `IvfTl.AutoFocus.Tests`(net8.0)。
+- **Java 编译**:先 `mvn -DskipTests install` 装 **aivfo-framework**,再编 aivof-tl-control;JDK 11 + Maven @ `C:\TLData\tools`。
+- **SQL**:先在测试库跑通迁移(连接见 `项目文档/开发环境/`)。
+- **改文件后**:`codegraph sync`。
+- **回写纪律**:每完成一个 Task,勾本文件 + 同步提交(CLAUDE.md 第三节:提交=文档已对齐)。
+
+## ★ 下一步动作
+开 **Phase 1 Task 1.1**:写 `sql/migrations/2026-06-25-autofocus-range.sql`(6 列:house_well_setting 2 半幅 + tl_setting 4 范围/曝光)。