"""股票查询 API:/api/stocks。""" from __future__ import annotations from fastapi import APIRouter, HTTPException from app.api.deps import StockRepoDep from app.domain.entities.market import Stock router = APIRouter(prefix="/stocks", tags=["stocks"]) @router.get("", response_model=list[Stock], summary="股票列表") def list_stocks( repo: StockRepoDep, q: str | None = None, limit: int = 50, offset: int = 0, ) -> list[Stock]: if limit > 500: limit = 500 stocks = repo.list() if q: needle = q.upper() stocks = [s for s in stocks if needle in s.symbol or needle in s.name.upper()] return stocks[offset : offset + limit] @router.get("/{symbol}", response_model=Stock, summary="按代码查询") def get_stock(symbol: str, repo: StockRepoDep) -> Stock: stock = repo.get_by_symbol(symbol) if stock is None: raise HTTPException(status_code=404, detail=f"未找到股票 {symbol}") return stock