53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from fastapi import APIRouter, Depends, Query
|
|
from sqlalchemy.orm import Session
|
|
|
|
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),
|
|
session: Session = Depends(get_db_session),
|
|
) -> dict:
|
|
return success_payload(
|
|
report_service.performance_report(
|
|
{
|
|
"stat_type": stat_type,
|
|
"start_date": start_date,
|
|
"end_date": end_date,
|
|
"category_id": category_id,
|
|
},
|
|
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),
|
|
export_format: str = Query(default="csv"),
|
|
session: Session = Depends(get_db_session),
|
|
) -> 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,
|
|
"export_format": export_format,
|
|
},
|
|
session,
|
|
)
|
|
)
|