mirror of
https://github.com/ArvinLovegood/go-stock.git
synced 2025-07-19 00:00:09 +08:00
feat(backend):AI分析添加大盘指数信息
- 新增 getZSInfo 函数,用于获取指定股票代码的大盘指数信息 - 在处理用户问题时添加大盘指数信息查询功能 - 优化了代码结构,提高了可维护性
This commit is contained in:
parent
f1e40e7d3b
commit
7b625e2e80
@ -159,7 +159,19 @@ func (o OpenAi) NewChatStream(stock, stockCode, userQuestion string, sysPromptId
|
|||||||
logger.SugaredLogger.Infof("final question:%s", question)
|
logger.SugaredLogger.Infof("final question:%s", question)
|
||||||
|
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(6)
|
wg.Add(7)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
|
var market strings.Builder
|
||||||
|
market.WriteString(getZSInfo("创业板指数", "sz399006", 30) + "\n")
|
||||||
|
market.WriteString(getZSInfo("上证综合指数", "sh000001", 30) + "\n")
|
||||||
|
market.WriteString(getZSInfo("沪深300指数", "sh000300", 30) + "\n")
|
||||||
|
msg = append(msg, map[string]interface{}{
|
||||||
|
"role": "user",
|
||||||
|
"content": "大盘指数情况如下:\n" + market.String(),
|
||||||
|
})
|
||||||
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
@ -517,7 +529,6 @@ func GetFinancialReports(stockCode string, crawlTimeOut int64) *[]string {
|
|||||||
|
|
||||||
logger.SugaredLogger.Infof("GetFinancialReports搜索股票-%s: %s", stockCode, url)
|
logger.SugaredLogger.Infof("GetFinancialReports搜索股票-%s: %s", stockCode, url)
|
||||||
|
|
||||||
db.Init("../../data/stock.db")
|
|
||||||
crawlerAPI := CrawlerApi{}
|
crawlerAPI := CrawlerApi{}
|
||||||
crawlerBaseInfo := CrawlerBaseInfo{
|
crawlerBaseInfo := CrawlerBaseInfo{
|
||||||
Name: "TestCrawler",
|
Name: "TestCrawler",
|
||||||
|
@ -891,6 +891,37 @@ func getHKStockPriceInfo(stockCode string, crawlTimeOut int64) *[]string {
|
|||||||
return &messages
|
return &messages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getZSInfo(name, stockCode string, crawlTimeOut int64) string {
|
||||||
|
url := "https://finance.sina.com.cn/realstock/company/" + stockCode + "/nc.shtml"
|
||||||
|
crawlerAPI := CrawlerApi{}
|
||||||
|
crawlerBaseInfo := CrawlerBaseInfo{
|
||||||
|
Name: "TestCrawler",
|
||||||
|
Description: "Test Crawler Description",
|
||||||
|
BaseUrl: "https://finance.sina.com.cn",
|
||||||
|
Headers: map[string]string{"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0"},
|
||||||
|
}
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(crawlTimeOut)*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
crawlerAPI = crawlerAPI.NewCrawler(ctx, crawlerBaseInfo)
|
||||||
|
html, ok := crawlerAPI.GetHtml(url, "div#hqDetails table", true)
|
||||||
|
if !ok {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
document, err := goquery.NewDocumentFromReader(strings.NewReader(html))
|
||||||
|
if err != nil {
|
||||||
|
logger.SugaredLogger.Error(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
//price
|
||||||
|
price := strutil.RemoveWhiteSpace(document.Find("div#price").First().Text(), false)
|
||||||
|
hqTime := strutil.RemoveWhiteSpace(document.Find("div#hqTime").First().Text(), false)
|
||||||
|
|
||||||
|
var markdown strings.Builder
|
||||||
|
markdown.WriteString(fmt.Sprintf("### %s:%s 时间:%s\n", name, price, hqTime))
|
||||||
|
GetTableMarkdown(document, "div#hqDetails table", &markdown)
|
||||||
|
return markdown.String()
|
||||||
|
}
|
||||||
|
|
||||||
func getSHSZStockPriceInfo(stockCode string, crawlTimeOut int64) *[]string {
|
func getSHSZStockPriceInfo(stockCode string, crawlTimeOut int64) *[]string {
|
||||||
url := "https://finance.sina.com.cn/realstock/company/" + stockCode + "/nc.shtml"
|
url := "https://finance.sina.com.cn/realstock/company/" + stockCode + "/nc.shtml"
|
||||||
crawlerAPI := CrawlerApi{}
|
crawlerAPI := CrawlerApi{}
|
||||||
|
@ -49,8 +49,11 @@ func TestSearchStockPriceInfo(t *testing.T) {
|
|||||||
db.Init("../../data/stock.db")
|
db.Init("../../data/stock.db")
|
||||||
//SearchStockPriceInfo("hk06030", 30)
|
//SearchStockPriceInfo("hk06030", 30)
|
||||||
//SearchStockPriceInfo("sh600171", 30)
|
//SearchStockPriceInfo("sh600171", 30)
|
||||||
SearchStockPriceInfo("gb_aapl", 30)
|
//SearchStockPriceInfo("gb_aapl", 30)
|
||||||
SearchStockPriceInfo("bj430198", 30)
|
//SearchStockPriceInfo("bj430198", 30)
|
||||||
|
getZSInfo("创业板指数", "sz399006", 30)
|
||||||
|
getZSInfo("上证综合指数", "sh000001", 30)
|
||||||
|
getZSInfo("沪深300指数", "sh000300", 30)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user