SPMS_API/SPMS.Application/Interfaces/IStatsService.cs
SEAN 3d8c57f690 improvement: 이력 엑셀 내보내기 API 추가 (#191)
- POST /v1/in/stats/history/export 엔드포인트 추가
- history/list와 동일 필터(keyword/status/date) 기준 엑셀 내보내기
- PushSendLogRepository에서 GroupBy 쿼리를 private helper로 리팩토링
- ClosedXML로 엑셀 생성 (메시지코드/제목/서비스명/발송일시/대상수/성공/실패/오픈율/상태)

Closes #191
2026-02-25 16:39:56 +09:00

20 lines
1.2 KiB
C#

using SPMS.Application.DTOs.Stats;
namespace SPMS.Application.Interfaces;
public interface IStatsService
{
Task<DailyStatResponseDto> GetDailyAsync(long? serviceId, DailyStatRequestDto request);
Task<SummaryStatResponseDto> GetSummaryAsync(long? serviceId);
Task<MessageStatResponseDto> GetMessageStatAsync(long? serviceId, MessageStatRequestDto request);
Task<HourlyStatResponseDto> GetHourlyAsync(long? serviceId, HourlyStatRequestDto request);
Task<DeviceStatResponseDto> GetDeviceStatAsync(long? serviceId);
Task<SendLogDetailResponseDto> GetSendLogDetailAsync(long? serviceId, SendLogDetailRequestDto request);
Task<byte[]> ExportReportAsync(long? serviceId, StatsExportRequestDto request);
Task<FailureStatResponseDto> GetFailureStatAsync(long? serviceId, FailureStatRequestDto request);
Task<DashboardResponseDto> GetDashboardAsync(long? serviceId, DashboardRequestDto request);
Task<HistoryListResponseDto> GetHistoryListAsync(long? serviceId, HistoryListRequestDto request);
Task<HistoryDetailResponseDto> GetHistoryDetailAsync(long? serviceId, HistoryDetailRequestDto request);
Task<byte[]> ExportHistoryAsync(long? serviceId, HistoryExportRequestDto request);
}