Files
Auto-Finance/.agents/docs/plans/agent 改造计划.md

121 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
last_reviewed: 2026-06-12
---
# Agent 改造计划
## 总体目标
改变交互范式,从"用户点击驱动"转向"AI 对话驱动"。用户通过文件上传和聊天窗口与 AI 交互,减少繁琐的点击操作。
## 实施阶段
### 第一步:统一文件上传入口(已完成)
**完成日期**2026-06-12
**变更内容**
- 合并 PDF 和图片上传入口为单一上传区
- 后端 `/api/files` 接口返回统一文件列表(含 `name``type``size` 字段)
- 前端 `allFiles` 单一数组管理所有上传文件
- 手机扫码上传逻辑保留,暂不改动
- 配置表单保持不变
**修改文件**
- `src/web/app.py``/api/files` 接口改造
- `src/web/templates/index.html` — 合并上传区域
- `src/web/static/js/index.js` — 统一文件管理逻辑
- `src/web/README.md` — 文档更新
### 第二步移除配置表单config.json 自动解析(已完成)
**完成日期**2026-06-12
**变更内容**
- 移除前端配置表单区域,不再展示账号、密码、姓名等输入框
- 用户通过统一上传入口上传 `config.json`,前端自动解析并存入 `sessionConfig` 对象
- 文件选择器 accept 增加 `.json` 支持
- 处理流程从 `sessionConfig` 读取配置,不再依赖 DOM 输入框
- 配置同步到表格的逻辑改为从 `sessionConfig` 读取
**修改文件**
- `src/web/templates/index.html` — 移除配置表单accept 增加 `.json`
- `src/web/static/js/index.js``sessionConfig` 对象、`parseConfigFile()`、移除 `handleConfigUpload()`,同步逻辑改为读取 `sessionConfig`
- `src/web/README.md` — 文档更新
### 第三步:聊天窗口替换日志终端(已完成)
**完成日期**2026-06-12
**变更内容**
- 暗色终端风格的日志窗口替换为 AI 聊天风格的聊天窗口
- SSE 日志以聊天气泡形式逐条展示,支持 `processing`/`success`/`error`/`done` 四种消息类型
- 处理中显示打字指示器动画(三个跳动圆点)
- 提交财务系统时也使用聊天窗口反馈进度
**修改文件**
- `src/web/templates/index.html` — 日志窗口替换为聊天窗口
- `src/web/static/css/index.css` — 聊天样式(气泡、头像、打字动画)
- `src/web/static/js/index.js``addChatMessage()``addTypingIndicator()`、SSE 消息转为聊天气泡
- `src/web/README.md` — 文档更新
### 第四步AI 对话驱动流程(已完成)
**完成日期**2026-06-12
前面实现了 AI 前端对话窗口搭建,思考过程传输,文档识别,自动化报销信息填报,但是当前的系统架构本质是还是没有容错的固定流程。
#### 架构方案:混合校验
采用**规则校验器 + LLM 语义校验**的混合方案:
1. **规则校验器**`src/doc/validator.py`):定义硬性必填字段清单,快速判断完整性
2. **LLM 语义校验**`src/doc/llm_extractor.py`):对通过规则校验的数据做语义级二次判断
3. **Agent 协调器**`src/agent/orchestrator.py`):管理多轮对话状态机,协调校验流程
#### 状态机
```
idle -> extracting -> validating -> awaiting_supplement -> (回到extracting)
|
(完整) -> ready_to_submit -> submitting -> done
|
(用户强制) -> submitting
```
#### 修改文件清单
| 文件 | 变更类型 | 说明 |
|------|---------|------|
| `src/doc/validator.py` | 新增 | 规则校验器 |
| `src/agent/orchestrator.py` | 新增 | Agent 协调器 |
| `src/agent/__init__.py` | 新增 | 包初始化 |
| `src/doc/llm_extractor.py` | 修改 | 新增 `validate_semantic_completeness()` |
| `src/doc/prompt.py` | 修改 | 新增校验提示词 |
| `src/doc/prompts/validation_system.md` | 新增 | 语义校验提示词 |
| `src/web/app.py` | 修改 | SSE 协议扩展、Agent API 端点 |
| `src/web/templates/index.html` | 修改 | 引入 agent.js |
| `src/web/static/js/chat.js` | 无改动 | 复用现有聊天模块 |
| `src/web/static/js/process.js` | 修改 | 处理 Agent 事件 |
| `src/web/static/js/agent.js` | 新增 | Agent 交互模块 |
| `src/web/static/css/index.css` | 修改 | Agent 请求面板样式 |
#### 新增 API 端点
| 端点 | 方法 | 说明 |
|------|------|------|
| `/api/agent/state/<session_id>` | GET | 获取 Agent 会话状态 |
| `/api/agent/process/<session_id>` | POST | 启动 Agent 多轮处理 |
| `/api/agent/supplement/<session_id>` | POST | 用户补充文件后重新分析 |
| `/api/agent/force-submit/<session_id>` | POST | 强制提交,跳过校验 |
#### SSE 新增事件类型
| 事件类型 | 说明 |
|---------|------|
| `agent_state_change` | Agent 状态变更 |
| `agent_request_supplement` | 请求用户上传补充材料 |
| `agent_ready` | 信息完整,可以提交 |
| `agent_error` | Agent 错误 |
| `agent_supplement_received` | 收到用户补充文件 |
| `agent_force_submit` | 用户强制提交 |