"""AI summary endpoints — LLM-powered weekly report narrative.""" import uuid from datetime import date from typing import Optional from fastapi import APIRouter, Depends, Query, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_db from app.middleware.auth import get_current_user from app.services.ai_summary import generate_summary router = APIRouter(prefix="/ai", tags=["AI Summary"]) @router.post("/summary") async def ai_summary( reference_date: Optional[str] = Query(None), period: str = Query("week", regex="^(week|month)$"), current_user: dict = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): """Generate AI-powered weekly report summary. Director/leader only.""" role = current_user["role"] if role not in ("director", "leader"): raise HTTPException(status_code=403, detail="仅限支局长和分管领导使用") try: ref = date.fromisoformat(reference_date) if reference_date else None summary = await generate_summary( db=db, user_id=uuid.UUID(current_user["user_id"]), role=role, reference_date=ref, period=period, ) return {"summary": summary, "period": period, "reference_date": str(ref or date.today())} except ValueError as e: raise HTTPException(status_code=400, detail=str(e)) except Exception as e: raise HTTPException(status_code=500, detail=f"AI 摘要生成失败:{str(e)}")