server:
  port: 8011
spring:
  application:
    name: guardia-mall
  datasource:
    url: ${DB_URL:jdbc:postgresql://localhost:5432/mall_db}
    username: ${DB_USER:mall_user}
    password: ${DB_PASS:mall_pass2026}
    driver-class-name: org.postgresql.Driver
  # UIWS 이식: 부팅 시 91_uiws_port.sql(업무 9테이블 + mall_account 2FA ALTER) 멱등 적용.
  # 전부 IF NOT EXISTS / ADD COLUMN IF NOT EXISTS / ON CONFLICT DO NOTHING → mode:always 재실행 안전.
  # schema.sql 은 deploy_server 가 psql 로 별도 적용(비멱등 시드 충돌 회피 위해 여기 미포함).
  sql:
    init:
      mode: ${SQL_INIT_MODE:always}
      schema-locations: classpath:db/91_uiws_port.sql
      continue-on-error: true
  servlet:
    multipart:
      max-file-size: 20MB
      max-request-size: 20MB
mybatis:
  mapper-locations: classpath:mapper/**/*.xml   # ** : 하위 mapper/uiws/*.xml(UIWS 이식) 포함
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
springdoc:
  api-docs:
    path: /api/mall/docs
  swagger-ui:
    path: /api/mall/swagger
mall:
  # 외부 게이트웨이 어댑터 선택 — 기본 mock(개발/데모 외부호출 0). 운영 시 환경변수로 오버라이드.
  payment:
    provider: ${MALL_PAYMENT_PROVIDER:mock}    # mock | stripe
  tax:
    provider: ${MALL_TAX_PROVIDER:mock}        # mock | taxjar | avalara
  address:
    provider: ${MALL_ADDRESS_PROVIDER:mock}    # mock | google | smarty
  sms:
    provider: ${MALL_SMS_PROVIDER:mock}        # mock | twilio
  email:
    provider: ${MALL_EMAIL_PROVIDER:mock}      # mock | sendgrid
  # ── UIWS 이식: 2FA(운영 로그인) + 첨부 업로드 설정 (mall.uiws.*) ──────────────
  uiws:
    auth:
      twofa-enabled: ${UIWS_2FA:true}                  # off=운영 로그인도 단일 JWT(회귀 0). 고객(USER)은 항상 미적용.
      verify-token-validity-seconds: 300               # 1차 통과 후 verify-token 5분
      email-code-validity-seconds: 300                 # 이메일 인증코드 5분
      max-login-fail: 5                                # 실패 5회 시 운영 계정 잠금
    mail:
      mode: ${UIWS_MAIL_MODE:log}                      # LogMailSender 폴백(외부 API 0). smtp 는 설정 시만.
    upload:
      upload-dir: ${UIWS_UPLOAD_DIR:./uploads/uiws}
guardia:
  itsm-url: ${ITSM_URL:http://localhost:9001}
  erp-url: ${ERP_URL:http://localhost:8003}
  crm-url: ${CRM_URL:http://localhost:8004}
  ocr-url: ${OCR_URL:http://localhost:8005}
  ollama-url: ${OLLAMA_URL:http://localhost:11434}
  ollama-text-model: ${OLLAMA_TEXT_MODEL:llama3.2:1b}
  crypto:
    secret: ${CRYPTO_SECRET:guardia-mall-aes-256-gcm-master-key-2026-zioinfo}
  jwt:
    secret: ${JWT_SECRET:guardia-mall-jwt-secret-2026-minimum-256bit-key-zioinfo}
    expiration: 86400000
logging:
  level:
    com.zioinfo.mall: DEBUG
    org.mybatis: WARN
