From 267f6f638f86f8093fa72ab22943970c3a76afda Mon Sep 17 00:00:00 2001 From: spark Date: Tue, 11 Feb 2025 12:52:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor(data):=E9=87=8D=E6=9E=84OpenAi?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=BD=93=E5=B9=B6=E6=B7=BB=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=96=87=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 OpenAi 结构体中添加 ctx 字段,用于传递上下文对象 - 更新 NewDeepSeekOpenAi 函数签名,现在需要传入 context.Context 参数 - 在获取股票信息失败时,除了在控制台输出错误信息外,还通过 runtime.EventsEmit 发送警告消息到前端 - 优化错误信息的显示格式,添加警告图标 --- app.go | 6 +++--- backend/data/openai_api.go | 21 ++++++++++++++------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app.go b/app.go index 50ce81b..b78f00c 100644 --- a/app.go +++ b/app.go @@ -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 { diff --git a/backend/data/openai_api.go b/backend/data/openai_api.go index 84a6f8f..f9a2a62 100644 --- a/backend/data/openai_api.go +++ b/backend/data/openai_api.go @@ -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 <- "***获取股票价格失败,分析结果可能不准确***
" + ch <- "***❗获取股票价格失败,分析结果可能不准确***
" + 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 <- "***获取股票财报失败,分析结果可能不准确***
" + ch <- "***❗获取股票财报失败,分析结果可能不准确***
" + 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 <- "***获取市场资讯失败,分析结果可能不准确***
" + ch <- "***❗获取市场资讯失败,分析结果可能不准确***
" + 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 <- "***获取股票资讯失败,分析结果可能不准确***
" + ch <- "***❗获取股票资讯失败,分析结果可能不准确***
" + 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 <- "***获取股票电报资讯失败,分析结果可能不准确***
" - + ch <- "***❗获取股票电报资讯失败,分析结果可能不准确***
" + go runtime.EventsEmit(o.ctx, "warnMsg", "❗获取股票电报资讯失败,分析结果可能不准确") return } for _, message := range *messages {