diff --git a/app.go b/app.go index 7cd70de..02883dd 100644 --- a/app.go +++ b/app.go @@ -737,7 +737,7 @@ func getScreenResolution() (int, int, error) { func (a *App) ShareAnalysis(stockCode, stockName string) string { //http://go-stock.sparkmemory.top:16688/upload res := data.NewDeepSeekOpenAi(a.ctx).GetAIResponseResult(stockCode) - if res != nil { + if res != nil && len(res.Content) > 100 { analysisTime := res.CreatedAt.Format("2006/01/02") logger.SugaredLogger.Infof("%s analysisTime:%s", res.CreatedAt, analysisTime) response, err := resty.New().SetHeader("ua-x", "go-stock").R().SetFormData(map[string]string{ @@ -750,8 +750,9 @@ func (a *App) ShareAnalysis(stockCode, stockName string) string { return err.Error() } return response.String() + } else { + return "分析结果异常" } - return "获取分析结果失败" } func (a *App) GetfundList(key string) []data.FundBasic { diff --git a/backend/data/fund_data_api.go b/backend/data/fund_data_api.go index db1f1d5..84006b6 100644 --- a/backend/data/fund_data_api.go +++ b/backend/data/fund_data_api.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "github.com/duke-git/lancet/v2/convertor" + "github.com/duke-git/lancet/v2/mathutil" "github.com/duke-git/lancet/v2/strutil" "github.com/go-resty/resty/v2" "go-stock/backend/db" @@ -34,12 +35,16 @@ type FollowedFund struct { Code string `json:"code" gorm:"index"` // 基金代码 Name string `json:"name"` // 基金简称 - NetUnitValue *float64 `json:"netUnitValue"` // 单位净值 - NetUnitValueDate string `json:"netUnitValueDate"` // 单位净值日期 - NetEstimatedUnit *float64 `json:"netEstimatedUnit"` // 估算单位净值 - NetEstimatedTime string `json:"netEstimatedUnitTime"` // 估算单位净值日期 - NetAccumulated *float64 `json:"netAccumulated"` // 累计净值 - FundBasic FundBasic `json:"fundBasic" gorm:"foreignKey:Code;references:Code"` + NetUnitValue *float64 `json:"netUnitValue"` // 单位净值 + NetUnitValueDate string `json:"netUnitValueDate"` // 单位净值日期 + NetEstimatedUnit *float64 `json:"netEstimatedUnit"` // 估算单位净值 + NetEstimatedTime string `json:"netEstimatedUnitTime"` // 估算单位净值日期 + NetAccumulated *float64 `json:"netAccumulated"` // 累计净值 + + //计算值 + NetEstimatedRate *float64 `json:"netEstimatedRate"` // 估算单位净值涨跌幅 + + FundBasic FundBasic `json:"fundBasic" gorm:"foreignKey:Code;references:Code"` } func (FollowedFund) TableName() string { @@ -226,6 +231,14 @@ func (f *FundApi) GetFundList(key string) []FundBasic { func (f *FundApi) GetFollowedFund() []FollowedFund { var funds []FollowedFund db.Dao.Preload("FundBasic").Find(&funds) + for i, fund := range funds { + if fund.NetUnitValue != nil && fund.NetEstimatedUnit != nil && *fund.NetUnitValue > 0 { + netEstimatedRate := (*(funds[i].NetEstimatedUnit) - *(funds[i].NetUnitValue)) / *(fund.NetUnitValue) * 100 + netEstimatedRate = mathutil.RoundToFloat(netEstimatedRate, 2) + funds[i].NetEstimatedRate = &netEstimatedRate + } + + } return funds } func (f *FundApi) FollowFund(fundCode string) string { diff --git a/backend/data/stock_data_api.go b/backend/data/stock_data_api.go index 880be60..83038de 100644 --- a/backend/data/stock_data_api.go +++ b/backend/data/stock_data_api.go @@ -478,7 +478,7 @@ func ParseFullSingleStockData(data string) (*StockInfo, error) { } var result map[string]string var err error - if strutil.ContainsAny(datas[0], []string{"hq_str_sz", "hq_str_sh"}) { + if strutil.ContainsAny(datas[0], []string{"hq_str_sz", "hq_str_sh", "hq_str_bj", "hq_str_sb"}) { result, err = ParseSHSZStockData(datas) } if strutil.ContainsAny(datas[0], []string{"hq_str_hk"}) { diff --git a/backend/data/stock_data_api_test.go b/backend/data/stock_data_api_test.go index 2c9f599..a0e2f97 100644 --- a/backend/data/stock_data_api_test.go +++ b/backend/data/stock_data_api_test.go @@ -85,7 +85,7 @@ func TestParseFullSingleStockData(t *testing.T) { SetHeader("Host", "hq.sinajs.cn"). SetHeader("Referer", "https://finance.sina.com.cn/"). SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"). - Get(fmt.Sprintf(sinaStockUrl, time.Now().Unix(), "sh600584,sz000938,hk01810,hk00856,gb_aapl,gb_tsla")) + Get(fmt.Sprintf(sinaStockUrl, time.Now().Unix(), "sh600584,sz000938,hk01810,hk00856,gb_aapl,gb_tsla,sb873721,bj430300")) if err != nil { logger.SugaredLogger.Error(err.Error()) } diff --git a/frontend/src/components/about.vue b/frontend/src/components/about.vue index 920689f..efff180 100644 --- a/frontend/src/components/about.vue +++ b/frontend/src/components/about.vue @@ -98,7 +98,7 @@ EventsOn("updateVersion",async (msg) => {
目前已支持A股,港股,美股,未来计划加入基金,ETF等支持
支持DeepSeek,OpenAI, Ollama,LMStudio,AnythingLLM,硅基流动,火山方舟,阿里云百炼等平台或模型
- 本软件仅供学习研究,AI分析股票结果仅供参考,不提供任何投资建议或决策。 + 本软件仅供学习研究目的,AI分析结果仅供参考,本软件不提供任何投资建议或决策,风险自担!
欢迎点赞GitHub:go-stock
更新说明:{{updateLog}}
- +项目社区:https://go-stock.sparkmemory.top/
+QQ交流群:491605333
一个热爱编程的小白,欢迎关注我的Github
-
- 邮箱:sparkmemory@163.com
*加微信或者QQ时,请先备注或留言需求(如:技术支持,功能建议,商业咨询等,否则会被忽略)
开源不易,如果觉得好用,可以请作者喝杯咖啡。
如有问题,请先查看项目文档,如果问题依然存在,请优先加群(491605333)咨询。
如需软件商业授权或定制开发,请联系作者微信(备注 商业咨询):ArvinLovegood
@@ -157,8 +154,9 @@ EventsOn("updateVersion",async (msg) => { 本软件基于开源技术构建,使用Wails、NaiveUI、Vue等开源项目。技术上如有问题,可以先向对应的开源社区请求帮助。- 开源不易,本人精力和时间有限,如确实需要一对一技术支持,请先赞助。联系微信(备注 技术支持):ArvinLovegood + 开源不易,本人精力和时间有限,如确实需要一对一技术支持,请先赞助!联系微信(备注 技术支持):ArvinLovegood
+*加微信或者QQ时,请先备注或留言需求(如:技术支持,功能建议,商业咨询等,否则会被忽略)