Files
schoolNews/schoolNewsServ/ai/数据同步检查报告.md
2025-11-04 18:49:37 +08:00

4.4 KiB
Raw Blame History

AI模块数据同步检查报告

检查日期2025-11-04

📊 同步状态总览

完全同步3/5个Service

1. AiKnowledgeServiceImpl 已完成所有同步

  • createKnowledge: 先调用difyApiClient.createDataset()创建Dify知识库再保存本地
  • updateKnowledge: 检测title/description变化调用difyApiClient.updateDataset()同步到Dify 已修复
  • deleteKnowledge: 先调用difyApiClient.deleteDataset()删除Dify知识库再删除本地

2. AiUploadFileServiceImpl

  • uploadToKnowledge: 调用difyApiClient.uploadDocumentByFile()上传到Dify再保存本地
  • batchUploadToKnowledge: 批量上传到Dify
  • deleteFile: 先调用difyApiClient.deleteDocument()删除Dify文档再删除本地
  • syncFileStatus: 从Dify同步文件处理状态
  • syncKnowledgeFiles: 批量同步知识库的所有文件状态

3. AiChatServiceImpl

  • streamChat: 在对话时自动获取Dify的conversation_id并保存到difyConversationId字段
  • blockingChat: 同上
  • ⚠️ createConversation: 只创建本地会话,Dify conversation在首次对话时自动创建
  • ⚠️ updateConversation: 只更新本地title等元数据Dify不支持单独的conversation管理API
  • ⚠️ deleteConversation: 只删除本地,Dify没有提供删除conversation的API

说明

  • Dify的conversation是在对话时自动创建和管理的
  • 本地的TbAiConversation表用于管理会话元数据标题、摘要、收藏等
  • difyConversationId字段用于关联Dify的会话ID
  • 这种设计是合理的,不需要修改

无需同步2/5个Service

4. AiAgentConfigServiceImpl

  • createAgent: 只创建本地配置
  • updateAgent: 只更新本地配置
  • deleteAgent: 只删除本地配置

说明

  • 智能体配置是本地管理的元数据
  • difyAppId字段只是引用Dify的App ID不需要通过API创建
  • Dify App需要在Dify平台手动创建然后将App ID填入配置
  • 这种设计是合理的,不需要修改

5. AiChatHistoryServiceImpl

  • 所有方法都是查询、统计、导出操作
  • 不涉及数据修改,无需同步

已修复的问题

问题1知识库更新未同步到Dify已修复

文件: AiKnowledgeServiceImpl.java
方法: updateKnowledge
问题: 更新知识库的title或description时只更新了本地数据库没有调用Dify API

修复内容:

  1. 新增 DifyApiClient.updateDataset() 方法
  2. 新增 DatasetUpdateRequest DTO类
  3. updateKnowledge() 方法中添加Dify同步逻辑
    • 检测title或description是否改变
    • 如果改变调用Dify API更新
    • Dify更新失败不阻塞本地更新只记录日志

修复时间: 2025-11-04


数据同步最佳实践总结

创建操作CREATE

  1. 先调用Dify API创建资源
  2. 保存Dify返回的ID到本地数据库
  3. 如果Dify创建失败不保存本地记录

更新操作UPDATE

  1. 如果更新的字段在Dify中存在对应资源先更新Dify
  2. Dify更新成功或失败都记录日志
  3. 更新本地数据库

删除操作DELETE

  1. 先调用Dify API删除资源
  2. 即使Dify删除失败也继续删除本地记录逻辑删除
  3. 记录删除日志

同步操作SYNC

  1. 定期从Dify同步状态如文件向量化状态
  2. 使用异步任务避免阻塞主流程

📋 修复清单

  • 修复 AiKnowledgeServiceImpl.updateKnowledge() - 添加Dify知识库更新同步 已完成

📝 备注

  1. Dify Conversation管理Dify的conversation是在对话时自动创建的不需要单独的创建API当前实现合理。

  2. 智能体配置智能体配置是本地元数据difyAppId只是引用需要在Dify平台手动创建App当前实现合理。

  3. 文件上传:已完美同步,包括上传、删除、状态同步等。

  4. 知识库管理:除了更新操作,其他都已同步。


🎯 下一步行动

  1. 实现 AiKnowledgeServiceImpl.updateKnowledge() 的Dify同步功能
  2. 测试更新知识库后在Dify平台的显示效果
  3. 考虑添加批量同步功能,用于修复历史数据不一致问题