improvement: 대시보드 통합 API 추가 (#231) #232

Merged
seonkyu.kim merged 1 commits from improvement/#231-dashboard-api into develop 2026-02-25 07:12:26 +00:00
Owner

📋 작업 요약

  • 대시보드 1회 호출로 KPI, 일별 추이, 시간대별 분포, 플랫폼 비율, 상위 메시지를 통합 조회하는 API 추가
  • 기존 StatsService 메서드(GetSummary, GetDaily, GetHourly, GetDeviceStat)를 내부 재사용
  • 발송 성공 건수 기준 Top 5 메시지 조회 기능 추가

Closes #231

🛠️ 작업 내용 (Changes)

  • SPMS.Application/DTOs/Stats/DashboardRequestDto.cs — 요청 DTO (start_date, end_date)
  • SPMS.Application/DTOs/Stats/DashboardResponseDto.cs — 응답 DTO (DashboardKpiDto, TopMessageDto 포함)
  • SPMS.Domain/Interfaces/IMessageRepository.cs — GetTopBySendCountAsync 메서드 추가
  • SPMS.Infrastructure/Persistence/Repositories/MessageRepository.cs — GetTopBySendCountAsync 구현
  • SPMS.Application/Interfaces/IStatsService.cs — GetDashboardAsync 메서드 추가
  • SPMS.Application/Services/StatsService.cs — IServiceRepository 의존성 추가 + GetDashboardAsync 구현
  • SPMS.API/Controllers/StatsController.cs — POST /v1/in/stats/dashboard 엔드포인트 추가

📢 리뷰어 참고 사항 (To Reviewers)

  • EF Core DbContext는 thread-safe하지 않으므로 병렬 실행 대신 순차 실행으로 구현
  • "top open messages" → 현 시스템에 per-message open 추적 없으므로 발송 성공 건수(SuccessCount) 기준 Top 5로 대체
  • DB 변경 없음, Migration 불필요

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - 대시보드 1회 호출로 KPI, 일별 추이, 시간대별 분포, 플랫폼 비율, 상위 메시지를 통합 조회하는 API 추가 - 기존 StatsService 메서드(GetSummary, GetDaily, GetHourly, GetDeviceStat)를 내부 재사용 - 발송 성공 건수 기준 Top 5 메시지 조회 기능 추가 ## 🔗 관련 이슈 (Related Issues) Closes #231 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Application/DTOs/Stats/DashboardRequestDto.cs` — 요청 DTO (start_date, end_date) - [x] `SPMS.Application/DTOs/Stats/DashboardResponseDto.cs` — 응답 DTO (DashboardKpiDto, TopMessageDto 포함) - [x] `SPMS.Domain/Interfaces/IMessageRepository.cs` — GetTopBySendCountAsync 메서드 추가 - [x] `SPMS.Infrastructure/Persistence/Repositories/MessageRepository.cs` — GetTopBySendCountAsync 구현 - [x] `SPMS.Application/Interfaces/IStatsService.cs` — GetDashboardAsync 메서드 추가 - [x] `SPMS.Application/Services/StatsService.cs` — IServiceRepository 의존성 추가 + GetDashboardAsync 구현 - [x] `SPMS.API/Controllers/StatsController.cs` — POST /v1/in/stats/dashboard 엔드포인트 추가 ## 📢 리뷰어 참고 사항 (To Reviewers) - EF Core DbContext는 thread-safe하지 않으므로 병렬 실행 대신 순차 실행으로 구현 - "top open messages" → 현 시스템에 per-message open 추적 없으므로 발송 성공 건수(SuccessCount) 기준 Top 5로 대체 - DB 변경 없음, Migration 불필요 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-25 07:04:52 +00:00
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Improvement
labels 2026-02-25 07:05:02 +00:00
seonkyu.kim self-assigned this 2026-02-25 07:05:04 +00:00
seonkyu.kim added this to the Phase 2: 메시지 + 통계 milestone 2026-02-25 07:05:04 +00:00
seonkyu.kim requested review from Owners 2026-02-25 07:05:14 +00:00
seonkyu.kim merged commit f33971a1d0 into develop 2026-02-25 07:12:26 +00:00
seonkyu.kim deleted branch improvement/#231-dashboard-api 2026-02-25 07:12:45 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-25 07:13:18 +00:00
Sign in to join this conversation.
No description provided.