# -*- coding: utf-8 -*-
"""
销售复盘报告 API
GET /api/v1/reports/monthly - 获取当月销售复盘报告 (AI 生成)
"""

from fastapi import APIRouter, Depends
from pydantic import BaseModel
from sqlalchemy.ext.asyncio import AsyncSession

from app.api.deps import get_current_user
from app.core.database import get_db
from app.services.analytics import generate_monthly_report

router = APIRouter()


# ---- 响应模型 ----

class StageMetric(BaseModel):
    """单个阶段的统计指标"""
    stage: str
    count: int
    total_amount: float


class MonthlyReportResponse(BaseModel):
    """月度复盘报告响应"""
    metrics: list[StageMetric]
    report: str


# ---- 路由 ----

@router.get(
    "/monthly",
    response_model=MonthlyReportResponse,
    summary="获取当月销售复盘报告",
    tags=["数据报告"],
)
async def get_monthly_report(
    db: AsyncSession = Depends(get_db),
    current_user: dict = Depends(get_current_user),
):
    """
    生成当月销售复盘报告：
    1. SQL 预聚合统计各阶段的机会数量和金额
    2. 将真实数据注入 Prompt，调用 qwen3:14b 生成分析报告
    3. 同步返回结构化数据 + AI 报告文本

    注意：此接口为同步等待模式（用户主动触发），
    AI 生成可能需要 10-30 秒，前端应显示加载状态。
    """
    result = await generate_monthly_report(db)
    return MonthlyReportResponse(**result)
