133 lines
3.9 KiB
YAML
133 lines
3.9 KiB
YAML
spring:
|
||
application:
|
||
name: goldenchart-backend
|
||
|
||
servlet:
|
||
multipart:
|
||
max-file-size: 6MB
|
||
max-request-size: 30MB
|
||
|
||
profiles:
|
||
active: ${SPRING_PROFILES_ACTIVE:local}
|
||
|
||
datasource:
|
||
url: ${DB_URL:jdbc:mysql://localhost:3306/stockAnalyzer?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8&allowPublicKeyRetrieval=true}
|
||
username: ${DB_USERNAME:stock}
|
||
password: ${DB_PASSWORD:analyzer}
|
||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||
hikari:
|
||
maximum-pool-size: 20
|
||
minimum-idle: 5
|
||
connection-timeout: 30000
|
||
idle-timeout: 600000
|
||
max-lifetime: 1800000
|
||
|
||
jpa:
|
||
hibernate:
|
||
ddl-auto: validate
|
||
show-sql: false
|
||
properties:
|
||
hibernate:
|
||
dialect: org.hibernate.dialect.MySQLDialect
|
||
format_sql: true
|
||
default_batch_fetch_size: 100
|
||
open-in-view: false
|
||
|
||
flyway:
|
||
enabled: true
|
||
locations: classpath:db/migration
|
||
baseline-on-migrate: true
|
||
baseline-version: 0
|
||
|
||
jackson:
|
||
serialization:
|
||
write-dates-as-timestamps: false
|
||
deserialization:
|
||
fail-on-unknown-properties: false
|
||
default-property-inclusion: non_null
|
||
time-zone: Asia/Seoul
|
||
|
||
server:
|
||
port: 8080
|
||
servlet:
|
||
context-path: /api
|
||
compression:
|
||
enabled: true
|
||
mime-types: application/json,application/javascript,text/css
|
||
|
||
# Upbit API
|
||
upbit:
|
||
api:
|
||
base-url: https://api.upbit.com
|
||
candle-limit: 1000
|
||
request-delay-ms: 200
|
||
# [항목4] warm-up 목표 봉 수 — 지표 계산 미스매치 방지
|
||
# 전략에서 사용하는 최대 Period(기간)의 최소 2~3배 이상으로 설정해야 한다.
|
||
# 예) 신고가(120봉), HMA(200), EMA(200) 사용 시 → 200×3 = 600봉 이상 필요
|
||
# EMA(200) 완전 수렴: ~1150봉 필요. 여유분 포함 1500봉으로 설정.
|
||
# Ta4jStorage.MAX_BAR_COUNT(1800) 이하여야 하며,
|
||
# 1500봉 = 200봉×8페이지 / 110ms 지연 = 구독당 약 880ms 추가 소요
|
||
warmup-count: 1500
|
||
websocket:
|
||
url: wss://api.upbit.com/websocket/v1
|
||
|
||
# Logging
|
||
logging:
|
||
level:
|
||
com.goldenchart: INFO
|
||
org.springframework.security: WARN
|
||
org.hibernate.SQL: WARN
|
||
pattern:
|
||
console: "%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
|
||
|
||
# GoldenChart settings
|
||
goldenchart:
|
||
secrets:
|
||
# 업비트 API 키 DB 암호화 (운영: GC_SECRETS_ENCRYPTION_KEY 환경변수 필수, 32자 이상 권장)
|
||
encryption-key: ${GC_SECRETS_ENCRYPTION_KEY:}
|
||
indicator:
|
||
warmup-bars: 200 # EMA/RMA 수렴을 위한 워밍업 기간
|
||
max-bars: 2000 # 최대 로드 캔들 수
|
||
trading:
|
||
pipeline:
|
||
enabled: true
|
||
queue-capacity: 65536
|
||
worker-threads: 6
|
||
order-rate-per-second: 5.0
|
||
max-bars-per-series: 500
|
||
stale-tick-seconds: 120
|
||
gap-backfill-cron: "0 */5 * * * *"
|
||
gap-backfill-candle-count: 20
|
||
trend-search:
|
||
scheduler:
|
||
enabled: true
|
||
tick-ms: 1000
|
||
queue-capacity: 16
|
||
verification:
|
||
upload-dir: ${GC_VERIFICATION_UPLOAD_DIR:data/verification-images}
|
||
max-image-size-mb: 5
|
||
max-images-per-issue: 30
|
||
mobile-app:
|
||
release-dir: ${GC_MOBILE_APP_RELEASE_DIR:data/mobile-releases}
|
||
version: ${GC_MOBILE_APP_VERSION:}
|
||
# QR·APK 다운로드 절대 URL (로컬 개발 시에도 exdev 서버 APK 사용)
|
||
public-base-url: ${GC_MOBILE_APP_PUBLIC_BASE_URL:http://exdev.co.kr}
|
||
desktop-app:
|
||
release-dir: ${GC_DESKTOP_APP_RELEASE_DIR:data/desktop-releases}
|
||
version: ${GC_DESKTOP_APP_VERSION:}
|
||
public-base-url: ${GC_DESKTOP_APP_PUBLIC_BASE_URL:http://exdev.co.kr}
|
||
cors:
|
||
allowed-origins:
|
||
- http://localhost:5173
|
||
- http://localhost:5174
|
||
- http://localhost:3000
|
||
- http://localhost:80
|
||
- http://localhost
|
||
- capacitor://localhost
|
||
- https://localhost
|
||
|
||
# Firebase FCM (서비스 계정 JSON: classpath:firebase-service-account.json)
|
||
firebase:
|
||
enabled: ${FIREBASE_ENABLED:false}
|
||
service-account-file: ${FIREBASE_SERVICE_ACCOUNT:firebase-service-account.json}
|