feat: 集成 AI-Core gRPC 文档解析服务
- 新增 AICoreClient 客户端 - 添加 document_parser_client.go - 知识库服务集成 AI-Core 解析 - 配置中添加 ai_core_service_addr Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,18 +24,21 @@ func init() {
|
||||
}
|
||||
|
||||
type KnowledgeService struct {
|
||||
repo *repository.KnowledgeRepository
|
||||
modelRepo *repository.ModelRepository
|
||||
uploadService *UploadService
|
||||
repo *repository.KnowledgeRepository
|
||||
modelRepo *repository.ModelRepository
|
||||
uploadService *UploadService
|
||||
pythonServiceURL string
|
||||
aiCoreClient *AICoreClient
|
||||
}
|
||||
|
||||
func NewKnowledgeService(repo *repository.KnowledgeRepository, modelRepo *repository.ModelRepository, uploadService *UploadService, pythonServiceURL string) *KnowledgeService {
|
||||
func NewKnowledgeService(repo *repository.KnowledgeRepository, modelRepo *repository.ModelRepository, uploadService *UploadService, pythonServiceURL, aiCoreServiceAddr string) *KnowledgeService {
|
||||
aiCoreClient, _ := NewAICoreClient(aiCoreServiceAddr)
|
||||
return &KnowledgeService{
|
||||
repo: repo,
|
||||
modelRepo: modelRepo,
|
||||
uploadService: uploadService,
|
||||
repo: repo,
|
||||
modelRepo: modelRepo,
|
||||
uploadService: uploadService,
|
||||
pythonServiceURL: pythonServiceURL,
|
||||
aiCoreClient: aiCoreClient,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +230,9 @@ func (s *KnowledgeService) UploadDocument(kbID string, file *multipart.FileHeade
|
||||
// 异步调用 Python 服务解析文档
|
||||
go s.parseDocument(kbID, doc.ID, result.URL, kb.ParsingConfig)
|
||||
|
||||
// 异步调用 AI-Core gRPC 服务解析文档(获取 Markdown)
|
||||
go s.parseDocumentWithAICore(doc.ID, result.URL, doc.Name)
|
||||
|
||||
return doc, result.URL, nil
|
||||
}
|
||||
|
||||
@@ -284,6 +290,32 @@ func (s *KnowledgeService) parseDocument(kbID, docID, fileURL string, config mod
|
||||
}
|
||||
}
|
||||
|
||||
// parseDocumentWithAICore 调用 AI-Core gRPC 服务解析文档
|
||||
func (s *KnowledgeService) parseDocumentWithAICore(docID, fileURL, fileName string) {
|
||||
if s.aiCoreClient == nil {
|
||||
knowledgeDebugLog.Printf("[AICore] AI-Core 客户端未初始化")
|
||||
return
|
||||
}
|
||||
|
||||
knowledgeDebugLog.Printf("[AICore] 开始解析文档: docID=%s, fileURL=%s, fileName=%s", docID, fileURL, fileName)
|
||||
|
||||
result, err := s.aiCoreClient.ParseDocument(fileURL, fileName, "")
|
||||
if err != nil {
|
||||
knowledgeDebugLog.Printf("[AICore] 解析失败: docID=%s, err=%v", docID, err)
|
||||
return
|
||||
}
|
||||
|
||||
if result.Success && result.Content != "" {
|
||||
knowledgeDebugLog.Printf("[AICore] 解析成功: docID=%s, contentLength=%d", docID, len(result.Content))
|
||||
// 更新文档的 Content 字段
|
||||
s.repo.UpdateDocument(docID, map[string]interface{}{
|
||||
"content": result.Content,
|
||||
})
|
||||
} else {
|
||||
knowledgeDebugLog.Printf("[AICore] 解析返回失败: docID=%s, message=%s", docID, result.Message)
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteDocument 删除文档
|
||||
func (s *KnowledgeService) DeleteDocument(kbID, docID string) error {
|
||||
// 验证文档存在
|
||||
|
||||
Reference in New Issue
Block a user