dingdanquanliucheng/backend/app/api/reports.py

53 lines
1.6 KiB
Python
Raw Normal View History

from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
2026-05-14 13:51:06 +08:00
from backend.app.db import get_db_session
2026-05-14 13:51:06 +08:00
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,
)
)
2026-05-14 13:51:06 +08:00
@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,
)
)