mirror of
https://github.com/hwanny1128/HGZero.git
synced 2026-06-13 08:19:10 +00:00
백엔드 실행 프로파일 작성
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="ai-service" type="GradleRunConfiguration" factoryName="Gradle">
|
||||
<ExternalSystemSettings>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$/ai" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" value="" />
|
||||
<option name="taskDescriptions">
|
||||
<list />
|
||||
</option>
|
||||
<option name="taskNames">
|
||||
<list>
|
||||
<option value="bootRun" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="vmOptions" value="-Xmx2048m -Xms512m" />
|
||||
</ExternalSystemSettings>
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<method v="2" />
|
||||
<envs>
|
||||
<!-- Database Configuration -->
|
||||
<env name="DB_HOST" value="20.249.153.213" />
|
||||
<env name="DB_NAME" value="aidb" />
|
||||
<env name="DB_USERNAME" value="hgzerouser" />
|
||||
<env name="DB_PASSWORD" value="Hi5Jessica!" />
|
||||
<env name="DB_PORT" value="5432" />
|
||||
<env name="DDL_AUTO" value="update" />
|
||||
|
||||
<!-- Redis Configuration -->
|
||||
<env name="REDIS_HOST" value="20.249.177.114" />
|
||||
<env name="REDIS_PORT" value="6379" />
|
||||
<env name="REDIS_PASSWORD" value="Hi5Jessica!" />
|
||||
<env name="REDIS_DATABASE" value="4" />
|
||||
|
||||
<!-- Server Configuration -->
|
||||
<env name="SERVER_PORT" value="8083" />
|
||||
|
||||
<!-- JWT Configuration -->
|
||||
<env name="JWT_SECRET" value="dev-jwt-secret-key-for-development-only" />
|
||||
<env name="JWT_ACCESS_TOKEN_VALIDITY" value="1800" />
|
||||
<env name="JWT_REFRESH_TOKEN_VALIDITY" value="86400" />
|
||||
|
||||
<!-- Spring Profile -->
|
||||
<env name="SPRING_PROFILES_ACTIVE" value="dev" />
|
||||
|
||||
<!-- Logging Configuration -->
|
||||
<env name="LOG_LEVEL_ROOT" value="INFO" />
|
||||
<env name="LOG_LEVEL_APP" value="DEBUG" />
|
||||
<env name="LOG_FILE" value="logs/ai-service.log" />
|
||||
<env name="LOG_MAX_FILE_SIZE" value="10MB" />
|
||||
<env name="LOG_MAX_HISTORY" value="7" />
|
||||
<env name="LOG_TOTAL_SIZE_CAP" value="100MB" />
|
||||
|
||||
<!-- External AI API Keys -->
|
||||
<env name="CLAUDE_API_KEY" value="sk-ant-ap..." />
|
||||
<env name="OPENAI_API_KEY" value="sk-proj-An4Q..." />
|
||||
<env name="OPENWEATHER_API_KEY" value="1aa5b..." />
|
||||
<env name="KAKAO_API_KEY" value="5cdc24...." />
|
||||
|
||||
<!-- Azure Configuration (if needed) -->
|
||||
<env name="AZURE_OPENAI_API_KEY" value="" />
|
||||
<env name="AZURE_OPENAI_ENDPOINT" value="" />
|
||||
<env name="AZURE_AI_SEARCH_ENDPOINT" value="" />
|
||||
<env name="AZURE_AI_SEARCH_API_KEY" value="" />
|
||||
|
||||
<!-- Azure EventHub Configuration -->
|
||||
<env name="AZURE_EVENTHUB_CONNECTION_STRING" value="Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=VUqZ9vFgu35E3c6RiUzoOGVUP8IZpFvlV+AEhC6sUpo=" />
|
||||
<env name="AZURE_EVENTHUB_NAME" value="hgzero-eventhub-name" />
|
||||
<env name="AZURE_EVENTHUB_NAMESPACE" value="hgzero-eventhub-ns" />
|
||||
|
||||
<!-- CORS Configuration -->
|
||||
<env name="CORS_ALLOWED_ORIGINS" value="http://localhost:*" />
|
||||
</envs>
|
||||
</configuration>
|
||||
</component>
|
||||
@@ -0,0 +1,98 @@
|
||||
# AI 서비스 환경변수 설정 가이드
|
||||
|
||||
## 필수 환경변수
|
||||
|
||||
### 데이터베이스 설정
|
||||
```bash
|
||||
export DB_HOST=20.249.153.213
|
||||
export DB_NAME=aidb
|
||||
export DB_USERNAME=hgzerouser
|
||||
export DB_PASSWORD=Hi5Jessica!
|
||||
export DB_PORT=5432
|
||||
export DDL_AUTO=update
|
||||
```
|
||||
|
||||
### Redis 설정
|
||||
```bash
|
||||
export REDIS_HOST=20.249.177.114
|
||||
export REDIS_PORT=6379
|
||||
export REDIS_PASSWORD=Hi5Jessica!
|
||||
export REDIS_DATABASE=4
|
||||
```
|
||||
|
||||
### 서버 설정
|
||||
```bash
|
||||
export SERVER_PORT=8083
|
||||
export SPRING_PROFILES_ACTIVE=dev
|
||||
```
|
||||
|
||||
### JWT 설정
|
||||
```bash
|
||||
export JWT_SECRET=dev-jwt-secret-key-for-development-only
|
||||
export JWT_ACCESS_TOKEN_VALIDITY=1800
|
||||
export JWT_REFRESH_TOKEN_VALIDITY=86400
|
||||
```
|
||||
|
||||
### 로깅 설정
|
||||
```bash
|
||||
export LOG_LEVEL_ROOT=INFO
|
||||
export LOG_LEVEL_APP=DEBUG
|
||||
export LOG_FILE=logs/ai-service.log
|
||||
export LOG_MAX_FILE_SIZE=10MB
|
||||
export LOG_MAX_HISTORY=7
|
||||
export LOG_TOTAL_SIZE_CAP=100MB
|
||||
```
|
||||
|
||||
### 외부 API 키 설정
|
||||
```bash
|
||||
export CLAUDE_API_KEY=sk-ant-ap...
|
||||
export OPENAI_API_KEY=sk-proj-An4Q...
|
||||
export OPENWEATHER_API_KEY=1aa5b...
|
||||
export KAKAO_API_KEY=5cdc24....
|
||||
```
|
||||
|
||||
### Azure EventHub 설정
|
||||
```bash
|
||||
export AZURE_EVENTHUB_CONNECTION_STRING="Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=VUqZ9vFgu35E3c6RiUzoOGVUP8IZpFvlV+AEhC6sUpo="
|
||||
export AZURE_EVENTHUB_NAME=hgzero-eventhub-name
|
||||
export AZURE_EVENTHUB_NAMESPACE=hgzero-eventhub-ns
|
||||
```
|
||||
|
||||
### CORS 설정
|
||||
```bash
|
||||
export CORS_ALLOWED_ORIGINS=http://localhost:*
|
||||
```
|
||||
|
||||
## 선택적 환경변수 (Azure AI 서비스 사용 시)
|
||||
```bash
|
||||
export AZURE_OPENAI_API_KEY=your-azure-openai-key
|
||||
export AZURE_OPENAI_ENDPOINT=your-azure-openai-endpoint
|
||||
export AZURE_AI_SEARCH_ENDPOINT=your-azure-search-endpoint
|
||||
export AZURE_AI_SEARCH_API_KEY=your-azure-search-key
|
||||
```
|
||||
|
||||
## 실행 방법
|
||||
|
||||
### 1. IntelliJ IDEA 실행 프로파일 사용
|
||||
- IntelliJ에서 ai-service 실행 프로파일이 자동으로 설정됨
|
||||
- 환경변수가 미리 설정되어 있어 바로 실행 가능
|
||||
|
||||
### 2. Gradle 직접 실행
|
||||
```bash
|
||||
cd ai
|
||||
export 환경변수들...
|
||||
./gradlew bootRun
|
||||
```
|
||||
|
||||
### 3. 환경변수 파일 사용 (.env)
|
||||
```bash
|
||||
# .env 파일 생성 후 위 환경변수들 설정
|
||||
source .env
|
||||
./gradlew bootRun
|
||||
```
|
||||
|
||||
## 주의사항
|
||||
- API 키들은 보안을 위해 실제 값으로 교체해야 함
|
||||
- 운영 환경에서는 JWT_SECRET을 반드시 변경
|
||||
- 로그 파일 위치는 애플리케이션 실행 권한이 있는 경로로 설정
|
||||
- EventHub Connection String은 실제 Azure 리소스에 맞게 설정
|
||||
@@ -0,0 +1,125 @@
|
||||
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:}
|
||||
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:8084}
|
||||
servlet:
|
||||
context-path: ${CONTEXT_PATH:}
|
||||
|
||||
# JWT Configuration
|
||||
jwt:
|
||||
secret: ${JWT_SECRET:}
|
||||
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}
|
||||
|
||||
# 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:}
|
||||
namespace: ${AZURE_EVENTHUB_NAMESPACE:hgzero-eventhub-ns}
|
||||
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:
|
||||
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_PATH:logs/ai.log}
|
||||
Binary file not shown.
@@ -31,7 +31,7 @@ spring:
|
||||
redis:
|
||||
host: ${REDIS_HOST:20.249.177.114}
|
||||
port: ${REDIS_PORT:6379}
|
||||
password: ${REDIS_PASSWORD:}
|
||||
password: ${REDIS_PASSWORD:Hi5Jessica!}
|
||||
timeout: 2000ms
|
||||
lettuce:
|
||||
pool:
|
||||
@@ -43,13 +43,13 @@ spring:
|
||||
|
||||
# Server Configuration
|
||||
server:
|
||||
port: ${SERVER_PORT:8084}
|
||||
port: ${SERVER_PORT:8083}
|
||||
servlet:
|
||||
context-path: ${CONTEXT_PATH:}
|
||||
|
||||
# JWT Configuration
|
||||
jwt:
|
||||
secret: ${JWT_SECRET:}
|
||||
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}
|
||||
|
||||
@@ -67,6 +67,22 @@ azure:
|
||||
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:}
|
||||
@@ -75,8 +91,9 @@ azure:
|
||||
|
||||
# Azure Event Hubs Configuration
|
||||
eventhub:
|
||||
connection-string: ${AZURE_EVENTHUB_CONNECTION_STRING:}
|
||||
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:
|
||||
@@ -113,6 +130,7 @@ springdoc:
|
||||
# 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}
|
||||
@@ -122,4 +140,9 @@ logging:
|
||||
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_PATH:logs/ai.log}
|
||||
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}
|
||||
|
||||
Reference in New Issue
Block a user