Files
agent_jrxml/ROADMAP.md
T
panda 067880bf2e feat: 添加结构化日志系统,更新LLM配置与全部文档
新增:
- backend/logger.py — 集中日志模块 (JSON格式 + trace_id + 独立llm.log)
- @log_node / @_log_route 装饰器覆盖17个节点和8个路由

改进:
- backend/llm.py — _LLMLoggingWrapper 自动记录LLM输入输出
- backend/llm.py — API Key优先读ANTHROPIC_API_KEY,模型名改为MiniMax-M2.7
- backend/llm.py — get_llm() 新增caller参数标识调用来源
- backend/validation.py — 新增验证结果/连接失败日志
- backend/session.py — 新增会话创建/删除日志
- app.py — 新增用户交互日志 (输入/执行/异常/会话操作)
- app.py — 提前导入torchvision抑制transformers懒加载报错
- .env.example — 新增LOG_DIR/LOG_LEVEL/ANTHROPIC_API_KEY等配置项
- .gitignore — 新增logs/和db/忽略规则

文档:
- ROADMAP.md — 新增阶段四: 可观测性
- README.md — 补充日志架构/LLM配置/项目结构
- CLAUDE.md — 同步最新配置/日志/MAX_RETRY(3)
- CODE_GUIDE.md — 新增第15章日志系统,更新架构图/LLM/配置
2026-05-19 23:40:01 +08:00

126 lines
5.4 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.
# 改进路线图
## 阶段一:代码质量(低风险,快速交付)
### 1. Prompt 拆分 ✓
- [x] 创建 `prompts/` 目录
- [x] 7 个 prompt 各拆为独立 `.md` 文件
- [x] `nodes.py` 改为从文件加载
- [x] 支持热重载(文件变更无需重启)
### 2. 修复无效代码 ✓
- [x] `backend/llm.py``get_num_tokens()` 修复为正确 API
- [x] `backend/embeddings.py` — 修复 docstring 函数名不一致
- [x] `backend/llm.py` — 统一 LLM 接口基类 `_BaseLLM`
---
## 阶段二:用户体验(核心改造)
### 3. 流式输出 + 节点平铺 ✓
- [x] `backend/llm.py` — LLM 工厂支持 `stream()` 统一接口
- [x] `agent/nodes.py` — generate/modify/correct 节点使用流式 + `get_stream_writer()`
- [x] `app.py` — 使用 `stream_mode=["updates", "custom"]` 捕获流式事件
- [x] 节点状态平铺(处理过程 expander 逐节点展示)
- [x] 流式完成后节点自动折叠
- [x] 完成后单独展示「总结卡片」
### 4. 错误自增长知识库 ✓
- [x] `backend/error_kb.py` — ErrorKB 类(ChromaDB 持久化)
- [x] 错误指纹去重(标准化 + MD5
- [x] `correct_jrxml` — 保存修正前状态到 `last_error_case`
- [x] `validate` — 修正成功时自动记录(仅新错误,自动去重)
- [x] `retrieve` — 搜索错误知识库,注入历史修正案例
- [x] 记录内容:错误 + 修正前后 JRXML + prompt + 工具链 + 模型
### 5. 文件上传支持 ✓
- [x] `backend/file_parser.py` — 统一解析接口
- [x] 图片 → PIL 元信息 + PaddleOCR(可选安装后自动识别)
- [x] PDF → pdfplumber / PyMuPDF 文本提取
- [x] DOCX → python-docx 文本提取
- [x] 纯文本 (.txt/.csv/.json/.xml) → 直接读取
- [x] `can_use_vision()` — 根据模型名判断是否支持原生多模态
- [x] `app.py` — 侧边栏文件上传组件(多文件,可移除)
- [x] 上传文本自动注入下一条消息前缀
### 6. A4 图片模板识别 ✓
- [x] `backend/layout_analyzer.py` — 完整布局分析模块
- [x] A4 比例判定:exact(±3%) / close(±8%) / not_a4 三档
- [x] PaddleOCR 布局分析:逐元素提取坐标(x,y,w,h)、字号、文本
- [x] 行分组:Y 轴容差自动聚类
- [x] 结构化输出:`图片模板共 X 行,第 1 行有 Y 个元素,其中元素 a 长...高...字体...内容是...`
- [x] 检测门槛:≥2 个 OCR 元素 + A4 比例 → 标记为模板
- [x] `app.py` — 上传图片/PDF 时自动触发布局分析,替换为布局描述
### 7. 会话历史 JRXML 下载 ✓
- [x] `agent/state.py` — 新增 `jrxml_versions` 字段
- [x] `agent/nodes.py``finalize` 节点追加版本记录
- [x] `app.py` — 侧边栏"历史版本"折叠区,每版本独立下载按钮
### 8. 预览功能修复 ✓
- [x] 根因:`preview_report` 路由到 `save_session``validate` 触发不必要的验证修正循环
- [x] 修复:`route_after_save` — 预览/导出意图跳过验证直接 `finalize`
---
## 阶段三:细节修复
### 9. Ctrl+C 修复 ✓
- [x] `app.py` — 注入 JS 拦截裸 `c` 键,保留 Ctrl+C 复制行为
---
## 阶段四:可观测性
### 10. 结构化日志系统 ✓
- [x] `backend/logger.py` — 集中日志配置模块
- [x] JSON 格式化(每行一条记录,便于 jq/pandas 分析)
- [x] 请求级 trace_idcontextvars 自动传播,一次用户请求贯穿全链路)
- [x] 独立 LLM 日志文件 `logs/llm.log`(记录完整 prompt 和 response
- [x] 时区:UTC+8(中国时区)
- [x] 日志轮转(单文件 10MB,保留 5 备份)
- [x] `backend/llm.py``_LLMLoggingWrapper` 包装所有 LLM 后端
- [x] 记录每次 invoke/stream 的请求 prompt、响应内容、耗时、模型、调用来源
- [x] 异常时也记录完整 prompt
- [x] `agent/nodes.py``@log_node` 装饰器覆盖 17 个节点
- [x] 入口/出口/异常三个阶段的日志
- [x] 自动记录 state 关键字段摘要(session_id、intent、status、jrxml_length 等)
- [x] 每个节点耗时(duration_ms
- [x] `agent/graph.py``@_log_route` 装饰器覆盖 8 个路由函数
- [x] 记录每次路由决策(来源 → 目标)
- [x] `app.py` — 用户交互日志
- [x] 收到用户输入(含上传文件信息)
- [x] 代理执行开始/完成(含最终 intent、status、jrxml_length
- [x] 异常时记录错误详情
- [x] 会话新建/切换/删除操作日志
- [x] `backend/session.py` — 会话创建/删除日志
- [x] `backend/validation.py` — 验证完成/连接失败日志
- [x] `.env.example` — 新增 `LOG_DIR``LOG_LEVEL` 配置项
- [x] `.gitignore` — 新增 `logs/` 忽略规则
---
## 执行顺序建议
```
1. Prompt 拆分 ──► 2. 无效代码修复
3. 流式输出 + 节点平铺
┌─────────────┼─────────────┐
▼ ▼ ▼
4. 错误自增长 5. 文件上传 7. 下载历史
│ │
▼ ▼
6. A4 模板识别 8. 预览修复
9. Ctrl+C 修复
10. 结构化日志系统
```
阶段一立即可做,无外部依赖。阶段二是主要工作量。阶段三是收尾。阶段四是可观测性基础。