Minseo-Jo e9e03e1ff8 Refactor: AI 서비스 Python 구현 및 디렉토리 구조 변경
- ai-python: FastAPI 기반 AI 서비스 구현
  - 실시간 회의 제안 기능 추가
  - Claude API 통합
  - EventHub 및 Redis 연동

- ai-java-back: 기존 Java AI 서비스 백업 디렉토리로 이동
  - Spring Boot 기반 구현 보존

- ai 디렉토리: Java 서비스 파일 삭제 처리

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 10:02:33 +09:00

159 lines
4.5 KiB
YAML

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}
model: ${CLAUDE_MODEL:claude-3-5-sonnet-20241022}
max-tokens: ${CLAUDE_MAX_TOKENS:2000}
temperature: ${CLAUDE_TEMPERATURE:0.3}
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}