kobe6258 6 днів тому
батько
коміт
cfcb54295d

+ 4 - 0
models/llm/dfa/article_dfa_tag_mapping.go

@@ -58,3 +58,7 @@ func BatchInsertArticleDfaTagMapping(tasks []*ArticleDfaTagMapping) error {
 	}
 	return tx.Commit().Error
 }
+
+func InsertArticleDfaTagMapping(task *ArticleDfaTagMapping) (err error) {
+	return global.DbMap[utils.DbNameAI].Create(task).Error
+}

+ 20 - 2
services/llm/daf_service.go → services/llm/dfa_service.go

@@ -6,6 +6,7 @@ import (
 	"eta/eta_api/utils"
 	"eta/eta_api/utils/llm"
 	"fmt"
+	"sync"
 	"time"
 )
 
@@ -27,18 +28,23 @@ func DealHistoryArticleDafTags() {
 		utils.FileLog.Error("自动处理历史文章算法标签任务错误退出:err", err.Error())
 		return
 	}
+	var wg sync.WaitGroup
+	wg.Add(2)
 	go func() {
+		defer wg.Done()
 		etaErr := DAFTagDeal(dfa.ArticleSourceEta, ArticleParts[dfa.ArticleSourceEta])
 		if etaErr != nil {
-
+			utils.FileLog.Error("处理eta文章算法标签任务错误退出:err", etaErr.Error())
 		}
 	}()
 	go func() {
+		defer wg.Done()
 		wechatErr := DAFTagDeal(dfa.ArticleSourceWechat, ArticleParts[dfa.ArticleSourceWechat])
 		if wechatErr != nil {
-
+			utils.FileLog.Error("处理微信文章算法标签任务错误退出:err", wechatErr.Error())
 		}
 	}()
+	wg.Wait()
 	utils.FileLog.Info("自动处理历史文章算法标签任务结束")
 }
 
@@ -121,3 +127,15 @@ func etaDeal(excludeArticleIds []int) (err error) {
 	}
 	return
 }
+
+func GenerateDfaTags(obj *rag.WechatArticle) {
+	if obj.WechatArticleId > 0 {
+		DAFHandler.SubmitTask(&dfa.ArticleDfaTagMapping{
+			ArticleID:      obj.WechatArticleId,
+			Source:         dfa.ArticleSourceWechat,
+			ArticleTitle:   obj.Title,
+			ArticleContent: obj.TextContent,
+			CreatedTime:    time.Now(),
+		})
+	}
+}

+ 2 - 1
services/wechat_platform.go

@@ -174,8 +174,9 @@ func AddWechatArticle(item *rag.WechatPlatform, articleLink string, articleDetai
 		obj.CoverUrl = articleMenu.Cover
 		obj.Description = articleMenu.Digest
 	}
+	//插入的时候去增加一个自动生成dfa算法的标签
 	err = obj.Create()
-
+	llm.GenerateDfaTags(obj)
 	// 修改文章封面图
 	go replaceWechatArticleCoverPic(obj)
 

+ 21 - 0
utils/llm/dfa_handler.go

@@ -36,6 +36,8 @@ type DAFService interface {
 	// BatchSubmitTasks 批量提交任务
 	BatchSubmitTasks(tasks []*dfa.ArticleDfaTagMapping)
 	FindTextTagLabels(text string) []string
+
+	SubmitTask(tasks *dfa.ArticleDfaTagMapping)
 }
 
 func (d *DAFHandler) FindTextTagLabels(text string) (labels []string) {
@@ -47,6 +49,21 @@ func (d *DAFHandler) FindTextTagLabels(text string) (labels []string) {
 	}
 	return
 }
+
+func (d *DAFHandler) SubmitTask(task *dfa.ArticleDfaTagMapping) {
+	currentTask := task
+	err := d.WorkerPool.Submit(func() {
+		d.GetTextTagLabels(currentTask)
+		insertErr := d.Insert(currentTask)
+		if insertErr != nil {
+			utils.FileLog.Error("插入dfa算法标签失败:", insertErr.Error())
+		}
+	})
+	if err != nil {
+		utils.FileLog.Error("提交任务失败:", err.Error())
+	}
+
+}
 func (d *DAFHandler) BatchSubmitTasks(tasks []*dfa.ArticleDfaTagMapping) {
 	// 创建结果收集通道
 	results := make(chan *dfa.ArticleDfaTagMapping, len(tasks))
@@ -137,6 +154,10 @@ func (d *DAFHandler) ReloadSensitiveWordMap() {
 func (d *DAFHandler) BatchInsert(tasks []*dfa.ArticleDfaTagMapping) (err error) {
 	return dfa.BatchInsertArticleDfaTagMapping(tasks)
 
+}
+func (d *DAFHandler) Insert(task *dfa.ArticleDfaTagMapping) (err error) {
+	return dfa.InsertArticleDfaTagMapping(task)
+
 }
 func initSensitiveWords() (sensitiveWordMap map[SensitiveWord]TagName) {
 	list, err := dfa.GetList()