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} # 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}