9bb011e429
- Replace st.chat_input with st-multimodal-chatinput (Ctrl+V paste, drag-drop, file button) - Extract _process_uploaded_file() shared handler (eliminates ~70 duplicated lines) - Add XLSX (openpyxl), XLS (xlrd), DOC (olefile) parsers to file_parser.py - Add backend/annotation_detector.py: circle detection (HoughCircles) + arrow detection (HoughLinesP clustering) + OCR correlation + LLM context formatting - Add annotation_result field to AgentState with session persistence - Wire annotation detection into process_input and _format_ocr_context - Add 11 new tests: 7 annotation detector + 4 multi-format parser - Update all docs: CLAUDE.md, README.md, CODE_GUIDE.md, ROADMAP.md
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
"""LangGraph JRXML 生成代理工作流的状态定义。"""
|
|
|
|
from typing import TypedDict, List
|
|
|
|
|
|
class AgentState(TypedDict, total=False):
|
|
# 核心工作流字段
|
|
conversation_history: List[dict]
|
|
current_jrxml: str
|
|
user_input: str
|
|
status: str
|
|
error_msg: str
|
|
natural_explanation: str
|
|
retry_count: int
|
|
user_modification_request: str
|
|
final_jrxml: str
|
|
stage: str
|
|
retrieved_context: str
|
|
|
|
# 需求1:智能上下文压缩
|
|
full_conversation_history: List[dict]
|
|
compressed_history: str
|
|
current_token_count: int
|
|
|
|
# 需求2:多会话持久化
|
|
session_id: str
|
|
session_name: str
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
# 需求3:意图识别
|
|
intent: str
|
|
history_states: List[dict]
|
|
|
|
# 需求4:JRXML 版本历史(用于下载历史版本)
|
|
jrxml_versions: List[dict]
|
|
|
|
# 需求5:错误自增长(记录修正前的状态,供 validate 节点判断是否入知识库)
|
|
last_error_case: dict
|
|
|
|
# 需求6:失败上下文传递 — 重试耗尽后暂存失败信息,下次用户输入时自动注入
|
|
pending_failure_context: dict
|
|
|
|
# 需求7:OCR 单据字段精确提取结果
|
|
ocr_extraction_result: dict
|
|
uploaded_file_path: str
|
|
|
|
# 需求8:图片批注检测(圈选/箭头标记)
|
|
annotation_result: dict
|