# DevFlow 批次推进记录

> 记录每个批次的提交 hash、改动内容和交付价值。
> 最后更新: 2026-06-29

---

## Batch 1 — 审批超时后端兜底

- **提交**: `b923d70`(后重写为 `9dd5a5a`)
- **内容**:
  - 新增 `agentic/approval_timeout.rs`，在审批恢复入口检测超时，超时自动取消并写入审计
  - 待审批记录新增创建时刻字段，用于超时判定
  - 应用启动时从设置恢复超时配置（默认 15 分钟，0 为禁用）
  - 新增读写超时配置的接口，设置页可改
  - 与前端共用同一个配置项，保证单一真相源
- **验证**: cargo check 通过

---

## Batch 2 — 工具卡片拆分核验

- **提交**: `e95a5cd`(后重写为 `45fc493`)
- **内容**:
  - 核验发现工具卡片拆分任务实际已完成，文档标记滞后
  - ToolCard.vue 从 1527 行降至 373 行
  - 审批状态机独立为 useToolApproval.ts（220 行）
  - 头部逻辑、渲染逻辑、通用工具函数各自独立
  - 大型文件拆分三项全部完成（主聊天组件/命令注册/通用 CRUD）
- **验证**: 文档核验，无代码改动

---

## Batch 3 — 条件表达式 UI 翻译补齐

- **提交**: `e460e8d`(后重写为 `d79c816`)
- **内容**:
  - 工作流条件表达式引擎和执行器集成早已完成
  - 前端边条件编辑入口已存在，但翻译缺失（用中文兜底）
  - 补齐中英文翻译（工作流结构标题/层标签/空态/边条件编辑器）
  - 核验确认条件引擎全部链路均已落地
- **验证**: vue-tsc 通过

---

## Batch 4 — 知识提炼切读消息表

- **提交**: `6aac7ef`(后重写为 `f57c37e`)
- **内容**:
  - 知识提炼是最后一个仍读旧消息 JSON 列的路径
  - 改为优先读消息表，表空时回退旧 JSON（老库兼容）
  - 复用既有的记录转消息映射函数，与其他读路径同源
  - 至此消息存储拆分全部完成
- **验证**: cargo check 通过

---

## Batch 5 — 关闭已完成待办项

- **提交**: `59b7188`(后重写为 `694f24f`)
- **内容**:
  - 工具卡片分组标题增强（文件路径摘要展示）已落地
  - 重试持锁问题核验无影响（多会话改造后全局锁已移除）
  - 对抗式评估批量命令暂不做（单项已接入，批量无消费方）
  - 残留诊断代码已清理（无硬编码绝对路径）
  - 工程内路径授权政策确认为白名单制
- **验证**: 文档核验

---

## Batch 6 — 应用状态拆分 + 事件分发统一 + 路径授权治本

- **提交**: `996f1d9`
- **内容**:
  - **状态文件拆分**: 1416 行单文件 → 按职责分模块（授权白名单/知识库配置/并发控制）
  - **事件分发器统一**: 5 类生命周期事件纳入主事件联合类型，删除第二监听器，一个事件源一个监听器一个分发器
  - **路径授权去硬编码**: 不再硬塞编译期路径到白名单，工程根授权靠项目绑定目录 + 设置页配置
- **补丁**: `cc3ef5b` — 修复设置页面崩溃（模块循环依赖导致初始化失败）
- **验证**: cargo check + vue-tsc 通过

---

## Batch 7 — 小程序配置持久化与心跳闭环

- **提交**: `cb7e1fc`
- **内容**:
  - **配置持久化**: 运行时配置接入 storage，懒加载恢复，新增重置函数
  - **心跳 pong 闭环**: 中继服务识别小程序心跳 ping 直接回 pong（不经桌面端透传），小程序看门狗据此判活
  - **文档同步**: 关闭条件引擎/streaming per-conv/workspace_root 三项已完成的待决策
- **验证**: cargo check（devflow + df-relay）通过

---

## Batch 8 — 消息分页懒加载与事件总线空转优化

- **提交**: `3c18dea`
- **内容**:
  - **消息分页**: 消息仓库新增分页查询方法（从尾部取最近 N 条，支持游标），切换对话返回最近 50 条 + 游标，新增加载更多接口
  - **事件总线优化**: 发布事件前先检查订阅者数量，无订阅者跳过序列化（消除空转开销）
  - **核验关闭**: 对话上下文透明化三项均已落地（目标可见/项目增强预览/完整上下文面板）
- **验证**: cargo check 通过

---

## Batch 9 — 项目多工程系统（数据层）

- **提交**: `b72df78`
- **内容**:
  - **数据层**: project_modules 表（V34 迁移）+ ProjectModuleRepo 完整 CRUD
  - **后端接口**: 工程增删改查 + Git 状态查询（实时跑 git 命令返回分支/改动/提交，10s 超时）
  - **创建项目适配**: 新建项目时自动创建一个工程（目录=绑定路径，技术栈=探测结果）
  - **AI 工具**: list_project_modules（AI 了解项目工程结构）
  - **设计文档**: 新增工程系统设计方案
- **验证**: cargo check 通过

---

## Batch 10 — 项目文件浏览器（前端 UI）

- **提交**: `50aad37`
- **内容**:
  - **后端接口**: 文件树查询（列目录 + Git 状态合并 + 噪音过滤 + 路径穿越防御）+ 文件读取（文本/图片/二进制，1MB 上限）
  - **文件树组件**: 递归树形展示，懒加载子目录，Git 状态标记（橙=修改/绿=新增/灰=未跟踪）
  - **文件预览组件**: 代码文本/图片/二进制三分支，加载状态
  - **主容器**: 工程选择（单工程隐藏）+ 面包屑导航 + 刷新
  - **集成**: 项目详情页新增"文件"Tab
  - **国际化**: 中英文同步
- **验证**: cargo check + vue-tsc 通过

---

## Batch 11 — Git 只读 AI 工具

- **提交**: `7b5b62d`
- **内容**:
  - **git_status**（Low 自动执行）: 工作区状态结构化（分支 + 改动文件列表 + 状态标记）
  - **git_diff**（Low）: 改动详情（统计 + patch 截断到 8000 字符防 token 爆）
  - **git_log**（Low）: 提交历史结构化（哈希/作者/消息/日期）
  - 所有 git 命令在工程目录执行，10s 超时，无 Git 仓库返回空状态
- **验证**: cargo check 通过

---

## Batch 12 — Git 写操作 AI 工具

- **提交**: `0cfea6d`
- **内容**:
  - **git_commit**（Medium 审批）: 提交工作区改动，提交前检查敏感文件（.env/.key/.pem）
  - **git_branch**（Medium 审批）: 分支列表/创建/切换
  - **git_merge**（High 审批）: 合并分支，自动检测冲突返回冲突文件列表
  - 安全边界: 禁止 push / force / reset --hard
- **验证**: cargo check 通过

---

## 架构设计文档状态同步

- **提交**: `8d18918`
- **内容**: 9 份设计文档状态批量更新（从"待实施"改为"已落地"），1 份归档（规格契约自检被其他机制覆盖）

---

## 提交注释规范重写

- **内容**: Batch 1-5 的提交注释经 filter-branch 重写，消除内部代号（Batch/P1/P2/L1/F-09 等），统一为"两字动词 + 冒号"格式（新增/修复/更新）

---

## 未纳入批次的其他会话改动

- `src/composables/ai/aiShared.ts` + `src/stores/ai.ts` — 循环依赖修复（Batch 6 补丁 `cc3ef5b` 纳入提交）
