통계 화면, drilldown 기능 구현

This commit is contained in:
pksup
2026-01-21 15:41:18 +09:00
parent 94f7bf8510
commit d4bdd39450
5 changed files with 448 additions and 27 deletions
@@ -94,6 +94,9 @@ public class ApiStatsHourService
q.timeoutCnt.sum(),
q.systemErrCnt.sum(),
q.bizErrCnt.sum(),
q.seq900TimeoutCnt.sum(),
q.seq900SystemErrCnt.sum(),
q.seq900BizErrCnt.sum(),
q.avgRespTime.avg(),
q.p50RespTime.avg(),
q.p95RespTime.avg()))
@@ -96,6 +96,9 @@ public class ApiStatsMinuteService
q.timeoutCnt.sum(),
q.systemErrCnt.sum(),
q.bizErrCnt.sum(),
q.seq900TimeoutCnt.sum(),
q.seq900SystemErrCnt.sum(),
q.seq900BizErrCnt.sum(),
q.avgRespTime.avg(),
q.p50RespTime.avg(),
q.p95RespTime.avg()))
@@ -21,6 +21,9 @@ public class ApiStatsChartUI {
private Long timeoutCnt;
private Long systemErrCnt;
private Long bizErrCnt;
private Long seq900TimeoutCnt;
private Long seq900SystemErrCnt;
private Long seq900BizErrCnt;
// 응답시간 메트릭 (AVG)
private BigDecimal avgRespTime;
@@ -30,6 +33,7 @@ public class ApiStatsChartUI {
// QueryDSL Projections용 생성자
public ApiStatsChartUI(LocalDateTime statTime, Long totalCnt, Long successCnt,
Long timeoutCnt, Long systemErrCnt, Long bizErrCnt,
Long seq900TimeoutCnt, Long seq900SystemErrCnt, Long seq900BizErrCnt,
Double avgRespTime, Double p50RespTime, Double p95RespTime) {
this.statTime = statTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmm"));
this.totalCnt = totalCnt != null ? totalCnt : 0L;
@@ -37,6 +41,9 @@ public class ApiStatsChartUI {
this.timeoutCnt = timeoutCnt != null ? timeoutCnt : 0L;
this.systemErrCnt = systemErrCnt != null ? systemErrCnt : 0L;
this.bizErrCnt = bizErrCnt != null ? bizErrCnt : 0L;
this.seq900TimeoutCnt = seq900TimeoutCnt != null ? seq900TimeoutCnt : 0L;
this.seq900SystemErrCnt = seq900SystemErrCnt != null ? seq900SystemErrCnt : 0L;
this.seq900BizErrCnt = seq900BizErrCnt != null ? seq900BizErrCnt : 0L;
this.avgRespTime = avgRespTime != null ? BigDecimal.valueOf(avgRespTime) : BigDecimal.ZERO;
this.p50RespTime = p50RespTime != null ? BigDecimal.valueOf(p50RespTime) : BigDecimal.ZERO;
this.p95RespTime = p95RespTime != null ? BigDecimal.valueOf(p95RespTime) : BigDecimal.ZERO;