|
@@ -1,66 +1,28 @@
|
|
|
# aivfo-tl-3.0 — 时差培养箱合并改造项目
|
|
# aivfo-tl-3.0 — 时差培养箱合并改造项目
|
|
|
|
|
|
|
|
> 路径约定:下文所有 `项目文档/...` 均相对仓库根目录 `aivfo-tl-3.0/`。
|
|
> 路径约定:下文所有 `项目文档/...` 均相对仓库根目录 `aivfo-tl-3.0/`。
|
|
|
-> 本文件两台引擎:**第二节(开机先读)** 保证重启后无缝衔接;**第三节(回写协议)** 保证文档不滞后。
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
## 一、沟通约定(最先生效)
|
|
## 一、沟通约定(最先生效)
|
|
|
- 全程用**中文**回复。
|
|
- 全程用**中文**回复。
|
|
|
- 代码/文件**检索、定位**优先用 **codegraph**(MCP `codegraph_explore` / `codegraph_node`,或 shell `codegraph explore "..."`),而非 grep/读文件。
|
|
- 代码/文件**检索、定位**优先用 **codegraph**(MCP `codegraph_explore` / `codegraph_node`,或 shell `codegraph explore "..."`),而非 grep/读文件。
|
|
|
- 代码**理解**优先用 `codegraph_explore` —— 一次返回相关符号源码 + 调用链。
|
|
- 代码**理解**优先用 `codegraph_explore` —— 一次返回相关符号源码 + 调用链。
|
|
|
- 增删改文件后跑 `codegraph sync`(增量同步索引,保持最新);仅在索引异常/需全量重建时才用 `codegraph init`。
|
|
- 增删改文件后跑 `codegraph sync`(增量同步索引,保持最新);仅在索引异常/需全量重建时才用 `codegraph init`。
|
|
|
-- 第二节(开机先读)与第三节(回写协议)是**硬纪律**,每次都执行。
|
|
|
|
|
|
|
+- **开机先读(无缝衔接)**:当前任务 = D2-02 第三阶段「自动对焦重构」,进度与续接看 `项目文档/进度/D2-02-第三阶段-自动对焦重构-进度.md`(含 Phase/Task 勾选 + 两份权威文档指针),读它即可接着干。
|
|
|
|
|
+- 第三节(回写协议)是**硬纪律**:每完成一个 Task 勾进度文件 + 同步提交。
|
|
|
- 我不太懂技术,所以和我沟通以及输出的文档尽量大白话一些,当然前提是claude能看懂,因为都是靠claude编程。
|
|
- 我不太懂技术,所以和我沟通以及输出的文档尽量大白话一些,当然前提是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 提交 = 文档已和代码对齐」** —— 不允许只提交代码而不更新文档。
|
|
**「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),从 §五 拆出,需排障时再读。
|
|
- `排障/` `全量操作日志-排障指南.md`——全量操作日志的细节(两层日志/热开关/入库/查库/SQL),从 §五 拆出,需排障时再读。
|
|
|
-- `归档/` **已完成阶段的开发计划/specs/交接卡旧历史**(开机不读,真机回归/回溯时查):`开发计划/` + `需求文档-specs/` + `交接卡-2026-06-归档.md`。
|
|
|
|
|
|
|
|
|
|
## 五、排障利器:全量操作日志(运行期能力)
|
|
## 五、排障利器:全量操作日志(运行期能力)
|
|
|
- 系统有"全量操作日志":C#/Java 全操作记 谁/功能/输入/输出/报错/结果,经 Kafka→`aivfo-oplog`→`log` 库 `operation_log` 表,跨端共用 `trace_id`。**排障第一步**:拿 `trace_id` 拉跨端时间线,找 `result=失败` 那条读 input+error。
|
|
- 系统有"全量操作日志":C#/Java 全操作记 谁/功能/输入/输出/报错/结果,经 Kafka→`aivfo-oplog`→`log` 库 `operation_log` 表,跨端共用 `trace_id`。**排障第一步**:拿 `trace_id` 拉跨端时间线,找 `result=失败` 那条读 input+error。
|