from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from backend.app.api.deps import require_permissions, require_roles from backend.app.db import get_db_session from backend.app.schemas.common import success_payload from backend.app.services.report_service import report_service router = APIRouter(prefix="/api/reports", tags=["reports"]) @router.get("/performance") def performance_report( stat_type: str = Query(default="month"), start_date: str | None = Query(default=None), end_date: str | None = Query(default=None), category_id: int | None = Query(default=None, gt=0), exclude_ecommerce: bool = Query(default=False), session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("manager", "admin")), _permission_user: dict = Depends(require_permissions("report:performance:view")), ) -> dict: return success_payload( report_service.performance_report( { "stat_type": stat_type, "start_date": start_date, "end_date": end_date, "category_id": category_id, "exclude_ecommerce": exclude_ecommerce, }, session, ) ) @router.get("/performance/export") def export_performance_report( stat_type: str = Query(default="month"), start_date: str | None = Query(default=None), end_date: str | None = Query(default=None), category_id: int | None = Query(default=None, gt=0), exclude_ecommerce: bool = Query(default=False), export_format: str = Query(default="csv"), session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("manager", "admin")), _permission_user: dict = Depends(require_permissions("report:performance:export")), ) -> dict: return success_payload( report_service.export_performance_report( { "stat_type": stat_type, "start_date": start_date, "end_date": end_date, "category_id": category_id, "exclude_ecommerce": exclude_ecommerce, "export_format": export_format, }, session, ) )