Files
agent_jrxml/ROADMAP.md
T
panda 70614dff5e feat: comprehensive v2 upgrade — streaming, error KB, file upload, layout analysis
Major changes:
- Streaming: LLM统一 _BaseLLM 接口 (invoke + stream), generate/modify/correct
  节点使用 get_stream_writer() 实现逐字输出, UI 节点平铺展开自动折叠
- Prompt外部化: 7个prompt拆分到 prompts/*.md, loader.py 支持热重载
- 错误自增长: backend/error_kb.py — 指纹去重 + ChromaDB持久化,
  correct_jrxml→validate 通过时自动入库, retrieve同时搜索错误KB
- 文件上传: backend/file_parser.py — PDF/DOCX/图片/文本解析,
  侧边栏多文件上传, 文本自动注入下一条消息
- A4模板识别: backend/layout_analyzer.py — 三种模式(完整A4/行片段修改/行片段新建),
  PaddleOCR元素提取 + 行分组 + JRXML section匹配
- 会话历史下载: jrxml_versions版本追踪 + 侧边栏历史版本下载按钮
- 预览修复: route_after_save跳过预览/导出意图的验证循环
- Ctrl+C修复: JS注入拦截Streamlit裸c键清缓存

Docs: CLAUDE.md (完整项目文档), ROADMAP.md (改进路线图)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 15:02:53 +08:00

93 lines
3.7 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 复制行为
---
## 执行顺序建议
```
1. Prompt 拆分 ──► 2. 无效代码修复
3. 流式输出 + 节点平铺
┌─────────────┼─────────────┐
▼ ▼ ▼
4. 错误自增长 5. 文件上传 7. 下载历史
│ │
▼ ▼
6. A4 模板识别 8. 预览修复
9. Ctrl+C 修复
```
阶段一立即可做,无外部依赖。阶段二是主要工作量。阶段三是收尾。