# Server configuration
server:
  port: 8080
  servlet:
    context-path: /
    encoding:
      charset: UTF-8
      enabled: true
      force: true # 서버가 지정한 인코딩(UTF-8)을 항상 강제로 적용, 클라이언트의 요청과 상관없이 서버 인코딩이 우선


Globals:
  DbType: maria

# Common application properties
spring:
  profiles:
    active: local
  application:
    name: '@projectName@'
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

# MyBatis configuration
# MyBatis-Spring-Boot-Starter는 DataSource를 이용해 SqlSessionFactory 빈을 자동으로 생성
# SqlSessionFactory를 이용해 SqlSessionTemplate 빈을 생성
# 최종적으로 datasource 와 mybatis 연결
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations:
    - classpath:mybatis/mapper/**/*_${Globals.DbType}.xml
  type-aliases-package: go.kr.project.**.model,egovframework.**.model

# Springdoc OpenAPI 설정
springdoc:
  swagger-ui:
    operations-sorter: method              # API 메서드별 정렬 (GET, POST, PUT, DELETE 순)
    tags-sorter: alpha                     # 태그 알파벳 순 정렬
    display-request-duration: true         # 요청 시간 표시
    doc-expansion: none                    # 초기 확장 상태: none(모두 접힘)
    filter: true                           # 검색 필터 활성화
    supportedSubmitMethods: [get, post]    # Swagger UI에서 실행 가능한 메서드 제한
  packages-to-scan: go.kr.project          # API 스캔 대상 패키지
  # 참고: Swagger UI는 브라우저 쿠키를 자동으로 사용하여 세션 인증을 처리합니다

# Login configuration
login:
  url: /login/login.do  # 로그인 페이지 URL (공통으로 사용)
  lock:
    count: 0  # 비밀번호 잠김 최종 카운트 (0일 경우 잠김 로직 pass)
  DefaultPassword: vipspassword # 초기 비밀번호, 초기화 비밀번호
  allowMultipleLogin: true  # 동시 접속 가능 여부 (true: 가능, false: 불가능)

# Query executor configuration
query-executor:
  transaction:
    timeout-minutes: 5  # 트랜잭션 타임아웃 (분 단위, 기본값: 5분)

# Mariadb aes_secret_key # 참고용도, 실제는 DB function에 하드코딩되어 있음
aes-secret-key: Copyright(c)2015-xit.co.kr

