Files
012-kaopeilian/docs/规划/全链路联调/Ai工作流/知识点拆解工作流.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

78 lines
3.0 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.
**知识拆解 (Dify)**:管理员上传课程文件(如 PDF、WordDify 工作流会自动启动,对文档进行深度分析、拆解、提炼,形成结构化的知识点,写入数据库,为后续的动态考试和课程问答提供数据基础。当然也可手动在课程编辑页面的学习资料与知识点管理中,点击重新分析。
注意是每上传一个文件就启动一次
要启动的是一个 dify 工作流
api 服务器http://dify.ireborn.com.cn/v1
api 密钥app-LZhZcMO6CiriLMOLB2PwUGHx
workflow_id80cc2d27-f028-4bf1-9ac0-59742ae1cdab
api 文档地址(可用 mcp 工具查看https://dify.ireborn.com.cn/app/6713de7f-d98d-4f0a-8e1d-5ad8b4496211/develop
需要提交的必填参数(全部必填):
- file管理员上传的课程文件单个文件需上传
- course_name即课程主题
- course_id即课程 id
- material_id资料ID
该工作流会拆解知识点后直接写入数据库
## 实现经验2025-09-23
### 核心实现
- 后端:`app/services/ai/knowledge_analysis.py` - 知识点分析服务
- API`POST /api/v1/courses/{id}/reanalyze` - 重新分析接口
- 前端:课程编辑页面添加"重新分析"按钮,上传资料后自动触发
### 关键技术点
1. **文件处理**先上传文件到Dify获取file_id再调用工作流
2. **调用格式**
```python
# 1. 上传文件
POST /files/upload (multipart/form-data)
# 2. 调用工作流
POST /workflows/run (JSON格式使用upload_file_id)
```
3. **工作流参数修正file 为单对象)**
```json
{
"inputs": {
"file": {"type": "document", "transfer_method": "local_file", "upload_file_id": "file_id"},
"course_name": "课程标题",
"course_id": ID,
"material_id": ID
},
"response_mode": "blocking",
"user": "system_user_{course_id}"
}
```
4. **异步处理**使用BackgroundTasks避免阻塞用户操作
5. **日志规范**使用f-string格式避免关键字参数
6. **网络配置**将dify.ireborn.com.cn加入no proxy列表
### 验证完成
- ✅ 前端按钮正常工作API调用成功返回200
- ✅ 后台任务正常执行文件上传到Dify成功
- ✅ Dify工作流成功触发workflow_run_id已生成
- ❌ Dify工作流回调失败尝试调用 `https://aiedu.ireborn.com.cn/dev-api/system/knowledge`
### 关键发现2025-09-23
**问题**: Dify工作流成功启动但执行失败
- 工作流ID: `80cc2d27-f028-4bf1-9ac0-59742ae1cdab`
- 错误: `Reached maximum retries (0) for URL http://localhost:8000/api/v1/system/knowledge`(示例)
**原因**: Dify工作流配置的回调URL需与当前环境一致在本地联调时应使用本地地址
**解决方案**:
1. 修改Dify工作流配置将回调URL改为本地地址: `http://localhost:8000/api/v1/system/knowledge`
2. 或者在公网环境部署API端点供Dify回调
**已创建回调API**: `POST /api/v1/system/knowledge` - 接收Dify工作流的知识点数据
workflow_id: 80cc2d27-f028-4bf1-9ac0-59742ae1cdab