This commit is contained in:
2026-09-04 19:05:23 +08:00
parent 76b422320b
commit 991d1bf343
10 changed files with 449 additions and 195 deletions

View File

@@ -44,6 +44,7 @@ from .models import (
Candle,
ScreenerQuery,
StockBasic,
TradeCalendar,
UserPreference,
UserTrade,
WatchlistItem,
@@ -387,13 +388,22 @@ async def stock_facets(session: AsyncSession = Depends(get_session)) -> Response
@router.get("/market/overview", response_model=MarketOverviewResponse)
async def get_market_overview() -> MarketOverviewResponse:
"""主页大盘总览A 股 + 港美指数最近收盘(含迷你走势),沪深两市市值/成交统计。
收盘口径token 无实时权限),展示时标注交易日;部分来源失败不影响其余。
async def get_market_overview(session: AsyncSession = Depends(get_session)) -> MarketOverviewResponse:
"""主页大盘总览A 股 + 港美指数实时价腾讯叠加收盘历史走势tushare
沪深两市市值/成交统计 + 成交额历史。部分来源失败不影响其余。
"""
# 今日是否 A 股交易日trade_date 为 String(8) unique 索引,等值查亚毫秒级);
# DB 不可用时传 Nonefetch_overview 回退 weekday 启发式
today8 = datetime.now().strftime("%Y%m%d")
is_trading_day: bool | None = None
try:
data = await fetch_overview()
is_trading_day = bool(await session.scalar(
select(TradeCalendar.id).where(TradeCalendar.trade_date == today8).limit(1)
))
except Exception: # noqa: BLE001 —— 判定失败只影响「今日盘中 bar」是否追加
pass
try:
data = await fetch_overview(is_trading_day=is_trading_day)
except MarketOverviewError as e:
raise HTTPException(status_code=503, detail=str(e)) from e
return MarketOverviewResponse(**data)