spring:
  application:
    name: ai

  # Database Configuration
  datasource:
    url: jdbc:${DB_KIND:postgresql}://${DB_HOST:20.249.153.213}:${DB_PORT:5432}/${DB_NAME:aidb}
    username: ${DB_USERNAME:hgzerouser}
    password: ${DB_PASSWORD:Hi5Jessica!}
    driver-class-name: org.postgresql.Driver
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5
      connection-timeout: 30000
      idle-timeout: 600000
      max-lifetime: 1800000
      leak-detection-threshold: 60000

  # JPA Configuration
  jpa:
    show-sql: ${SHOW_SQL:true}
    properties:
      hibernate:
        format_sql: true
        use_sql_comments: true
    hibernate:
      ddl-auto: ${DDL_AUTO:update}

  # Flyway Configuration
  flyway:
    enabled: false

  # Redis Configuration
  data:
    redis:
      host: ${REDIS_HOST:20.249.177.114}
      port: ${REDIS_PORT:6379}
      password: ${REDIS_PASSWORD:Hi5Jessica!}
      timeout: 2000ms
      lettuce:
        pool:
          max-active: 8
          max-idle: 8
          min-idle: 0
          max-wait: -1ms
      database: ${REDIS_DATABASE:4}

# Server Configuration
server:
  port: ${SERVER_PORT:8083}
  servlet:
    context-path: ${CONTEXT_PATH:}

# JWT Configuration
jwt:
  secret: ${JWT_SECRET:dev-jwt-secret-key-for-development-only}
  access-token-validity: ${JWT_ACCESS_TOKEN_VALIDITY:1800}
  refresh-token-validity: ${JWT_REFRESH_TOKEN_VALIDITY:86400}

# CORS Configuration
cors:
  allowed-origins: ${CORS_ALLOWED_ORIGINS:http://localhost:*}

# Azure OpenAI Configuration
azure:
  openai:
    api-key: ${AZURE_OPENAI_API_KEY:}
    endpoint: ${AZURE_OPENAI_ENDPOINT:}
    deployment-name: ${AZURE_OPENAI_DEPLOYMENT:gpt-4o}
    embedding-deployment: ${AZURE_OPENAI_EMBEDDING_DEPLOYMENT:text-embedding-3-large}
    max-tokens: ${AZURE_OPENAI_MAX_TOKENS:2000}
    temperature: ${AZURE_OPENAI_TEMPERATURE:0.3}

# External AI API Configuration  
external:
  ai:
    claude:
      api-key: ${CLAUDE_API_KEY:}
      base-url: ${CLAUDE_BASE_URL:https://api.anthropic.com}
    openai:
      api-key: ${OPENAI_API_KEY:}
      base-url: ${OPENAI_BASE_URL:https://api.openai.com}
    openweather:
      api-key: ${OPENWEATHER_API_KEY:}
      base-url: ${OPENWEATHER_BASE_URL:https://api.openweathermap.org}
    kakao:
      api-key: ${KAKAO_API_KEY:}
      base-url: ${KAKAO_BASE_URL:https://dapi.kakao.com}

  # Azure AI Search Configuration
  ai-search:
    endpoint: ${AZURE_AI_SEARCH_ENDPOINT:}
    api-key: ${AZURE_AI_SEARCH_API_KEY:}
    index-name: ${AZURE_AI_SEARCH_INDEX:meeting-transcripts}

  # Azure Event Hubs Configuration
  eventhub:
    connection-string: ${AZURE_EVENTHUB_CONNECTION_STRING:Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=VUqZ9vFgu35E3c6RiUzoOGVUP8IZpFvlV+AEhC6sUpo=}
    namespace: ${AZURE_EVENTHUB_NAMESPACE:hgzero-eventhub-ns}
    eventhub-name: ${AZURE_EVENTHUB_NAME:hgzero-eventhub-name}
    checkpoint-storage-connection-string: ${AZURE_CHECKPOINT_STORAGE_CONNECTION_STRING:}
    checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER:hgzero-checkpoints}
    consumer-group:
      transcript: ${AZURE_EVENTHUB_CONSUMER_GROUP_TRANSCRIPT:ai-transcript-group}
      meeting: ${AZURE_EVENTHUB_CONSUMER_GROUP_MEETING:ai-meeting-group}

# Actuator Configuration
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,prometheus
      base-path: /actuator
  endpoint:
    health:
      show-details: always
      show-components: always
  health:
    livenessState:
      enabled: true
    readinessState:
      enabled: true

# OpenAPI Documentation
springdoc:
  api-docs:
    path: /v3/api-docs
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  show-actuator: false

# Logging Configuration
logging:
  level:
    root: ${LOG_LEVEL_ROOT:INFO}
    com.unicorn.hgzero.ai: ${LOG_LEVEL_APP:DEBUG}
    org.springframework.web: ${LOG_LEVEL_WEB:INFO}
    org.springframework.security: ${LOG_LEVEL_SECURITY:DEBUG}
    org.hibernate.SQL: ${LOG_LEVEL_SQL:DEBUG}
    org.hibernate.type: ${LOG_LEVEL_SQL_TYPE:TRACE}
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
    file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
  file:
    name: ${LOG_FILE:logs/ai-service.log}
  logback:
    rollingpolicy:
      max-file-size: ${LOG_MAX_FILE_SIZE:10MB}
      max-history: ${LOG_MAX_HISTORY:7}
      total-size-cap: ${LOG_TOTAL_SIZE_CAP:100MB}
