- POST /v1/in/stats/history/list: 메시지별 발송 이력 목록 조회 (keyword/status/date 필터, 페이지네이션) - POST /v1/in/stats/history/detail: 특정 메시지 상세 이력 조회 (기본정보+집계+실패사유 Top 5+본문) - SendStatus.Determine() 규칙 재사용 Closes #233
73 lines
2.8 KiB
C#
73 lines
2.8 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);
|
|
Task<(IReadOnlyList<PushSendLog> Items, int TotalCount)> GetDetailLogPagedAsync(
|
|
long serviceId, long messageId, int page, int size,
|
|
PushResult? status = null, Platform? platform = null);
|
|
Task<IReadOnlyList<PushSendLog>> GetExportLogsAsync(
|
|
long serviceId, DateTime startDate, DateTime endDate,
|
|
long? messageId = null, long? deviceId = null,
|
|
PushResult? status = null, int maxCount = 100000);
|
|
Task<List<FailureStatRaw>> GetFailureStatsAsync(long? serviceId, DateTime startDate, DateTime endDate, int limit);
|
|
Task<List<FailureStatRaw>> GetFailureStatsByMessageAsync(long serviceId, long messageId, int limit);
|
|
Task<(IReadOnlyList<MessageHistorySummary> Items, int TotalCount)> GetMessageHistoryPagedAsync(
|
|
long? serviceId, int page, int size,
|
|
string? keyword = null, string? status = null,
|
|
DateTime? startDate = null, DateTime? endDate = null);
|
|
}
|
|
|
|
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; }
|
|
}
|
|
|
|
public class FailureStatRaw
|
|
{
|
|
public string FailReason { get; set; } = string.Empty;
|
|
public int Count { get; set; }
|
|
}
|
|
|
|
public class MessageHistorySummary
|
|
{
|
|
public long MessageId { get; set; }
|
|
public string MessageCode { get; set; } = string.Empty;
|
|
public string Title { get; set; } = string.Empty;
|
|
public string ServiceName { get; set; } = string.Empty;
|
|
public DateTime FirstSentAt { get; set; }
|
|
public int TotalSendCount { get; set; }
|
|
public int SuccessCount { get; set; }
|
|
public int FailCount { get; set; }
|
|
}
|