2026-06-20-当前开发计划.md 11 KB

当前开发计划 · 2026-06-20

唯一前进计划。三项目合并已物理收尾,本计划只列剩余工作(G1–G5)。 历史里程碑分解(M1–M5/M8 子计划)见 已完成归档/,仅供参考,不再驱动主线。 真实进度锚:项目文档/进度/工作计划表.md(里程碑状态)+ 项目文档/进度/待验证清单.md(V 项真机门控)。 抗失忆:每个任务自包含(改哪/验收/真机门控);开工读本计划 + 进度状态.yaml 断点即可续接。


① 当前真实状态

三项目合并 · 物理收尾完成

  • control 已物理并入 ivf_tl_operate_2.0/control/,顶层 ivf_tl_control_2.0 目录消失,operate 自包含。
  • autofocustool/ 已删除(零引用,算法移植 IvfTl.AutoFocus)。
  • 合并后编译 0 错误;真机硬件层 + 业务 API 验证闭环(握手/温压门/电机偏差0/相机出图;登录/tl-control/business/surface/对焦下发上行链)。
  • data-transmission 补建 108 的 aivfo-tl 库后已起;nacos 6 服务在线。

串口占用 · 代码层修复完成

  • T1.1/T1.2/T1.3 已落地:SerialChannelImpl 方法补全、调试页改用借用句柄(_halLease.Serial/Camera,删 new ComBin/new Camera)、借用闸门暂停采集接通(OnPauseCapture/OnResumeCapture → HouseBin)。
  • T1.4 真机验证待 GUI(借用→暂停→调试复用句柄→归还恢复,不报端口占用)。

质量修复进度

  • Phase 0 功能 bug 全修(T0.1 kfka 重复键 / T0.2 scene=0 降级回退 / T0.3 front 预览判据)。
  • Phase 4 部分:B6 容错读取已接、C3 HTTP 失联标记已补、C5 front 日志接入。
  • M2-02 单测重建 23 断言通过。
  • ComBin 去重仅删死代码(B 栈枚举阶段未迁移,留待 G1)。

里程碑总览(详见 进度/工作计划表.md):M0✅ / M1 合并✅+T1.4 待真机 / M2 算法✅+清理任务❌+标定实拍待验 / M3✅ / M4 框架✅+自适应/TabTip/弹框❌ / M5✅(止血已修) / M8 机制✅+operate&Java 埋点❌+配置下发❌ / M6·M7 未开始(待 GUI 业务流程真机)。


② 剩余工作(5 组)

标注:[真机] = 需用户在场真机门控;[纯代码] = 可独立编码完成。优先级 P0(止血/前置)> P1(上线必堵)> P2(完善)。

G1 · 串口收尾

目标:串口占用问题真机闭环,ComBin 两套统一去重,HAL 方法补齐到位。

涉及文件:operate HouseDebugPageViewModel.cs / BufferDebugViewModel.cs / HouseBin.cs / SerialChannelImpl、operate 与 B 栈 ComBin 实现。

  • G1-1 [真机][P0] T1.4 真机验证:operate GUI 进调试页不报端口占用;借用→暂停→调试复用句柄→归还→恢复采集时序正常(V-012/V-013)。
  • G1-2 [纯代码][P1] ComBin 枚举阶段迁移去重:把 B 栈 ComBin 剩余被引用逻辑迁入 operate 统一实现后删除 B 栈 ComBin(当前仅删了死代码)。
  • G1-3 [真机][P1] 写 EEPROM 调试动作补全:SerialChannelImpl 写 EEPROM(字节序)真机核对(V-010)后在 HAL 统一,补齐 6/7 → 7/7。

验收:调试页打开/采集恢复实测正常;grep 仓库无 B 栈 ComBin 残留引用;写 EEPROM 真机核对通过。 真机门控:G1-1、G1-3。

G2 · UI 改造

目标:首页弹框、子页自适应、软键盘屏蔽、well 状态色彩到位,真机不溢出。