# Interceptor configuration
interceptor:
  interceptorExclude:
    - /login/**        #로그인
    - /                #루트 페이지
    - /.well-known/**  #개발 툴
    #- /common/**       #공통 조회, 코드 등
    - /common/config/**       #공통 설정 조회
    - /resources/**    #web server 배포
    - /css/**          #css
    - /img/**          #images
    - /js/**           #js
    - /xit/**          #xit 자체 공통
    - /plugins/**      #jquery plugins
    - /font/**         #font page
    - /error/**        #에러 페이지
    - /favicon.ico     #파비콘
    - /swagger-ui/**   #Swagger UI
    - /v3/api-docs/**  #Swagger API 문서
  refererExclude:
    - /**              #모두 승인 (개발 시에만)
    - /login/**        #로그인 관련 페이지
    - /                #루트 페이지
    - /main.do         #메인 페이지
    - /error/**        #에러 페이지
    - /common/**       #공통 페이지
    - /swagger-ui/**   #Swagger UI
    - /v3/api-docs/**  #Swagger API 문서

# ===== VMIS 통합 설정 =====
# 환경별 설정은 application-{profile}.yml 파일 참고
# - application-local.yml: 로컬 개발 환경
# - application-dev.yml: 개발 환경
# - application-prd.yml: 운영 환경

# ===== 자동차 과태료 TXT, PRN 파일 파싱 설정 =====
# hangul-byte-size에 따라 자동으로 적절한 바이트 길이 설정을 선택합니다.
# - hangul-byte-size: 2 → byte-size-2 설정 사용 (EUC-KR, MS949)
# - hangul-byte-size: 3 → byte-size-3 설정 사용 (UTF-8)
car-ffnlg-txt-parse:
  encoding: EUC-KR                    # 파일 인코딩 (UTF-8, EUC-KR, MS949 등)
  hangul-byte-size: 2                # 한글 문자 바이트 크기 (2=EUC-KR/MS949, 3=UTF-8)
  
  # ===== 2바이트 환경 설정 (EUC-KR, MS949) =====
  byte-size-2:
    first-line:                      # 첫째줄 필드별 바이트 길이 (2바이트 기준)
      inspstn-cd: 8                  # 검사소 코드
      insp-ymd: 12                   # 검사일자
      vhclno: 13                     # 차량번호
      ownr-nm: 31                    # 소유자명
      rrno: 15                       # 주민등록번호
      car-nm: 16                     # 자동차명
      car-knd: 14                    # 자동차종류
      car-usg: 11                    # 자동차용도
      insp-end-ymd: 12               # 검사종료일자
      daycnt: 4                      # 일수
      ffnlg-amt: 10                  # 과태료금액
    second-line:                     # 둘째줄 필드별 바이트 길이 (2바이트 기준)
      skip: 8                        # 공백 (스킵)
      last-reg-ymd: 12               # 최종등록일자
      addr: 86                       # 주소
      vld-prd-expry-ymd: 12          # 유효기간만료일자
      trd-gds: 11                    # 매매상품
  
  # ===== 3바이트 환경 설정 (UTF-8) =====
  byte-size-3:
    first-line:                      # 첫째줄 필드별 바이트 길이 (2바이트 기준)
      inspstn-cd: 8                  # 검사소 코드
      insp-ymd: 12                   # 검사일자
      vhclno: 13                     # 차량번호
      ownr-nm: 31                    # 소유자명
      rrno: 15                       # 주민등록번호
      car-nm: 16                     # 자동차명
      car-knd: 14                    # 자동차종류
      car-usg: 11                    # 자동차용도
      insp-end-ymd: 12               # 검사종료일자
      daycnt: 4                      # 일수
      ffnlg-amt: 10                  # 과태료금액
    second-line:                     # 둘째줄 필드별 바이트 길이 (2바이트 기준)
      skip: 8                        # 공백 (스킵)
      last-reg-ymd: 12               # 최종등록일자
      addr: 86                       # 주소
      vld-prd-expry-ymd: 12          # 유효기간만료일자
      trd-gds: 11                    # 매매상품

# ===== 자동차 과태료 미필 PRN 파일 파싱 설정 =====
# hangul-byte-size에 따라 자동으로 적절한 바이트 길이 설정을 선택합니다.
# - hangul-byte-size: 2 → byte-size-2 설정 사용 (EUC-KR, MS949)
# - hangul-byte-size: 3 → byte-size-3 설정 사용 (UTF-8)
# 미필 PRN 파일은 헤더에 프로그램ID, 처리일자, 출력일시가 있고
# 데이터는 2줄씩 구성됨
car-ffnlg-prn-parse:
  encoding: EUC-KR                    # 파일 인코딩 (UTF-8, EUC-KR, MS949 등)
  hangul-byte-size: 2                # 한글 문자 바이트 크기 (2=EUC-KR/MS949, 3=UTF-8)
  
  # ===== 2바이트 환경 설정 (EUC-KR, MS949) =====
  byte-size-2:
    first-line:                      # 첫째줄 필드별 바이트 길이 (2바이트 기준)
      "no": 6                        # 번호 (따옴표 필수: YAML에서 no는 false로 해석됨)
      vhclno: 16                     # 차량번호
      ownr-nm: 32                    # 소유자명 (주민번호 빈칸 포함)
      car-nm: 22                     # 자동차명
      use-strhld-addr: 61            # 사용본거지주소
      insp-vld-prd: 21               # 검사유효기간
    second-line:                     # 둘째줄 필드별 바이트 길이 (2바이트 기준)
      skip: 38                       # 공백 (스킵)
      rrno: 38                       # 주민등록번호
      use-strhld-addr: 61            # 사용본거지주소 (나머지 전체)

  # ===== 3바이트 환경 설정 (UTF-8) =====
  byte-size-3:
    first-line:                      # 첫째줄 필드별 바이트 길이 (3바이트 기준)
      "no": 6                        # 번호 (따옴표 필수: YAML에서 no는 false로 해석됨)
      vhclno: 16                     # 차량번호
      ownr-nm: 32                    # 소유자명 (주민번호 빈칸 포함)
      car-nm: 22                     # 자동차명
      use-strhld-addr: 61            # 사용본거지주소
      insp-vld-prd: 21               # 검사유효기간
    second-line:                     # 둘째줄 필드별 바이트 길이 (3바이트 기준)
      skip: 38                       # 공백 (스킵)
      rrno: 38                       # 주민등록번호
      use-strhld-addr: 61            # 사용본거지주소 (나머지 전체)
