improvement: 이력 목록/상세 API 추가 (#233) #234

Merged
seonkyu.kim merged 1 commits from improvement/#233-history-list-detail-api into develop 2026-02-25 07:25:02 +00:00
Owner

📋 작업 요약

  • 메시지별 발송 이력 목록 조회 API 추가 (POST /v1/in/stats/history/list)
  • 특정 메시지 발송 이력 상세 조회 API 추가 (POST /v1/in/stats/history/detail)
  • keyword/status/date 필터 및 페이지네이션 지원
  • 상세에서 기본정보 + 집계 + 실패사유 Top 5 + 본문 통합 응답

Closes #233

🛠️ 작업 내용 (Changes)

  • SPMS.Application/DTOs/Stats/HistoryListRequestDto.cs — 이력 목록 요청 DTO (신규)
  • SPMS.Application/DTOs/Stats/HistoryListResponseDto.cs — 이력 목록 응답 DTO (신규)
  • SPMS.Application/DTOs/Stats/HistoryDetailRequestDto.cs — 이력 상세 요청 DTO (신규)
  • SPMS.Application/DTOs/Stats/HistoryDetailResponseDto.cs — 이력 상세 응답 DTO (신규)
  • SPMS.Domain/Interfaces/IPushSendLogRepository.cs — GetMessageHistoryPagedAsync + GetFailureStatsByMessageAsync 추가
  • SPMS.Infrastructure/Persistence/Repositories/PushSendLogRepository.cs — 구현 (GroupBy MessageId 집계, status 필터 DB 레벨 최적화)
  • SPMS.Application/Interfaces/IStatsService.cs — GetHistoryListAsync, GetHistoryDetailAsync 추가
  • SPMS.Application/Services/StatsService.cs — 두 메서드 구현 (SendStatus.Determine, GetFailReasonDescription 재사용)
  • SPMS.API/Controllers/StatsController.cs — history/list, history/detail 엔드포인트 추가

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

  • OpenRate/OpenCount는 현재 0 고정 (오픈 추적 미구현)
  • status 필터는 DB 레벨에서 GroupBy Having으로 처리 (complete: successCount > 0, failed: totalSend > 0 && successCount == 0)
  • 기존 GetMessageStatsAsync, GetFailureStatsAsync 패턴을 그대로 따름
  • DB 변경 없음, Migration 불필요

체크리스트 (Self Checklist)

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

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

dotnet build → 경고 0개, 오류 0개
## 📋 작업 요약 - 메시지별 발송 이력 목록 조회 API 추가 (`POST /v1/in/stats/history/list`) - 특정 메시지 발송 이력 상세 조회 API 추가 (`POST /v1/in/stats/history/detail`) - keyword/status/date 필터 및 페이지네이션 지원 - 상세에서 기본정보 + 집계 + 실패사유 Top 5 + 본문 통합 응답 ## 🔗 관련 이슈 (Related Issues) Closes #233 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Application/DTOs/Stats/HistoryListRequestDto.cs` — 이력 목록 요청 DTO (신규) - [x] `SPMS.Application/DTOs/Stats/HistoryListResponseDto.cs` — 이력 목록 응답 DTO (신규) - [x] `SPMS.Application/DTOs/Stats/HistoryDetailRequestDto.cs` — 이력 상세 요청 DTO (신규) - [x] `SPMS.Application/DTOs/Stats/HistoryDetailResponseDto.cs` — 이력 상세 응답 DTO (신규) - [x] `SPMS.Domain/Interfaces/IPushSendLogRepository.cs` — GetMessageHistoryPagedAsync + GetFailureStatsByMessageAsync 추가 - [x] `SPMS.Infrastructure/Persistence/Repositories/PushSendLogRepository.cs` — 구현 (GroupBy MessageId 집계, status 필터 DB 레벨 최적화) - [x] `SPMS.Application/Interfaces/IStatsService.cs` — GetHistoryListAsync, GetHistoryDetailAsync 추가 - [x] `SPMS.Application/Services/StatsService.cs` — 두 메서드 구현 (SendStatus.Determine, GetFailReasonDescription 재사용) - [x] `SPMS.API/Controllers/StatsController.cs` — history/list, history/detail 엔드포인트 추가 ## 📢 리뷰어 참고 사항 (To Reviewers) - OpenRate/OpenCount는 현재 0 고정 (오픈 추적 미구현) - status 필터는 DB 레벨에서 GroupBy Having으로 처리 (complete: successCount > 0, failed: totalSend > 0 && successCount == 0) - 기존 GetMessageStatsAsync, GetFailureStatsAsync 패턴을 그대로 따름 - DB 변경 없음, Migration 불필요 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` dotnet build → 경고 0개, 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-25 07:23:40 +00:00
- POST /v1/in/stats/history/list: 메시지별 발송 이력 목록 조회
  (keyword/status/date 필터, 페이지네이션)
- POST /v1/in/stats/history/detail: 특정 메시지 상세 이력 조회
  (기본정보+집계+실패사유 Top 5+본문)
- SendStatus.Determine() 규칙 재사용

Closes #233
seonkyu.kim added the
Priority
Medium
Status
In Progress
Type
Improvement
labels 2026-02-25 07:23:47 +00:00
seonkyu.kim self-assigned this 2026-02-25 07:23:49 +00:00
seonkyu.kim added this to the Phase 2: 메시지 + 통계 milestone 2026-02-25 07:23:50 +00:00
seonkyu.kim requested review from Owners 2026-02-25 07:24:00 +00:00
seonkyu.kim merged commit 9350066fb4 into develop 2026-02-25 07:25:02 +00:00
seonkyu.kim deleted branch improvement/#233-history-list-detail-api 2026-02-25 07:25:15 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-25 07:25:36 +00:00
Sign in to join this conversation.
No description provided.