mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
feat(backend):添加获取新闻资讯功能
- 新增 GetTopNewsList 函数,用于获取新闻资讯 - 在处理用户消息时,添加获取新闻资讯的逻辑 - 当获取新闻资讯失败时,发送警告消息
This commit is contained in:
parent
e622b7d86e
commit
957de8ad8b
@ -157,6 +157,19 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
|
|||||||
"content": message,
|
"content": message,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
messages = GetTopNewsList()
|
||||||
|
if messages == nil || len(*messages) == 0 {
|
||||||
|
logger.SugaredLogger.Error("获取新闻资讯失败")
|
||||||
|
ch <- "***❗获取新闻资讯失败,分析结果可能不准确***<hr>"
|
||||||
|
go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取新闻资讯失败,分析结果可能不准确")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, message := range *messages {
|
||||||
|
msg = append(msg, map[string]interface{}{
|
||||||
|
"role": "assistant",
|
||||||
|
"content": message,
|
||||||
|
})
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
@ -459,6 +472,28 @@ func GetTelegraphList() *[]string {
|
|||||||
return &telegraph
|
return &telegraph
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetTopNewsList() *[]string {
|
||||||
|
url := "https://www.cls.cn"
|
||||||
|
response, err := resty.New().R().
|
||||||
|
SetHeader("Referer", "https://www.cls.cn/").
|
||||||
|
SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.60").
|
||||||
|
Get(fmt.Sprintf(url))
|
||||||
|
if err != nil {
|
||||||
|
return &[]string{}
|
||||||
|
}
|
||||||
|
//logger.SugaredLogger.Info(string(response.Body()))
|
||||||
|
document, err := goquery.NewDocumentFromReader(strings.NewReader(string(response.Body())))
|
||||||
|
if err != nil {
|
||||||
|
return &[]string{}
|
||||||
|
}
|
||||||
|
var telegraph []string
|
||||||
|
document.Find("div.home-article-title a,div.home-article-rec a").Each(func(i int, selection *goquery.Selection) {
|
||||||
|
logger.SugaredLogger.Info(selection.Text())
|
||||||
|
telegraph = append(telegraph, selection.Text())
|
||||||
|
})
|
||||||
|
return &telegraph
|
||||||
|
}
|
||||||
|
|
||||||
func (o OpenAi) SaveAIResponseResult(stockCode, stockName, result string) {
|
func (o OpenAi) SaveAIResponseResult(stockCode, stockName, result string) {
|
||||||
db.Dao.Create(&models.AIResponseResult{
|
db.Dao.Create(&models.AIResponseResult{
|
||||||
StockCode: stockCode,
|
StockCode: stockCode,
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package data
|
package data
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"go-stock/backend/db"
|
"go-stock/backend/db"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNewDeepSeekOpenAiConfig(t *testing.T) {
|
func TestNewDeepSeekOpenAiConfig(t *testing.T) {
|
||||||
db.Init("../../data/stock.db")
|
db.Init("../../data/stock.db")
|
||||||
ai := NewDeepSeekOpenAi()
|
ai := NewDeepSeekOpenAi(context.TODO())
|
||||||
res := ai.NewChatStream("北京文化", "sz000802")
|
res := ai.NewChatStream("北京文化", "sz000802")
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
@ -19,3 +20,7 @@ func TestNewDeepSeekOpenAiConfig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetTopNewsList(t *testing.T) {
|
||||||
|
GetTopNewsList()
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user