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

3.7 KiB
Raw Blame History

改进路线图

阶段一:代码质量(低风险,快速交付)

1. Prompt 拆分 ✓

  • 创建 prompts/ 目录
  • 7 个 prompt 各拆为独立 .md 文件
  • nodes.py 改为从文件加载
  • 支持热重载(文件变更无需重启)

2. 修复无效代码 ✓

  • backend/llm.pyget_num_tokens() 修复为正确 API
  • backend/embeddings.py — 修复 docstring 函数名不一致
  • backend/llm.py — 统一 LLM 接口基类 _BaseLLM

阶段二:用户体验(核心改造)

3. 流式输出 + 节点平铺 ✓

  • backend/llm.py — LLM 工厂支持 stream() 统一接口
  • agent/nodes.py — generate/modify/correct 节点使用流式 + get_stream_writer()
  • app.py — 使用 stream_mode=["updates", "custom"] 捕获流式事件
  • 节点状态平铺(处理过程 expander 逐节点展示)
  • 流式完成后节点自动折叠
  • 完成后单独展示「总结卡片」

4. 错误自增长知识库 ✓

  • backend/error_kb.py — ErrorKB 类(ChromaDB 持久化)
  • 错误指纹去重(标准化 + MD5
  • correct_jrxml — 保存修正前状态到 last_error_case
  • validate — 修正成功时自动记录(仅新错误,自动去重)
  • retrieve — 搜索错误知识库,注入历史修正案例
  • 记录内容:错误 + 修正前后 JRXML + prompt + 工具链 + 模型

5. 文件上传支持 ✓

  • backend/file_parser.py — 统一解析接口
    • 图片 → PIL 元信息 + PaddleOCR(可选安装后自动识别)
    • PDF → pdfplumber / PyMuPDF 文本提取
    • DOCX → python-docx 文本提取
    • 纯文本 (.txt/.csv/.json/.xml) → 直接读取
  • can_use_vision() — 根据模型名判断是否支持原生多模态
  • app.py — 侧边栏文件上传组件(多文件,可移除)
  • 上传文本自动注入下一条消息前缀

6. A4 图片模板识别 ✓

  • backend/layout_analyzer.py — 完整布局分析模块
  • A4 比例判定:exact(±3%) / close(±8%) / not_a4 三档
  • PaddleOCR 布局分析:逐元素提取坐标(x,y,w,h)、字号、文本
  • 行分组:Y 轴容差自动聚类
  • 结构化输出:图片模板共 X 行,第 1 行有 Y 个元素,其中元素 a 长...高...字体...内容是...
  • 检测门槛:≥2 个 OCR 元素 + A4 比例 → 标记为模板
  • app.py — 上传图片/PDF 时自动触发布局分析,替换为布局描述

7. 会话历史 JRXML 下载 ✓

  • agent/state.py — 新增 jrxml_versions 字段
  • agent/nodes.pyfinalize 节点追加版本记录
  • app.py — 侧边栏"历史版本"折叠区,每版本独立下载按钮

8. 预览功能修复 ✓

  • 根因:preview_report 路由到 save_sessionvalidate 触发不必要的验证修正循环
  • 修复:route_after_save — 预览/导出意图跳过验证直接 finalize

阶段三:细节修复

9. Ctrl+C 修复 ✓

  • app.py — 注入 JS 拦截裸 c 键,保留 Ctrl+C 复制行为

执行顺序建议

1. Prompt 拆分 ──► 2. 无效代码修复
                        │
                        ▼
              3. 流式输出 + 节点平铺
                        │
          ┌─────────────┼─────────────┐
          ▼             ▼             ▼
    4. 错误自增长   5. 文件上传   7. 下载历史
          │             │
          ▼             ▼
    6. A4 模板识别  8. 预览修复
                        │
                        ▼
                 9. Ctrl+C 修复

阶段一立即可做,无外部依赖。阶段二是主要工作量。阶段三是收尾。