将edu-rpa-system的文档导入功能集成到deer-flow右侧工作区的完整分析和实施指南
本项目包含4份核心文档,按阅读顺序如下:
推荐方案:深集成(方案B)
| 指标 | 数值 |
|---|---|
| 文件修改数 | 15个(后端3+前端7+新增5) |
| 代码改动量 | 约800行(新增400+修改400) |
| 实施时间 | 12-18小时 |
| 技术难度 | 中等 |
| 风险等级 | 低 |
✅ 用户在Chat中发送"导入文件"请求 ✅ 右侧工作区实时显示导入进度(0-100%) ✅ 完成后预览提取的结构化数据 ✅ 支持复制和下载结果 ✅ 与现有"研究"功能并行运行
# 1. 读一遍QUICK_START.md (5分钟)
# 2. 按INTEGRATION_GUIDE.md实施代码改动 (3小时)
# 3. 按IMPLEMENTATION_CHECKLIST.md逐项检查 (1小时)
# 4. 运行测试验证 (1小时)
# 5. 提交PR进行审查 (30分钟)
✅ 新增:backend/src/agents/document_importer.py - 定义DocumentImportState类 - 实现upload/parse/extract/complete四个节点 - 构建完整的LangGraph 📝 修改:backend/src/agents/coordinator.py - 在route_to_agent中添加导入关键词识别 - 路由到document_importer (只需5行) 📝 修改:backend/src/api/routers/chat.py - 添加POST /api/chat/upload-document端点 - 文件保存和返回document_id (只需20行)
✅ 新增:web/src/core/documents/types.ts - 定义ImportDoc interface - 完整的类型系统 (~30行) 📝 修改:web/src/core/store/store.ts - 添加importDocument相关状态 - 实现appendImportDoc/updateImportDoc等方法 (+40行) ✅ 新增:web/src/app/chat/components/file-upload-panel.tsx - 拖拽上传UI组件 - 文件验证和上传逻辑 (~120行) ✅ 新增:web/src/app/chat/components/document-import-block.tsx - 右侧工作区导入面板 - 数据预览、文件信息、操作按钮 (~200行) 📝 修改:web/src/app/chat/main.tsx - 导入DocumentImportBlock - 修改双列布局逻辑 (+10行) 📝 修改:web/src/core/messages/merge-message.ts - 处理document_import工具调用事件 - 更新Store进度 (+30行) 📝 修改:web/src/app/chat/components/research-activities-block.tsx - 添加DocumentImportToolCall组件 - 消息流中显示导入卡片 (+80行)
用户输入"导入文件" (Chat) ↓ Coordinator判断意图 ↓ Router → document_importer agent ↓ Agent工作流 1. upload_and_parse_node - 验证并解析 2. extract_content_node - 提取结构化内容 3. structure_data_node - 使用LLM生成JSON ↓ SSE消息流推送(实时) - tool_calls: {id, name: "document_import", ...} - tool_call_result: {status: "uploading", progress: 0} - tool_call_result: {status: "parsing", progress: 30} - tool_call_result: {status: "completed", data: {...}} ↓ 前端mergeMessage处理每个事件 ↓ Store.updateImportDoc更新状态 ↓ React自动重渲染 - 消息列表:显示DocumentImportCard - DocumentImportCard:显示进度、状态 ↓ 用户点击"查看" ↓ openImport() 打开右侧工作区 ↓ DocumentImportBlock显示 - 数据预览 (JSON格式) - 文件信息 (名字、类型、进度) - 操作按钮 (复制、下载)
用户: 💬 "帮我导入这个Excel文件,提取课程信息" 系统: 📝 识别导入意图 📂 显示文件上传面板 用户: 📁 拖拽或点击选择文件 (teaching_plan.xlsx) 系统: ⬆️ 上传文件到后端 📊 显示上传进度(0% → 100%) 系统(后台): ✓ 接收文件 ✓ 转换为Markdown ✓ 提取章节 ✓ 使用LLM解析 ✓ 生成JSON 系统(前端): ⏳ 显示处理中 (parsing → extracting) 🎉 处理完成,显示进度100% 右侧工作区: 📋 显示提取的数据 - 课程列表 - 学分分配 - 毕业要求 用户操作: 📋 数据预览 → JSON格式显示 📋 文件信息 → 上传时间等 💾 复制 → 复制到剪贴板 📥 下载 → 保存为json文件
merge-message.ts的事件处理逻辑backend/src/agents/下的各个Agentresearch-activities-block.tsx的卡片样式git checkout -b feature/document-importnpm run type-check和npm run buildQ: 为什么不复用edu-rpa-system的整个导入系统? A: 因为deer-flow的架构不同(SSE vs Celery),复用组件经验更好。
Q: 能否同时进行多个导入? A: 可以。右侧面板同一时刻显示一个,但Store中可存储多个importDoc。
Q: 刷新页面会丢失数据吗? A: 是的,因为用的是内存Map。需要持久化的话可改为IndexedDB或数据库。
Q: 如何处理大文件? A: 当前支持50MB。更大的文件可考虑分块上传或Web Worker。
| 指标 | 数值 |
|---|---|
| 新增代码行数 | ~400 |
| 修改代码行数 | ~400 |
| 总代码改动 | ~800 |
| 修改文件数 | 15 |
| 新增文件数 | 5 |
| 修改文件数 | 10 |
| 预计开发时间 | 12-18小时 |
| 预计测试时间 | 3-4小时 |
| 总预计时间 | 15-22小时 |
所有以下条件都必须满足:
同deer-flow项目保持一致
README_INTEGRATION.md ← 你在这里 │ ├─→ QUICK_START.md (5分钟速览) ├─→ ANALYSIS_SUMMARY.md (架构和决策) ├─→ INTEGRATION_GUIDE.md (实施参考) └─→ IMPLEMENTATION_CHECKLIST.md (逐项检查)
状态:✅ 文档完整,建议采用 版本:1.0 最后更新:2024-11-16
准备开始? 👉 先读 QUICK_START.md!