feat: add knowledge directory management for documents and FAQs
- Implemented directory validation in Create and Update knowledge document services. - Added directory selection in document and FAQ edit dialogs with a new KnowledgeDirectoryPanel component. - Enhanced API to support fetching, creating, updating, and deleting knowledge directories. - Updated data models to include directory information for knowledge documents and FAQs. - Added translations for directory-related messages in English and Chinese.
This commit is contained in:
@@ -94,6 +94,9 @@ func (s *knowledgeDocumentService) CreateKnowledgeDocument(req request.CreateKno
|
||||
if kb.KnowledgeType == string(enums.KnowledgeBaseTypeFAQ) {
|
||||
return nil, errorsx.InvalidParam("FAQ知识库不支持文档")
|
||||
}
|
||||
if _, err := KnowledgeDirectoryService.RequireUsableDirectory(req.KnowledgeBaseID, req.DirectoryID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
item, err := s.buildKnowledgeDocumentModel(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -133,6 +136,9 @@ func (s *knowledgeDocumentService) UpdateKnowledgeDocument(req request.UpdateKno
|
||||
if kb.KnowledgeType == string(enums.KnowledgeBaseTypeFAQ) {
|
||||
return errorsx.InvalidParam("FAQ知识库不支持文档")
|
||||
}
|
||||
if _, err := KnowledgeDirectoryService.RequireUsableDirectory(req.KnowledgeBaseID, req.DirectoryID); err != nil {
|
||||
return err
|
||||
}
|
||||
item, err := s.buildKnowledgeDocumentModel(req.CreateKnowledgeDocumentRequest)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -140,6 +146,7 @@ func (s *knowledgeDocumentService) UpdateKnowledgeDocument(req request.UpdateKno
|
||||
oldKnowledgeBaseID := current.KnowledgeBaseID
|
||||
if err := repositories.KnowledgeDocumentRepository.Updates(sqls.DB(), req.ID, map[string]any{
|
||||
"knowledge_base_id": item.KnowledgeBaseID,
|
||||
"directory_id": item.DirectoryID,
|
||||
"title": item.Title,
|
||||
"content_type": item.ContentType,
|
||||
"content_hash": item.ContentHash,
|
||||
@@ -187,6 +194,7 @@ func (s *knowledgeDocumentService) buildKnowledgeDocumentModel(req request.Creat
|
||||
plainText := rag.ExtractPlainText(req.Content, req.ContentType)
|
||||
item := &models.KnowledgeDocument{
|
||||
KnowledgeBaseID: req.KnowledgeBaseID,
|
||||
DirectoryID: req.DirectoryID,
|
||||
Title: req.Title,
|
||||
ContentType: req.ContentType,
|
||||
Content: req.Content,
|
||||
|
||||
Reference in New Issue
Block a user