Reviewed-on: #4 Co-authored-by: hyojin kim <hjkim4@gcsc.co.kr> Co-committed-by: hyojin kim <hjkim4@gcsc.co.kr>
128 lines
3.8 KiB
Java
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;
|
|
}
|
|
}
|