package com.eactive.eai.custom.statistics.dto;

import lombok.Builder;
import lombok.Getter;

/**
 * 거래 1건의 이벤트 정보
 */
@Getter
@Builder
public class TransactionEvent {

	/** API명 */
	private final String apiName;

	/** API Gateway 인스턴스 ID */
	private final String gwInstanceId;

	/** 업무구분코드 (없으면 "NONE") */
	private final String bizDivCode;

	/** 클라이언트 ID (없으면 "NONE") */
	private final String clientId;

	/** Inbound Adapter (없으면 "NONE") */
	private final String inboundAdapter;

	/** Outbound Adapter (없으면 "NONE") */
	private final String outboundAdapter;

	/** 응답시간 (ms) */
	private final long responseTimeMs;

	/** 성공 여부 */
	private final boolean success;

	/** 오류 유형 (성공시 null) */
	private final ErrorType errorType;

	/** 로그 시퀀스 번호 (100, 200, 300, 400, 900) */
	private final int logSequence;

	/**
	 * 오류 유형
	 */
	public enum ErrorType {
		TIMEOUT,      // Timeout 오류
		SYSTEM_ERROR, // 시스템 오류
		BUSINESS_ERROR // 업무 오류
	}

	/**
	 * 기본값을 "NONE"으로 정규화
	 */
	public static String normalizeValue(String value) {
		return (value == null || value.trim().isEmpty()) ? "NONE" : value;
	}
}
