작업 내용
docs/백엔드_기능명세.md Module H 섹션 참고. 데이터가 정확히 쌓인 뒤에야 의미가 있으므로
착수 순서상 가장 마지막.
신규 파일: backend/api/admin/stats.py, backend/dao/stats_dao.py,
backend/schemas/stats_schemas.py (StatsSummaryOut, SalesSeriesOut, PopularItemOut).
API
| Method |
Path |
응답 |
| GET |
/api/admin/stats/summary |
StatsSummaryOut (오늘 매출/주문건수/평균객단가) |
| GET |
/api/admin/stats/sales?range=7d|30d |
SalesSeriesOut (일자별 매출 추이) |
| GET |
/api/admin/stats/popular-items?range=7d |
list[PopularItemOut] |
집계는 orders.status='COMPLETED' 건만 대상(취소·환불 제외). 단순 SUM/GROUP BY 쿼리로 충분 —
별도 집계 배치/테이블은 이번 스코프에서는 과설계이므로 만들지 않는다.
완료 기준
참고
docs/백엔드_기능명세.md Module H. 선행 조건: #21(Module C), #24(Module E) — 주문 상태·항목
데이터가 정확해야 통계가 의미 있음.
작업 내용
docs/백엔드_기능명세.mdModule H 섹션 참고. 데이터가 정확히 쌓인 뒤에야 의미가 있으므로착수 순서상 가장 마지막.
신규 파일:
backend/api/admin/stats.py,backend/dao/stats_dao.py,backend/schemas/stats_schemas.py(StatsSummaryOut,SalesSeriesOut,PopularItemOut).API
/api/admin/stats/summaryStatsSummaryOut(오늘 매출/주문건수/평균객단가)/api/admin/stats/sales?range=7d|30dSalesSeriesOut(일자별 매출 추이)/api/admin/stats/popular-items?range=7dlist[PopularItemOut]집계는
orders.status='COMPLETED'건만 대상(취소·환불 제외). 단순SUM/GROUP BY쿼리로 충분 —별도 집계 배치/테이블은 이번 스코프에서는 과설계이므로 만들지 않는다.
완료 기준
summary의 매출 합계가 실제COMPLETED주문의final_amount합과 일치참고
docs/백엔드_기능명세.mdModule H. 선행 조건: #21(Module C), #24(Module E) — 주문 상태·항목데이터가 정확해야 통계가 의미 있음.