snp-batch-validation/src/main/java/com/snp/batch/global/dto/JobExecutionDetailDto.java
hyojin kim 92152d0c50 fix: 재수집 관리 및 이력 추가 (#4)
Reviewed-on: #4
Co-authored-by: hyojin kim <hjkim4@gcsc.co.kr>
Co-committed-by: hyojin kim <hjkim4@gcsc.co.kr>
2026-02-20 11:03:36 +09:00

128 lines
3.8 KiB
Java

package com.snp.batch.global.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* Job 실행 상세 정보 DTO
* JobExecution + StepExecution 정보 포함
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class JobExecutionDetailDto {
// Job Execution 기본 정보
private Long executionId;
private String jobName;
private String status;
private LocalDateTime startTime;
private LocalDateTime endTime;
private String exitCode;
private String exitMessage;
// Job Parameters
private Map<String, Object> jobParameters;
// Job Instance 정보
private Long jobInstanceId;
// 실행 통계
private Long duration; // 실행 시간 (ms)
private Integer readCount;
private Integer writeCount;
private Integer skipCount;
private Integer filterCount;
// Step 실행 정보
private List<StepExecutionDto> stepExecutions;
/**
* Step 실행 정보 DTO
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class StepExecutionDto {
private Long stepExecutionId;
private String stepName;
private String status;
private LocalDateTime startTime;
private LocalDateTime endTime;
private Integer readCount;
private Integer writeCount;
private Integer commitCount;
private Integer rollbackCount;
private Integer readSkipCount;
private Integer processSkipCount;
private Integer writeSkipCount;
private Integer filterCount;
private String exitCode;
private String exitMessage;
private Long duration; // 실행 시간 (ms)
private ApiCallInfo apiCallInfo; // API 호출 정보 - StepExecutionContext 기반 (옵셔널)
private StepApiLogSummary apiLogSummary; // API 호출 로그 요약 - batch_api_log 기반 (옵셔널)
}
/**
* API 호출 정보 DTO (StepExecutionContext 기반)
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class ApiCallInfo {
private String apiUrl; // API URL
private String method; // HTTP Method (GET, POST, etc.)
private Map<String, Object> parameters; // API 파라미터
private Integer totalCalls; // 전체 API 호출 횟수
private Integer completedCalls; // 완료된 API 호출 횟수
private String lastCallTime; // 마지막 호출 시간
}
/**
* Step별 API 로그 집계 요약 (batch_api_log 테이블 기반)
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class StepApiLogSummary {
private Long totalCalls; // 총 호출수
private Long successCount; // 성공(2xx) 수
private Long errorCount; // 에러(4xx/5xx) 수
private Double avgResponseMs; // 평균 응답시간
private Long maxResponseMs; // 최대 응답시간
private Long minResponseMs; // 최소 응답시간
private Long totalResponseMs; // 총 응답시간
private Long totalRecordCount; // 총 반환 건수
private List<ApiLogEntryDto> logs; // 개별 로그 목록
}
/**
* 개별 API 호출 로그 DTO (batch_api_log 1건)
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class ApiLogEntryDto {
private Long logId;
private String requestUri;
private String httpMethod;
private Integer statusCode;
private Long responseTimeMs;
private Long responseCount;
private String errorMessage;
private LocalDateTime createdAt;
}
}