package com.zioinfo.hrm.uiws.config;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * UIWS 이식 모듈 설정. application.yml 의 erp.uiws.* 바인딩.
 * 계획서 2FA 설정키(verify-token-validity / max-login-fail / email-code-validity) +
 * 첨부 업로드 디렉터리. 모두 안전 기본값 보유(미설정이어도 동작).
 */
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "hrm.uiws")
public class UiwsProperties {

    private final Auth auth = new Auth();
    private final Upload upload = new Upload();

    @Getter
    @Setter
    public static class Auth {
        /** 2FA 레이어 on/off. 기본 on(켜짐). off 시 기존 단일 JWT 로그인 흐름 유지(회귀 0). */
        private boolean twofaEnabled = true;
        /**
         * TOTP(OTP 2차 인증) 레이어 on/off. 기본 on. 활성 시 로그인 2단계가 OTP(등록/검증) 경로를 사용한다.
         * 우선순위: otpEnabled → OTP, (off 이고 twofaEnabled) → 이메일코드, (둘 다 off) → 단일 로그인.
         */
        private boolean otpEnabled = true;
        /** 1차 통과 후 verify-token 유효시간(초). 계획서 300(5분). */
        private long verifyTokenValiditySeconds = 300;
        /** 이메일 인증코드 유효시간(초). 계획서 300(5분). */
        private long emailCodeValiditySeconds = 300;
        /** 로그인 실패 누적 N회 시 계정 잠금. 계획서 5. */
        private int maxLoginFail = 5;
    }

    @Getter
    @Setter
    public static class Upload {
        /** 첨부파일 저장 루트. 기본 ./uploads/uiws. */
        private String uploadDir = "./uploads/uiws";
    }
}
