提交
This commit is contained in:
@@ -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 不可用时传 None,fetch_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)
|
||||
|
||||
Reference in New Issue
Block a user