refactor(data):重构OpenAi结构体并添加上下文对象

- 在 OpenAi 结构体中添加 ctx 字段,用于传递上下文对象
- 更新 NewDeepSeekOpenAi 函数签名,现在需要传入 context.Context 参数
- 在获取股票信息失败时,除了在控制台输出错误信息外,还通过 runtime.EventsEmit 发送警告消息到前端
- 优化错误信息的显示格式,添加警告图标
This commit is contained in:
spark 2025-02-11 12:52:32 +08:00
parent b459abb35d
commit 267f6f638f
2 changed files with 17 additions and 10 deletions

6
app.go
View File

@ -427,7 +427,7 @@ func (a *App) SendDingDingMessageByType(message string, stockCode string, msgTyp
}
func (a *App) NewChatStream(stock, stockCode string) {
msgs := data.NewDeepSeekOpenAi().NewChatStream(stock, stockCode)
msgs := data.NewDeepSeekOpenAi(a.ctx).NewChatStream(stock, stockCode)
for msg := range msgs {
runtime.EventsEmit(a.ctx, "newChatStream", msg)
}
@ -435,10 +435,10 @@ func (a *App) NewChatStream(stock, stockCode string) {
}
func (a *App) SaveAIResponseResult(stockCode, stockName, result string) {
data.NewDeepSeekOpenAi().SaveAIResponseResult(stockCode, stockName, result)
data.NewDeepSeekOpenAi(a.ctx).SaveAIResponseResult(stockCode, stockName, result)
}
func (a *App) GetAIResponseResult(stock string) *models.AIResponseResult {
return data.NewDeepSeekOpenAi().GetAIResponseResult(stock)
return data.NewDeepSeekOpenAi(a.ctx).GetAIResponseResult(stock)
}
func (a *App) GetVersionInfo() *models.VersionInfo {

View File

@ -9,6 +9,7 @@ import (
"github.com/chromedp/chromedp"
"github.com/duke-git/lancet/v2/strutil"
"github.com/go-resty/resty/v2"
"github.com/wailsapp/wails/v2/pkg/runtime"
"go-stock/backend/db"
"go-stock/backend/logger"
"go-stock/backend/models"
@ -22,6 +23,7 @@ import (
// @Desc
// -----------------------------------------------------------------------------------
type OpenAi struct {
ctx context.Context
BaseUrl string `json:"base_url"`
ApiKey string `json:"api_key"`
Model string `json:"model"`
@ -31,9 +33,10 @@ type OpenAi struct {
TimeOut int `json:"time_out"`
}
func NewDeepSeekOpenAi() *OpenAi {
func NewDeepSeekOpenAi(ctx context.Context) *OpenAi {
config := getConfig()
return &OpenAi{
ctx: ctx,
BaseUrl: config.OpenAiBaseUrl,
ApiKey: config.OpenAiApiKey,
Model: config.OpenAiModelName,
@ -108,7 +111,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
messages := SearchStockPriceInfo(stockCode)
if messages == nil || len(*messages) == 0 {
logger.SugaredLogger.Error("获取股票价格失败")
ch <- "***获取股票价格失败,分析结果可能不准确***<hr>"
ch <- "***❗获取股票价格失败,分析结果可能不准确***<hr>"
go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股票价格失败,分析结果可能不准确")
return
}
price := ""
@ -126,7 +130,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
messages := GetFinancialReports(stockCode)
if messages == nil || len(*messages) == 0 {
logger.SugaredLogger.Error("获取股票财报失败")
ch <- "***获取股票财报失败,分析结果可能不准确***<hr>"
ch <- "***❗获取股票财报失败,分析结果可能不准确***<hr>"
go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股票财报失败,分析结果可能不准确")
return
}
for _, message := range *messages {
@ -142,7 +147,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
messages := GetTelegraphList()
if messages == nil || len(*messages) == 0 {
logger.SugaredLogger.Error("获取市场资讯失败")
ch <- "***获取市场资讯失败,分析结果可能不准确***<hr>"
ch <- "***❗获取市场资讯失败,分析结果可能不准确***<hr>"
go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取市场资讯失败,分析结果可能不准确")
return
}
for _, message := range *messages {
@ -158,7 +164,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
messages := SearchStockInfo(stock, "depth")
if messages == nil || len(*messages) == 0 {
logger.SugaredLogger.Error("获取股票资讯失败")
ch <- "***获取股票资讯失败,分析结果可能不准确***<hr>"
ch <- "***❗获取股票资讯失败,分析结果可能不准确***<hr>"
go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股票资讯失败,分析结果可能不准确")
return
}
for _, message := range *messages {
@ -173,8 +180,8 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string {
messages := SearchStockInfo(stock, "telegram")
if messages == nil || len(*messages) == 0 {
logger.SugaredLogger.Error("获取股票电报资讯失败")
ch <- "***获取股票电报资讯失败,分析结果可能不准确***<hr>"
ch <- "***获取股票电报资讯失败,分析结果可能不准确***<hr>"
go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股票电报资讯失败,分析结果可能不准确")
return
}
for _, message := range *messages {