feat: 百科知识库存入向量

This commit is contained in:
Blizzard
2026-04-21 17:32:26 +08:00
parent ae0020aa71
commit b2e6e511cd
21 changed files with 802 additions and 35 deletions
+17 -2
View File
@@ -11,13 +11,15 @@ import (
"gorm.io/gorm"
)
var aiRagService = AiRagService{}
type WikiService struct{}
var WikiServiceApp = new(WikiClassService)
// CreateWiki 创建百科
func (s *WikiService) CreateWiki(req plantReq.CreateWiki) error {
return global.DB.Transaction(func(tx *gorm.DB) error {
err := global.DB.Transaction(func(tx *gorm.DB) error {
//1.先模糊查询name是否存在 如果存在 则返回错误
if !errors.Is(tx.Where("name like ?", "%"+req.Name+"%").First(&plant.Wiki{}).Error, gorm.ErrRecordNotFound) {
return errors.New("植物已经存在")
@@ -117,6 +119,14 @@ func (s *WikiService) CreateWiki(req plantReq.CreateWiki) error {
return nil
})
if err == nil {
// 异步同步到 Qdrant(事务提交后,wiki.Id 已可用)
var created plant.Wiki
if dbErr := global.DB.Where("name = ?", req.Name).First(&created).Error; dbErr == nil {
aiRagService.SyncSingleWikiAsync(created.Id)
}
}
return err
}
// UpdateWiki 修改百科
@@ -288,7 +298,7 @@ func (s *WikiService) UploadImg(req common.UploadOss) error {
// DeleteWiki 删除百科
func (s *WikiService) DeleteWiki(req common.IdsReq) error {
return global.DB.Transaction(func(tx *gorm.DB) error {
err := global.DB.Transaction(func(tx *gorm.DB) error {
var imgIds []string
tx.Table("sundynix_wiki_oss").Where("wiki_id IN ?", req.Ids).Pluck("oss_id", &imgIds)
// 3. 物理删除图片记录本身
@@ -311,4 +321,9 @@ func (s *WikiService) DeleteWiki(req common.IdsReq) error {
//删除百科本身
return tx.Unscoped().Where("id IN ?", req.Ids).Delete(&plant.Wiki{}).Error
})
if err == nil {
// 异步清理 Qdrant 向量点位
aiRagService.DeleteFromQdrantBatch(req.Ids)
}
return err
}