news.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. """
  2. 智能股票分析助手 — 资讯搜索API路由
  3. 提供金融资讯搜索、个股舆情分析、热门资讯查询接口。
  4. """
  5. from fastapi import APIRouter, Query
  6. from app.services import news_service
  7. from app.utils.mx_http import mx_result_to_http
  8. from app.utils.response import error_response
  9. router = APIRouter(prefix="/news", tags=["资讯搜索"])
  10. @router.get("/search")
  11. async def search_news(
  12. query: str = Query(..., description="自然语言搜索问句"),
  13. ):
  14. """搜索金融资讯
  15. - **query**: 自然语言搜索问句,如 "人工智能板块近期新闻"、"贵州茅台最新研报"
  16. """
  17. if not query or not query.strip():
  18. return error_response(code=400, message="请输入搜索内容")
  19. result = news_service.search_news(query.strip())
  20. return mx_result_to_http(result)
  21. @router.get("/sentiment/{code}")
  22. async def get_stock_sentiment(code: str):
  23. """获取个股舆情分析
  24. 根据股票代码搜索该股票相关的新闻、研报、公告,并进行分类整理。
  25. - **code**: 6位股票代码,如 600519(贵州茅台)、000001(平安银行)
  26. """
  27. if not code or len(code) < 4:
  28. return error_response(code=400, message="请输入有效的股票代码")
  29. result = news_service.analyze_sentiment(code)
  30. return mx_result_to_http(result)
  31. @router.get("/hot")
  32. async def get_hot_news():
  33. """获取当前市场热门资讯
  34. 返回今日A股市场热点动态、北向资金流向等资讯摘要。
  35. """
  36. result = news_service.search_market_news()
  37. return mx_result_to_http(result)