Răsfoiți Sursa

fix:文章加入到es

Roc 1 săptămână în urmă
părinte
comite
3ad7e0758f

+ 24 - 2
controllers/llm/wechat_platform.go

@@ -9,6 +9,7 @@ import (
 	"eta/eta_api/models/rag/request"
 	"eta/eta_api/models/rag/response"
 	"eta/eta_api/models/system"
+	"eta/eta_api/services"
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
@@ -387,7 +388,7 @@ func (c *WechatPlatformController) Op() {
 		return
 	}
 	obj := rag.WechatPlatform{}
-	wechatPlatform, err := obj.GetByID(req.WechatPlatformId)
+	wechatPlatform, err := obj.GetById(req.WechatPlatformId)
 	if err != nil {
 		br.Msg = "修改失败"
 		br.ErrMsg = "修改失败,Err:" + err.Error()
@@ -406,6 +407,9 @@ func (c *WechatPlatformController) Op() {
 		return
 	}
 
+	// 异步处理公众号下面的文章
+	go services.AddOrEditEsWechatPlatformId(wechatPlatform.WechatPlatformId)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "修改成功"
@@ -443,7 +447,7 @@ func (c *WechatPlatformController) Refresh() {
 	}
 
 	obj := rag.WechatPlatform{}
-	wechatPlatform, err := obj.GetByID(req.WechatPlatformId)
+	wechatPlatform, err := obj.GetById(req.WechatPlatformId)
 	if err != nil {
 		br.Msg = "修改失败"
 		br.ErrMsg = "修改失败,Err:" + err.Error()
@@ -648,6 +652,9 @@ func (c *WechatPlatformController) ArticleDel() {
 		return
 	}
 
+	// 修改ES信息
+	services.AddOrEditEsWechatArticle(item.WechatArticleId)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "删除成功"
@@ -701,3 +708,18 @@ func (c *WechatPlatformController) ArticleDel() {
 //
 //	fmt.Println("修复结束")
 //}
+
+//func init() {
+//	// 微信文章加到es
+//	{
+//		obj := rag.WechatArticle{}
+//		list, _ := obj.GetListByCondition(` wechat_article_id `, ` `, []interface{}{}, 0, 1000)
+//		total := len(list)
+//		for k, item := range list {
+//			fmt.Println(k, "/", total)
+//			services.AddOrEditEsWechatArticle(item.WechatArticleId)
+//		}
+//
+//		fmt.Println("结束了")
+//	}
+//}

+ 11 - 2
models/business_conf.go

@@ -58,8 +58,10 @@ const (
 	BusinessConfEsIndexNameExcel             = "EsIndexNameExcel"             // ES索引名称-表格
 	BusinessConfEsIndexNameDataSource        = "EsIndexNameDataSource"        // ES索引名称-数据源
 	LLMInitConfig                            = "llmInitConfig"
-	KnowledgeBaseName                        = "KnowledgeBaseName"    // 摘要库
-	KnowledgeArticleName                     = "KnowledgeArticleName" // 原文库
+	KnowledgeBaseName                        = "KnowledgeBaseName"                // 摘要库
+	KnowledgeArticleName                     = "KnowledgeArticleName"             // 原文库
+	BusinessConfEsWechatArticle              = "EsIndexNameWechatArticle"         // ES索引名称-微信文章
+	BusinessConfEsWechatArticleAbstract      = "EsIndexNameWechatArticleAbstract" // ES索引名称-微信文章摘要
 )
 
 const (
@@ -264,6 +266,13 @@ func InitBusinessConf() {
 	if BusinessConfMap[BusinessConfEsIndexNameDataSource] != "" {
 		utils.EsDataSourceIndexName = BusinessConfMap[BusinessConfEsIndexNameDataSource]
 	}
+	// ES索引名称
+	if BusinessConfMap[BusinessConfEsWechatArticle] != "" {
+		utils.EsWechatArticleName = BusinessConfMap[BusinessConfEsWechatArticle]
+	}
+	if BusinessConfMap[BusinessConfEsWechatArticleAbstract] != "" {
+		utils.EsWechatArticleAbstractName = BusinessConfMap[BusinessConfEsWechatArticleAbstract]
+	}
 	confStr := BusinessConfMap[LLMInitConfig]
 	if confStr != "" {
 		var config LLMConfig

+ 0 - 1
models/rag/wechat_article.go

@@ -290,7 +290,6 @@ func (m *WechatArticle) GetCountByPlatformCondition(condition string, pars []int
 }
 
 func (m *WechatArticle) GetPageListByPlatformCondition(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*WechatArticleAndPlatform, err error) {
-
 	total, err = m.GetCountByPlatformCondition(condition, pars)
 	if err != nil {
 		return

+ 1 - 1
models/rag/wechat_platform.go

@@ -78,7 +78,7 @@ func (m *WechatPlatform) Del() (err error) {
 	return
 }
 
-func (m *WechatPlatform) GetByID(wechatPlatformId int) (item *WechatPlatform, err error) {
+func (m *WechatPlatform) GetById(wechatPlatformId int) (item *WechatPlatform, err error) {
 	err = global.DbMap[utils.DbNameAI].Where(fmt.Sprintf("%s = ?", WechatPlatformColumns.WechatPlatformID), wechatPlatformId).First(&item).Error
 
 	return

+ 102 - 0
services/elastic/wechat_article.go

@@ -0,0 +1,102 @@
+package elastic
+
+import (
+	"context"
+	"eta/eta_api/utils"
+	"fmt"
+	"time"
+)
+
+// WechatArticleAndPlatform
+// @Description: 存入ES的数据
+type WechatArticleAndPlatform struct {
+	WechatArticleId  int    `gorm:"column:wechat_article_id;type:int(10) UNSIGNED;primaryKey;not null;" description:""`
+	WechatPlatformId int    `gorm:"column:wechat_platform_id;type:int(11);comment:归属公众号id;default:0;" description:"归属公众号id"`
+	FakeId           string `gorm:"column:fake_id;type:varchar(255);comment:公众号唯一id;" description:"公众号唯一id"`
+	Title            string `gorm:"column:title;type:varchar(255);comment:标题;" description:"标题"`
+	Link             string `gorm:"column:link;type:varchar(255);comment:链接;" description:"链接"`
+	CoverUrl         string `gorm:"column:cover_url;type:varchar(255);comment:公众号封面;" description:"公众号封面"`
+	Description      string `gorm:"column:description;type:varchar(255);comment:描述;" description:"描述"`
+	Content          string `gorm:"column:content;type:longtext;comment:报告详情;" description:"报告详情"`
+	TextContent      string `gorm:"column:text_content;type:text;comment:文本内容;" description:"文本内容"`
+	//Abstract          string    `gorm:"column:abstract;type:text;comment:摘要;" description:"摘要"`
+	Country           string    `gorm:"column:country;type:varchar(255);comment:国家;" description:"国家"`
+	Province          string    `gorm:"column:province;type:varchar(255);comment:省;" description:"省"`
+	City              string    `gorm:"column:city;type:varchar(255);comment:市;" description:"市"`
+	ArticleCreateTime time.Time `gorm:"column:article_create_time;type:datetime;comment:报告创建时间;default:NULL;" description:"报告创建时间"`
+	IsDeleted         int       `gorm:"column:is_deleted;type:tinyint(4);comment:是否删除,0:未删除,1: 已删除;default:0;" description:"是否删除,0:未删除,1: 已删除"`
+	ModifyTime        time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;" description:"修改时间"`
+	CreateTime        time.Time `gorm:"column:create_time;type:datetime;comment:入库时间;default:NULL;" description:"入库时间"`
+	Nickname          string    `gorm:"column:nickname;type:varchar(255);comment:公众号名称;" description:"nickname"`          // 公众号名称
+	Alias             string    `gorm:"column:alias;type:varchar(255);comment:别名;" description:"alias"`                   // 别名
+	RoundHeadImg      string    `gorm:"column:round_head_img;type:varchar(255);comment:头像;" description:"round_head_img"` // 头像
+}
+
+// WechatArticleEsAddOrEdit
+// @Description: 新增/编辑微信文章
+// @author: Roc
+// @datetime 2025-03-13 10:24:05
+// @param docId string
+// @param item WechatArticleAndPlatform
+// @return err error
+func WechatArticleEsAddOrEdit(docId string, item WechatArticleAndPlatform) (err error) {
+	if docId == "" {
+		return
+	}
+	if utils.EsWechatArticleName == `` {
+		return
+	}
+	defer func() {
+		if err != nil {
+			fmt.Println("WechatArticleEsAddOrEdit Err:", err.Error())
+		}
+	}()
+	client := utils.EsClient
+
+	resp, err := client.Index().Index(utils.EsWechatArticleName).Id(docId).BodyJson(item).Refresh("true").Do(context.Background())
+	if err != nil {
+		fmt.Println("新增失败:", err.Error())
+		return err
+	}
+	if resp.Status == 0 {
+		fmt.Println("新增成功", resp.Result)
+		err = nil
+	} else {
+		fmt.Println("WechatArticleEsAddOrEdit", resp.Status, resp.Result)
+	}
+
+	return
+}
+
+// WechatArticleEsDel
+// @Description: 删除微信文章
+// @author: Roc
+// @datetime 2025-03-13 10:23:55
+// @param docId string
+// @return err error
+func WechatArticleEsDel(docId string) (err error) {
+	if docId == "" {
+		return
+	}
+	if utils.EsWechatArticleName == `` {
+		return
+	}
+	defer func() {
+		if err != nil {
+			fmt.Println("EsDeleteEdbInfoData Err:", err.Error())
+		}
+	}()
+	client := utils.EsClient
+
+	resp, err := client.Delete().Index(utils.EsWechatArticleName).Id(docId).Refresh(`true`).Do(context.Background())
+	if err != nil {
+		return
+	}
+	if resp.Status == 0 {
+		fmt.Println("删除成功")
+	} else {
+		fmt.Println("WechatArticleEsDel", resp.Status, resp.Result)
+	}
+
+	return
+}

+ 1 - 1
services/task.go

@@ -599,7 +599,7 @@ func HandleWechatArticleOp() {
 				fmt.Println("json unmarshal wrong!")
 				return
 			}
-			item, tmpErr := obj.GetByID(wechatArticleOp.WechatPlatformId)
+			item, tmpErr := obj.GetById(wechatArticleOp.WechatPlatformId)
 			if tmpErr != nil {
 				// 找不到就处理失败
 				return

+ 76 - 0
services/wechat_platform.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_api/cache"
 	"eta/eta_api/models"
 	"eta/eta_api/models/rag"
+	"eta/eta_api/services/elastic"
 	"eta/eta_api/services/llm"
 	"eta/eta_api/utils"
 	"eta/eta_api/utils/llm/eta_llm/eta_llm_http"
@@ -691,6 +692,9 @@ func replaceWechatArticleCoverPic(item *rag.WechatArticle) {
 			utils.FileLog.Error("替换公众号头像失败,err:%v", err)
 			fmt.Println("替换公众号头像失败,err:", err)
 		}
+
+		// 数据入ES库
+		AddOrEditEsWechatArticle(item.WechatArticleId)
 	}()
 	if item.CoverUrl == `` {
 		return
@@ -819,3 +823,75 @@ func handleNode(n *html2.Node) {
 		handleNode(c)
 	}
 }
+
+// AddOrEditEsWechatPlatformId
+// @Description: 批量处理某个公众号下的文章到ES
+// @author: Roc
+// @datetime 2025-03-13 11:01:28
+// @param articleId int
+func AddOrEditEsWechatPlatformId(wechatPlatformId int) {
+	if utils.EsWechatArticleName == `` {
+		return
+	}
+	obj := rag.WechatArticle{}
+	list, _ := obj.GetListByCondition(` wechat_article_id `, ` AND wechat_platform_id = ? `, []interface{}{wechatPlatformId}, 0, 1000000)
+	for _, item := range list {
+		AddOrEditEsWechatArticle(item.WechatArticleId)
+	}
+}
+
+// AddOrEditEsWechatArticle
+// @Description: 新增/编辑微信文章入ES
+// @author: Roc
+// @datetime 2025-03-13 11:01:28
+// @param articleId int
+func AddOrEditEsWechatArticle(articleId int) {
+	if utils.EsWechatArticleName == `` {
+		return
+	}
+
+	var err error
+	defer func() {
+		if err != nil {
+			utils.FileLog.Error("添加公众号微信信息到ES失败,err:%v", err)
+			fmt.Println("添加公众号微信信息到ES失败,err:", err)
+		}
+	}()
+	obj := rag.WechatArticle{}
+	articleInfo, err := obj.GetById(articleId)
+	if err != nil {
+		err = fmt.Errorf("获取公众号文章信息失败,Err:" + err.Error())
+		return
+	}
+	platformObj := rag.WechatPlatform{}
+	platformInfo, err := platformObj.GetById(articleInfo.WechatPlatformId)
+	if err != nil {
+		err = fmt.Errorf("获取公众号文章信息失败,Err:" + err.Error())
+		return
+	}
+
+	esItem := elastic.WechatArticleAndPlatform{
+		WechatArticleId:  articleInfo.WechatArticleId,
+		WechatPlatformId: articleInfo.WechatPlatformId,
+		FakeId:           articleInfo.FakeId,
+		Title:            articleInfo.Title,
+		Link:             articleInfo.Link,
+		CoverUrl:         articleInfo.CoverUrl,
+		Description:      articleInfo.Description,
+		Content:          articleInfo.Content,
+		TextContent:      articleInfo.TextContent,
+		//AbstractStatus:          articleInfo.AbstractStatus,
+		Country:           articleInfo.Country,
+		Province:          articleInfo.Province,
+		City:              articleInfo.City,
+		ArticleCreateTime: articleInfo.ArticleCreateTime,
+		IsDeleted:         articleInfo.IsDeleted,
+		ModifyTime:        articleInfo.ModifyTime,
+		CreateTime:        articleInfo.CreateTime,
+		Nickname:          platformInfo.Nickname,
+		Alias:             platformInfo.Alias,
+		RoundHeadImg:      platformInfo.RoundHeadImg,
+	}
+
+	err = elastic.WechatArticleEsAddOrEdit(strconv.Itoa(articleInfo.WechatArticleId), esItem)
+}

+ 2 - 0
utils/config.go

@@ -146,6 +146,8 @@ var (
 	SmartReportIndexName           string //智能研报ES索引
 	EsExcelIndexName               string // 表格ES索引名称
 	EsDataSourceIndexName          string // 数据源ES索引名称
+	EsWechatArticleName            string // ES索引名称-微信文章
+	EsWechatArticleAbstractName    string // ES索引名称-微信文章摘要
 )
 
 var (