涉及文件:operate 首页舱室弹框视图、M4 清单 13 子页(去写死 2736×1824 像素 + Viewbox/弹性)、TabTip 屏蔽处、well 状态色彩样式。

  • G2-1 [纯代码][P1] 首页舱室弹框位置/大小修复。
  • G2-2 [纯代码][P1] M4 13 子页自适应(按 M4-01-5 清单:去写死像素 + Viewbox/弹性 + 零滚动,子页根无 2736×1824)。 ✅2026-06-20 根层完成·真机视觉待验:关键约束=内容外层只有 MainWindow 一个 Viewbox{Uniform}、以无约束测量子页自然尺寸再缩放,含 * 星号行的页靠根 Height=2736 撑开,直接删根尺寸会塌缩。方案=设计基准下沉一处:MainWindow.xamlMainGridWidth=1824 Height=2736(唯一固定基准,D6 真机校准只调这一处,同时修好样板 MainPageView);11 全屏子页根 Height="2736" Width="1824"d:DesignHeight/d:DesignWidth(About/Alarm/AutoFocus/Buffer/Chart/Detail/DishRecord/HouseSetting/Photo/Setting/HouseDebug)。本轮只动根尺寸;内层 Canvas 绝对定位/内层 Width=1824(Setting 多 Grid、Photo WrapPanel 等)=深层 R6「去 Canvas 绝对坐标」留后续真机轮。CCDSettingView 已达标不改;AddDishWindowView 是 Window 弹窗归 G2-1。★grep 根运行时尺寸清零 + dotnet build operate 0 error + codegraph sync done。7 个星号页+主页真机视觉(满屏不溢出/不塌缩/不变形)= G2 门控待用户★。
  • G2-3 [纯代码][P2] TabTip 程序级屏蔽实现。
  • G2-4 [纯代码][P2] well 三态色彩。

验收:真机视觉子页不溢出、弹框位置/大小正常、软键盘不弹、well 三态色彩正确。 真机门控:最终视觉以真机为准(G2-1/G2-2 真机视觉验证)。

G3 · 日志铺开

目标:M8 全量操作日志从机制走向各端逐方法埋点,配置可下发可补送。

涉及文件:operate 各 ViewModel/命令、Java tl-control/business 关键 Controller/Service(@OperateLog)、M8 §10 配置中心下发 + 本地兜底补送逻辑。

  • G3-1 [纯代码][P1] operate 逐方法埋点(逐 ViewModel/命令接入)。 ✅2026-06-20 完成:VM 层(HouseDebugPageVM ~23 法:LED/进排气阀/补排气/写EEPROM/水平垂直电机各向/抓图/一键电机准备/手调保存等、BufferDebugVM 3、MainPageVM 2:结束培养/报警静音、UnifiedConfigVM 1:保存配置排除密码) + View code-behind 层(加皿窗口:编辑保存/启动培养皿/启动平衡皿、胚胎详情:移动/释放/删除/作废/结束 5 个、舱室设置:保存舱室/保存系统设置、对焦设置:保存/批量校验)。事件处理器用 OperationLogger.Begin scope + 失败路径显式 Fail()(Dispose 默认记成功),不改控制流;HTTP/串口/相机已由 P3b 单点收口覆盖;展示类/纯数据 VM(Photo/Detail-VM/DishRecord/Alarm/Chart/ServiceMonitor)无操作正确跳过。operate 工程 dotnet build 0 error。★真入 operation_log 待起 Kafka+oplog 端到端抽查(运行期,非真机门控)。
  • G3-2 [纯代码][P1] Java 埋点:tl-control / business 关键 Controller/Service 加 @OperateLog。 ✅2026-06-20 完成:两服务装 M8 三件套(log-starter+kafka-starter+oplog-client)+ application-local 配 kafka(${server.ip}:9092);tl-control 15 Controller/90 方法、business 24 Controller/121 方法贴 @OperateLog(module=@Api tags、operation=@ApiOperation 中文值);两服务 Maven 编译 BUILD SUCCESS。★真入 operation_log 待起 Kafka+oplog 端到端抽查(运行期,非真机门控)。
  • G3-3 [纯代码][P2] M8 配置集中下发 + 本地兜底补送(C4)。 ✅2026-06-20 完成:① §10 配置热生效——OperationLogOptionsConfigFilePath/ConfigReloadSeconds + ApplyConfigJson(容错解析 enabled/globalLevel/模块级开关),新增 OperationLogConfigWatcher(后台轮询配置文件,大小/写时间变即热应用,全 try 兜底),日志微服务/运维把统一配置文件下发覆盖到该路径即热生效不重编;② §11 本地兜底补送——KafkaOplogTransportonDeliveryFailed 回调(投递失败/队列满整条 JSON 落兜底文件)、LocalFileWriter 加补送原语(List/Claim 原子重命名 .resending/ReadLines/Delete)、OperationLogPipeline 加补送定时器 TryResend(认领→逐行重投→删,重入保护+每轮限流);③ 门面 OperationLogger 接线:构造 transport 传 onDeliveryFailed: local.WriteFallbackInitCore 起 ConfigWatcher(ConfigFilePath 非空)、Shutdown 释放。dotnet build Aivfo.OperationLog 0 error 0 警告。消费端(operate/front)只用 OperationLogger 门面、签名未变零改动。★真入库/补送/热生效待起 Kafka+oplog 运行抽查(运行期,非真机门控)。

