package go.kr.project.system.loginLog.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/**
 * packageName    : go.kr.project.login.model
 * fileName       : LoginLogVO
 * author         : 시스템 관리자
 * date           : 2025-05-13
 * description    : 로그인 로그 정보를 담는 VO 클래스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2025-05-13        시스템 관리자       최초 생성
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class LoginLogVO {

    /** 로그 ID */
    private String logId;

    /** 사용자 ID */
    private String userId;

    /** 사용자 계정 */
    private String userAcnt;

    /** 로그인 시간 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
    private LocalDateTime loginDttm;

    /** IP 주소 */
    private String ipAddr;

    /** 성공 여부 */
    private String successYn;

    /** 실패 사유 */
    private String failReason;

    /** 로그인 유형 */
    private String loginType;

    /** 세션 ID */
    private String sessionId;

    /** 사용자 에이전트 */
    private String userAgent;

    /** 접속 디바이스 정보 */
    private String deviceInfo;

    /** 등록 일시 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
    private LocalDateTime regDttm;
}
