import uuid from typing import Optional from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_db from app.middleware.auth import get_current_user from app.services.dashboard import get_dashboard_stats, get_reporting_progress, get_weekly_report router = APIRouter(prefix="/dashboard", tags=["Dashboard"]) @router.get("/stats") async def dashboard_stats( current_user: dict = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): """Get dashboard card statistics for the current week.""" stats = await get_dashboard_stats(db) return stats @router.get("/progress") async def reporting_progress( current_user: dict = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): """Get per-manager reporting progress.""" return await get_reporting_progress(db) @router.get("/weekly-report") async def weekly_report( manager_id: Optional[str] = Query(None), customer_id: Optional[str] = Query(None), current_user: dict = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): """Get full weekly report data (four modules).""" return await get_weekly_report( db=db, user_id=uuid.UUID(current_user["user_id"]), role=current_user["role"], filter_manager_id=uuid.UUID(manager_id) if manager_id else None, filter_customer_id=uuid.UUID(customer_id) if customer_id else None, )