SPMS_API/SPMS.Domain/Interfaces/IPushSendLogRepository.cs
seonkyu.kim 0911fc763a feat: 통계 API 구현 (8.1~8.5) (#132)
- POST /v1/in/stats/daily: 기간별 일별 통계
- POST /v1/in/stats/summary: 대시보드 요약 통계
- POST /v1/in/stats/message: 메시지별 발송 통계
- POST /v1/in/stats/hourly: 시간대별 발송 추이
- POST /v1/in/stats/device: 디바이스 분포 통계
- IDailyStatRepository, DailyStatRepository 신규
- IPushSendLogRepository 통계 메서드 확장

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 23:08:04 +09:00

42 lines
1.4 KiB
C#

using SPMS.Domain.Entities;
using SPMS.Domain.Enums;
namespace SPMS.Domain.Interfaces;
public interface IPushSendLogRepository : IRepository<PushSendLog>
{
Task<(IReadOnlyList<PushSendLog> Items, int TotalCount)> GetPagedWithMessageAsync(
long serviceId, int page, int size,
long? messageId = null, long? deviceId = null,
PushResult? status = null,
DateTime? startDate = null, DateTime? endDate = null);
Task<List<HourlyStatRaw>> GetHourlyStatsAsync(long serviceId, DateTime startDate, DateTime endDate);
Task<MessageStatRaw?> GetMessageStatsAsync(long serviceId, long messageId, DateTime? startDate, DateTime? endDate);
Task<List<MessageDailyStatRaw>> GetMessageDailyStatsAsync(long serviceId, long messageId, DateTime? startDate, DateTime? endDate);
}
public class HourlyStatRaw
{
public int Hour { get; set; }
public int SendCount { get; set; }
public int SuccessCount { get; set; }
public int FailCount { get; set; }
}
public class MessageStatRaw
{
public int TotalSend { get; set; }
public int TotalSuccess { get; set; }
public int TotalFail { get; set; }
public DateTime? FirstSentAt { get; set; }
public DateTime? LastSentAt { get; set; }
}
public class MessageDailyStatRaw
{
public DateOnly StatDate { get; set; }
public int SendCount { get; set; }
public int SuccessCount { get; set; }
}