|
@@ -75,8 +75,14 @@ func Task() {
|
|
go HandleWechatArticleLLmOp()
|
|
go HandleWechatArticleLLmOp()
|
|
|
|
|
|
// 队列任务将eta报告同步到知识库操作
|
|
// 队列任务将eta报告同步到知识库操作
|
|
|
|
+ go HandleEtaReportUpdateOp()
|
|
|
|
+
|
|
|
|
+ // 定时任务进行eta报告进行LLM操作
|
|
go HandleEtaReportKnowledgeLLmOp()
|
|
go HandleEtaReportKnowledgeLLmOp()
|
|
|
|
|
|
|
|
+ // 定时任务进行进行AI报告/文章的摘要任务LLM操作
|
|
|
|
+ go HandleAiArticleAbstractLlmOp()
|
|
|
|
+
|
|
// 权益报告监听入库
|
|
// 权益报告监听入库
|
|
go AutoInsertRaiReport()
|
|
go AutoInsertRaiReport()
|
|
|
|
|
|
@@ -589,8 +595,8 @@ func ModifyEsEnglishReport() {
|
|
// return rnd.Float64()*11000 - 1000
|
|
// return rnd.Float64()*11000 - 1000
|
|
//}
|
|
//}
|
|
|
|
|
|
-// HandleSearchByWechatOp
|
|
|
|
-// @Description: 处理微信爬虫
|
|
|
|
|
|
+// HandleWechatArticleOp
|
|
|
|
+// @Description: 处理ETA报告加入到知识库
|
|
func HandleWechatArticleOp() {
|
|
func HandleWechatArticleOp() {
|
|
defer func() {
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
if err := recover(); err != nil {
|
|
@@ -600,7 +606,7 @@ func HandleWechatArticleOp() {
|
|
obj := rag.WechatPlatform{}
|
|
obj := rag.WechatPlatform{}
|
|
for {
|
|
for {
|
|
utils.Rc.Brpop(utils.CACHE_WECHAT_PLATFORM_ARTICLE, func(b []byte) {
|
|
utils.Rc.Brpop(utils.CACHE_WECHAT_PLATFORM_ARTICLE, func(b []byte) {
|
|
- wechatArticleOp := new(cache.WechatArticleOp)
|
|
|
|
|
|
+ wechatArticleOp := new(cache.WechatPlatformOp)
|
|
if err := json.Unmarshal(b, &wechatArticleOp); err != nil {
|
|
if err := json.Unmarshal(b, &wechatArticleOp); err != nil {
|
|
fmt.Println("json unmarshal wrong!")
|
|
fmt.Println("json unmarshal wrong!")
|
|
return
|
|
return
|
|
@@ -630,39 +636,66 @@ func HandleWechatArticleLLmOp() {
|
|
fmt.Println("[HandleWechatArticleLLmOp]", err)
|
|
fmt.Println("[HandleWechatArticleLLmOp]", err)
|
|
}
|
|
}
|
|
}()
|
|
}()
|
|
- obj := rag.WechatArticle{}
|
|
|
|
for {
|
|
for {
|
|
- utils.Rc.Brpop(utils.CACHE_WECHAT_PLATFORM_ARTICLE_KNOWLEDGE, func(b []byte) {
|
|
|
|
- wechatArticleOp := new(cache.WechatArticleOp)
|
|
|
|
- if err := json.Unmarshal(b, &wechatArticleOp); err != nil {
|
|
|
|
- fmt.Println("json unmarshal wrong!")
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- item, tmpErr := obj.GetById(wechatArticleOp.WechatPlatformId)
|
|
|
|
- if tmpErr != nil {
|
|
|
|
- // 找不到就处理失败
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
|
|
+ utils.Rc.Brpop(utils.CACHE_WECHAT_PLATFORM_ARTICLE_KNOWLEDGE, handleWechatArticleLLmOp)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
- // 文章加入到知识库
|
|
|
|
- ArticleToKnowledge(item)
|
|
|
|
- // 生成摘要
|
|
|
|
- GenerateWechatArticleAbstract(item, false)
|
|
|
|
- })
|
|
|
|
|
|
+// handleWechatArticleLLmOp
|
|
|
|
+// @Description: 处理微信文章加入知识库
|
|
|
|
+// @author: Roc
|
|
|
|
+// @datetime 2025-04-24 13:33:08
|
|
|
|
+// @param b []byte
|
|
|
|
+func handleWechatArticleLLmOp(b []byte) {
|
|
|
|
+ var err error
|
|
|
|
+ defer func() {
|
|
|
|
+ if err != nil {
|
|
|
|
+ utils.FileLog.Error("[handleWechatArticleLLmOp] params:%s;err:%s", string(b), err.Error())
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+ obj := rag.WechatArticle{}
|
|
|
|
+ wechatArticleOp := new(cache.WechatArticleOp)
|
|
|
|
+ if err = json.Unmarshal(b, &wechatArticleOp); err != nil {
|
|
|
|
+ fmt.Println("json unmarshal wrong!")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ item, err := obj.GetById(wechatArticleOp.WechatArticleId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ // 找不到就处理失败
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 文章加入到知识库
|
|
|
|
+ ArticleToKnowledge(item)
|
|
|
|
+
|
|
|
|
+ // 生成摘要
|
|
|
|
+ if wechatArticleOp.QuestionId <= 0 {
|
|
|
|
+ // 全部摘要生成
|
|
|
|
+ GenerateWechatArticleAbstract(item, false)
|
|
|
|
+ } else {
|
|
|
|
+ questionObj := rag.Question{}
|
|
|
|
+ questionInfo, tmpErr := questionObj.GetByID(wechatArticleOp.QuestionId)
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = tmpErr
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 指定指定摘要生成
|
|
|
|
+ err = GenerateWechatArticleAbstractByQuestion(item, questionInfo, false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-// HandleEtaReportKnowledgeLLmOp
|
|
|
|
|
|
+// HandleEtaReportUpdateOp
|
|
// @Description: 处理eta报告加入知识库操作
|
|
// @Description: 处理eta报告加入知识库操作
|
|
-func HandleEtaReportKnowledgeLLmOp() {
|
|
|
|
|
|
+func HandleEtaReportUpdateOp() {
|
|
defer func() {
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
if err := recover(); err != nil {
|
|
- fmt.Println("[HandleEtaReportKnowledgeLLmOp]", err)
|
|
|
|
|
|
+ fmt.Println("[HandleEtaReportUpdateOp]", err)
|
|
}
|
|
}
|
|
}()
|
|
}()
|
|
for {
|
|
for {
|
|
utils.Rc.Brpop(utils.CACHE_ETA_REPORT_KNOWLEDGE, func(b []byte) {
|
|
utils.Rc.Brpop(utils.CACHE_ETA_REPORT_KNOWLEDGE, func(b []byte) {
|
|
- ragEtaReportOpOp := new(cache.RagEtaReportOpOp)
|
|
|
|
|
|
+ ragEtaReportOpOp := new(cache.RagEtaReportOp)
|
|
if err := json.Unmarshal(b, &ragEtaReportOpOp); err != nil {
|
|
if err := json.Unmarshal(b, &ragEtaReportOpOp); err != nil {
|
|
fmt.Println("json unmarshal wrong!")
|
|
fmt.Println("json unmarshal wrong!")
|
|
return
|
|
return
|
|
@@ -677,3 +710,213 @@ func HandleEtaReportKnowledgeLLmOp() {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// HandleEtaReportKnowledgeLLmOp
|
|
|
|
+// @Description: 处理微信文章加入知识库
|
|
|
|
+func HandleEtaReportKnowledgeLLmOp() {
|
|
|
|
+ defer func() {
|
|
|
|
+ if err := recover(); err != nil {
|
|
|
|
+ fmt.Println("[HandleEtaReportKnowledgeLLmOp]", err)
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ for {
|
|
|
|
+ utils.Rc.Brpop(utils.CACHE_ETA_REPORT_KNOWLEDGE_LLM, handleEtaReportKnowledgeLLmOp)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// handleEtaReportKnowledgeLLmOp
|
|
|
|
+// @Description: 处理微信文章加入知识库操作
|
|
|
|
+// @author: Roc
|
|
|
|
+// @datetime 2025-04-24 14:04:10
|
|
|
|
+// @param b []byte
|
|
|
|
+func handleEtaReportKnowledgeLLmOp(b []byte) {
|
|
|
|
+ var err error
|
|
|
|
+ defer func() {
|
|
|
|
+ if err != nil {
|
|
|
|
+ utils.FileLog.Error("[handleEtaReportKnowledgeLLmOp] params:%s;err:%s", string(b), err.Error())
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ obj := rag.RagEtaReport{}
|
|
|
|
+ wechatArticleOp := new(cache.RagEtaReportLlmOp)
|
|
|
|
+ if err = json.Unmarshal(b, &wechatArticleOp); err != nil {
|
|
|
|
+ fmt.Println("json unmarshal wrong!")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ item, err := obj.GetById(wechatArticleOp.RagEtaReportId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ // 找不到就处理失败
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 已经删除的就不做操作了
|
|
|
|
+ if item.IsDeleted == 1 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 未发布的就不操作了
|
|
|
|
+ if item.IsPublished != 1 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 文章加入到知识库
|
|
|
|
+ //ArticleToKnowledge(item)
|
|
|
|
+
|
|
|
|
+ // 生成摘要
|
|
|
|
+
|
|
|
|
+ if wechatArticleOp.QuestionId <= 0 {
|
|
|
|
+ // 全部提示词摘要生成
|
|
|
|
+ GenerateRagEtaReportAbstract(item, wechatArticleOp.ForceGenerate)
|
|
|
|
+ } else {
|
|
|
|
+ questionObj := rag.Question{}
|
|
|
|
+ questionInfo, tmpErr := questionObj.GetByID(wechatArticleOp.QuestionId)
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = tmpErr
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 全部提示词摘要生成
|
|
|
|
+ err = GenerateRagEtaReportAbstractByQuestion(item, questionInfo, wechatArticleOp.ForceGenerate)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// HandleAiArticleAbstractLlmOp
|
|
|
|
+// @Description: 处理AI库的报告摘要生成(批量任务)
|
|
|
|
+// @author: Roc
|
|
|
|
+// @datetime 2025-04-24 10:25:51
|
|
|
|
+func HandleAiArticleAbstractLlmOp() {
|
|
|
|
+ defer func() {
|
|
|
|
+ if err := recover(); err != nil {
|
|
|
|
+ fmt.Println("[HandleAiArticleAbstractLlmOp]", err)
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+ for {
|
|
|
|
+ utils.Rc.Brpop(utils.CACHE_AI_ARTICLE_ABSTRACT_LLM_TASK, handleAiArticleAbstractLlmOp)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// handleAiArticleAbstractLlmOp
|
|
|
|
+// @Description: 处理AI库的报告摘要生成(批量任务)
|
|
|
|
+// @author: Roc
|
|
|
|
+// @datetime 2025-04-24 11:26:05
|
|
|
|
+// @param b []byte
|
|
|
|
+func handleAiArticleAbstractLlmOp(b []byte) {
|
|
|
|
+ var err error
|
|
|
|
+ defer func() {
|
|
|
|
+ if err != nil {
|
|
|
|
+ utils.FileLog.Error("[handleAiArticleAbstractLlmOp] params:%s;err:%s", string(b), err.Error())
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+ obj := rag.AiTaskRecord{}
|
|
|
|
+ aiTaskRecordOp := new(cache.AiTaskRecordOp)
|
|
|
|
+ if err = json.Unmarshal(b, &aiTaskRecordOp); err != nil {
|
|
|
|
+ fmt.Println("json unmarshal wrong!")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ item, err := obj.GetByID(aiTaskRecordOp.AiTaskRecordId)
|
|
|
|
+ if err != nil {
|
|
|
|
+ err = fmt.Errorf("查找任务记录状态失败, err: %s", err.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 处理完成后标记任务状态
|
|
|
|
+ defer func() {
|
|
|
|
+ // 修改任务状态
|
|
|
|
+ todoCount, tmpErr := obj.GetCountByCondition(fmt.Sprintf(` AND %s = ? AND %s = ? `, rag.AiTaskColumns.AiTaskID, rag.AiTaskColumns.Status), []interface{}{item.AiTaskID, `待处理`})
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = fmt.Errorf("查找剩余任务数量失败, err: %s", tmpErr.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if todoCount <= 0 {
|
|
|
|
+ aiTaskObj := rag.AiTask{}
|
|
|
|
+ aiTaskInfo, tmpErr := aiTaskObj.GetByID(item.AiTaskID)
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = fmt.Errorf("查找任务失败, err: %s", tmpErr.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ aiTaskInfo.Status = `done`
|
|
|
|
+ aiTaskInfo.UpdateTime = time.Now()
|
|
|
|
+ tmpErr = aiTaskInfo.Update([]string{"status", "update_time"})
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = fmt.Errorf("标记任务状态失败, err: %s", tmpErr.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ // 不是待处理就不处理
|
|
|
|
+ if item.Status != `待处理` {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 处理完成后标记记录状态
|
|
|
|
+ defer func() {
|
|
|
|
+ status := `处理成功`
|
|
|
|
+ remark := ``
|
|
|
|
+ if err != nil {
|
|
|
|
+ status = `处理失败`
|
|
|
|
+ remark = err.Error()
|
|
|
|
+ }
|
|
|
|
+ item.Status = status
|
|
|
|
+ item.Remark = remark
|
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
|
+ tmpErr := item.Update([]string{"status", "remark", "modify_time"})
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = fmt.Errorf("标记任务记录状态失败, err: %s", tmpErr.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ var params rag.QuestionGenerateAbstractParam
|
|
|
|
+ if err = json.Unmarshal([]byte(item.Parameters), ¶ms); err != nil {
|
|
|
|
+ fmt.Println("json unmarshal wrong!")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 查找提示词
|
|
|
|
+ questionObj := rag.Question{}
|
|
|
|
+ questionInfo, tmpErr := questionObj.GetByID(params.QuestionId)
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ // 找不到就处理失败
|
|
|
|
+ err = fmt.Errorf("查找提示词失败, err: %s", err.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch params.ArticleType {
|
|
|
|
+ case `wechat_article`:
|
|
|
|
+ articleObj := rag.WechatArticle{}
|
|
|
|
+ articleInfo, tmpErr := articleObj.GetById(params.ArticleId)
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = tmpErr
|
|
|
|
+ // 找不到就处理失败
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ // 生成摘要
|
|
|
|
+ err = GenerateWechatArticleAbstractByQuestion(articleInfo, questionInfo, true)
|
|
|
|
+ case `rag_eta_report`:
|
|
|
|
+ articleObj := rag.RagEtaReport{}
|
|
|
|
+ articleInfo, tmpErr := articleObj.GetById(params.ArticleId)
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ err = tmpErr
|
|
|
|
+ // 找不到就处理失败
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 已经删除的就不做操作了
|
|
|
|
+ if articleInfo.IsDeleted == 1 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 未发布的就不操作了
|
|
|
|
+ if articleInfo.IsPublished != 1 {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 生成摘要
|
|
|
|
+ err = GenerateRagEtaReportAbstractByQuestion(articleInfo, questionInfo, true)
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+}
|