diff --git a/backend/data/market_news_api.go b/backend/data/market_news_api.go index 94cd00a..913f49f 100644 --- a/backend/data/market_news_api.go +++ b/backend/data/market_news_api.go @@ -771,3 +771,64 @@ func (m MarketNewsApi) GetCPI() *models.CPIResp { logger.SugaredLogger.Infof("GDP:%+v", res) return res } + +// GetPPI PPI +func (m MarketNewsApi) GetPPI() *models.PPIResp { + res := &models.PPIResp{} + url := "https://datacenter-web.eastmoney.com/api/data/v1/get?callback=data&columns=REPORT_DATE,TIME,BASE,BASE_SAME,BASE_ACCUMULATE&pageNumber=1&pageSize=20&sortColumns=REPORT_DATE&sortTypes=-1&source=WEB&client=WEB&reportName=RPT_ECONOMY_PPI&p=1&pageNo=1&pageNum=1&_=" + strconv.FormatInt(time.Now().Unix(), 10) + resp, err := resty.New().SetTimeout(time.Duration(30)*time.Second).R(). + SetHeader("Host", "datacenter-web.eastmoney.com"). + SetHeader("Origin", "https://datacenter.eastmoney.com"). + SetHeader("Referer", "https://data.eastmoney.com/cjsj/gdp.html"). + SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0"). + Get(url) + if err != nil { + logger.SugaredLogger.Errorf("GDP err:%s", err.Error()) + return res + } + body := resp.Body() + vm := otto.New() + vm.Run("function data(res){return res};") + + val, err := vm.Run(body) + if err != nil { + return res + } + data, _ := val.Object().Value().Export() + marshal, err := json.Marshal(data) + if err != nil { + return res + } + json.Unmarshal(marshal, &res) + return res +} + +func (m MarketNewsApi) GetPMI() *models.PMIResp { + res := &models.PMIResp{} + url := "https://datacenter-web.eastmoney.com/api/data/v1/get?callback=data&columns=REPORT_DATE%2CTIME%2CMAKE_INDEX%2CMAKE_SAME%2CNMAKE_INDEX%2CNMAKE_SAME&pageNumber=1&pageSize=20&sortColumns=REPORT_DATE&sortTypes=-1&source=WEB&client=WEB&reportName=RPT_ECONOMY_PMI&p=1&pageNo=1&pageNum=1&_=" + strconv.FormatInt(time.Now().Unix(), 10) + resp, err := resty.New().SetTimeout(time.Duration(30)*time.Second).R(). + SetHeader("Host", "datacenter-web.eastmoney.com"). + SetHeader("Origin", "https://datacenter.eastmoney.com"). + SetHeader("Referer", "https://data.eastmoney.com/cjsj/gdp.html"). + SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0"). + Get(url) + if err != nil { + return res + } + body := resp.Body() + vm := otto.New() + vm.Run("function data(res){return res};") + + val, err := vm.Run(body) + if err != nil { + return res + } + data, _ := val.Object().Value().Export() + marshal, err := json.Marshal(data) + if err != nil { + return res + } + json.Unmarshal(marshal, &res) + return res + +} diff --git a/backend/data/market_news_api_test.go b/backend/data/market_news_api_test.go index 86938e6..d0f0b7a 100644 --- a/backend/data/market_news_api_test.go +++ b/backend/data/market_news_api_test.go @@ -187,3 +187,17 @@ func TestGetCPI(t *testing.T) { md := util.MarkdownTableWithTitle("居民消费价格指数(CPI)", res.CPIResult.Data) logger.SugaredLogger.Debugf(md) } + +// PPI +func TestGetPPI(t *testing.T) { + res := NewMarketNewsApi().GetPPI() + md := util.MarkdownTableWithTitle("工业品出厂价格指数(PPI)", res.PPIResult.Data) + logger.SugaredLogger.Debugf(md) +} + +// PMI +func TestGetPMI(t *testing.T) { + res := NewMarketNewsApi().GetPMI() + md := util.MarkdownTableWithTitle("采购经理人指数(PMI)", res.PMIResult.Data) + logger.SugaredLogger.Debugf(md) +} diff --git a/backend/data/openai_api.go b/backend/data/openai_api.go index 677fefa..545cab3 100644 --- a/backend/data/openai_api.go +++ b/backend/data/openai_api.go @@ -190,6 +190,12 @@ func (o OpenAi) NewSummaryStockNewsStreamWithTools(userQuestion string, sysPromp res2 := NewMarketNewsApi().GetCPI() md2 := util.MarkdownTableWithTitle("居民消费价格指数(CPI)", res2.CPIResult.Data) market.WriteString(md2) + res3 := NewMarketNewsApi().GetPPI() + md3 := util.MarkdownTableWithTitle("工业品出厂价格指数(PPI)", res3.PPIResult.Data) + market.WriteString(md3) + res4 := NewMarketNewsApi().GetPMI() + md4 := util.MarkdownTableWithTitle("采购经理人指数(PMI)", res4.PMIResult.Data) + market.WriteString(md4) msg = append(msg, map[string]interface{}{ "role": "user", diff --git a/backend/models/models.go b/backend/models/models.go index af0ac5d..831e9d3 100644 --- a/backend/models/models.go +++ b/backend/models/models.go @@ -387,18 +387,33 @@ type CPI struct { REPORTDATE string `json:"REPORT_DATE" md:"报告时间"` TIME string `json:"TIME" md:"报告期"` NATIONALBASE float64 `json:"NATIONAL_BASE" md:"全国当月"` - NATIONALSAME float64 `json:"NATIONAL_SAME" md:"全国当月同比增长"` - NATIONALSEQUENTIAL float64 `json:"NATIONAL_SEQUENTIAL" md:"全国当月环比增长"` + NATIONALSAME float64 `json:"NATIONAL_SAME" md:"全国当月同比增长(%)"` + NATIONALSEQUENTIAL float64 `json:"NATIONAL_SEQUENTIAL" md:"全国当月环比增长(%)"` NATIONALACCUMULATE float64 `json:"NATIONAL_ACCUMULATE" md:"全国当月累计"` CITYBASE float64 `json:"CITY_BASE" md:"城市当月"` - CITYSAME float64 `json:"CITY_SAME" md:"城市当月同比增长"` - CITYSEQUENTIAL float64 `json:"CITY_SEQUENTIAL" md:"城市当月环比增长"` + CITYSAME float64 `json:"CITY_SAME" md:"城市当月同比增长(%)"` + CITYSEQUENTIAL float64 `json:"CITY_SEQUENTIAL" md:"城市当月环比增长(%)"` CITYACCUMULATE int `json:"CITY_ACCUMULATE" md:"城市当月累计"` RURALBASE float64 `json:"RURAL_BASE" md:"农村当月"` - RURALSAME float64 `json:"RURAL_SAME" md:"农村当月同比增长"` - RURALSEQUENTIAL int `json:"RURAL_SEQUENTIAL" md:"农村当月环比增长"` + RURALSAME float64 `json:"RURAL_SAME" md:"农村当月同比增长(%)"` + RURALSEQUENTIAL int `json:"RURAL_SEQUENTIAL" md:"农村当月环比增长(%)"` RURALACCUMULATE float64 `json:"RURAL_ACCUMULATE" md:"农村当月累计"` } +type PPI struct { + REPORTDATE string `json:"REPORT_DATE" md:"报告时间"` + TIME string `json:"TIME" md:"报告期"` + BASE float64 `json:"BASE" md:"当月"` + BASESAME float64 `json:"BASE_SAME" md:"当月同比增长(%)"` + BASEACCUMULATE float64 `json:"BASE_ACCUMULATE" md:"累计"` +} +type PMI struct { + REPORTDATE string `md:"报告时间" json:"REPORT_DATE"` + TIME string `md:"报告期" json:"TIME"` + MAKEINDEX float64 `md:"制造业指数" json:"MAKE_INDEX"` + MAKESAME float64 `md:"制造业指数同比增长(%)" json:"MAKE_SAME"` + NMAKEINDEX float64 `md:"非制造业" json:"NMAKE_INDEX"` + NMAKESAME float64 `md:"非制造业同比增长(%)" json:"NMAKE_SAME"` +} type DCResp struct { Version string `json:"version"` @@ -418,6 +433,16 @@ type CPIResult struct { Count int `json:"count"` } +type PPIResult struct { + Pages int `json:"pages"` + Data []PPI `json:"data"` + Count int `json:"count"` +} +type PMIResult struct { + Pages int `json:"pages"` + Data []PMI `json:"data"` + Count int `json:"count"` +} type GDPResp struct { DCResp GDPResult GDPResult `json:"result"` @@ -427,3 +452,12 @@ type CPIResp struct { DCResp CPIResult CPIResult `json:"result"` } + +type PPIResp struct { + DCResp + PPIResult PPIResult `json:"result"` +} +type PMIResp struct { + DCResp + PMIResult PMIResult `json:"result"` +}