验收:抽查各端关键操作有 operation_log 记录;改配置热生效、Kafka 恢复后补送成功。 真机门控:无(GUI 操作触发即可抽查)。

G4 · 对焦 / 数据

目标:对焦清理任务上线,建库脚本统一可一次部署,本地 SQLite 列迁移不崩。

涉及文件:operate 对焦清理任务、两个 migration + base 建库脚本 + 幂等 runner、清单.md、本地 SQLite(tl_setting/house_well_setting)列迁移。

  • G4-1 [纯代码][P2] 对焦标定清理任务(C6):按天数,scene=1 删 / scene=0 保留;可跑。 ✅2026-06-20 完成:用户拍板配置走 tl_setting.clean_autofocus_data 中央下发列(非 App.config)。发现该列+Java 下发链(TlSetting/TlSettingVO cleanAutofocusData 默认30)中央端原已就绪,仅缺 C# 消费者;本次补全:① C# 下发链 4 文件(tlSettingDTO/TLSettingDB/TLSetting/ConvertHelper 3 路径 DTO↔TLSetting↔DB)加 cleanAutofocusData,镜像 focusLayerCount;② DBService.CleanAutofocusData(keepDays):物删 house_autofocus_calibration scene=1 且 calibTime<now-keepDays、scene=0 永留、keepDays<=0 安全阀不删、全 try 兜底返回条数;③ AppData 每日维护窗口(StartPushMessageThread autoFocusTime 时刻,与 DeleteLog 同源)调 CleanAutofocusCalibration,keepDays 读 TLSetting.cleanAutofocusData 缺省30。dotnet build operate 0 error。★清理真入库待运行抽查;本地 SQLite 旧库 cleanAutofocusData 列迁移归 G4-3(V-046 真机门控)★。
  • G4-2 [纯代码][P1] 建库脚本与 migration 合并 + 幂等 runner(C2):两 migration 并入 base 或部署清单强制登记;清单.md 补 operation_log/对焦表;全新部署一次跑完不缺表/列。 ✅2026-06-20 完成:对焦表/列并入 aivfo_tl_setting.sql、operation_log 并入 log.sql、新增幂等 sql/init-database.sh清单.md 补全;临时 MySQL 容器全量跑通+二次幂等零报错验证(18 表/7+2 列/operation_log 齐)。
  • G4-3 [真机][P1] 本地 SQLite 列迁移(V-046):对 tl_setting/house_well_setting 加 AddColumn(IF NOT EXISTS 语义)或重发预置 db;旧 db 升级后写缓存不报 no such column。

验收:清理任务可跑;全新部署一次到位;旧 db 升级写缓存不报 no such column。 真机门控:G4-3(V-046)。

G5 · 业务回归

目标:M6 业务回归 + M7 真机验收,按待验证清单逐条走通完整 GUI 业务流程。

涉及文件:项目文档/进度/待验证清单.md(逐 V 项)、operate 完整 GUI 业务流程。

  • G5-1 [真机][P0] M6 业务回归:operate 完整 GUI 业务流程走通(对焦实拍跑层等)。
  • G5-2 [真机][P0] M7 真机验收:按 待验证清单.md 风险从高到低逐条真机验证。红线:不无人值守驱动真机电机。

验收:待验证清单关键 V 项逐条 ☑。 真机门控:G5 全部(需用户在场)。


执行节奏(抗上下文丢失)

  • 每次只推进 1–2 个原子任务;复杂任务派 subagent 在独立上下文实现,主线收结论 + 核实编译。
  • 每完成一步:回写 进度状态.yaml(断点)+ 交接卡.md(追加)+ 本计划(打勾)+ 涉及的需求/进度文档(回写矩阵)。
  • 提交边界 = 文档已同步(CLAUDE.md 第三节)。
  • 真机门控任务([真机])须用户在场,绝不无人值守驱动电机。