Some checks failed
Build Push and Restart Compose / deploy (push) Failing after 1m42s
- Svelte 기반 프론트엔드 프로젝트 초기 설정 추가 (`vite`, `tailwindcss` 등 포함). - "자동매매" 주요 상태 및 규칙 관리 페이지 구현. - 1차/2차 손절 및 익절 조건 평가 로직 추가(`calcStopTargets`, `evalExitReason` 등). - 포지션 상세 로그 및 WebSocket 기반 실시간 로그 스트림 추가. - API 서비스 및 Frontend 간 Proxy 설정(Vite 서버). - 세션 체크를 위한 `CheckSession` 핸들러 추가.
80 lines
2.3 KiB
Go
80 lines
2.3 KiB
Go
package config
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
// Config 애플리케이션 전역 설정
|
|
type Config struct {
|
|
Env string
|
|
ServerPort string
|
|
AppKey string
|
|
AppSecret string
|
|
BaseURL string
|
|
DartAPIKey string
|
|
NaverClientID string
|
|
NaverClientSecret string
|
|
GroqAPIKey string // Groq API 키
|
|
GroqModel string // Groq 모델명
|
|
CacheTTLSeconds int
|
|
WSMaxClients int
|
|
WSPollIntervalMS int
|
|
AdminID string // 관리자 ID
|
|
AdminPassword string // 관리자 비밀번호
|
|
CORSOrigin string // CORS 허용 오리진 (예: http://localhost:5173)
|
|
}
|
|
|
|
var App *Config
|
|
|
|
// Load .env 파일을 읽어 설정을 초기화
|
|
func Load() {
|
|
// 개발 환경에서만 .env 파일 로딩 (.env 없어도 오류 무시)
|
|
if err := godotenv.Load(); err != nil {
|
|
log.Println("경고: .env 파일이 없습니다. 환경변수를 직접 설정해야 합니다.")
|
|
}
|
|
|
|
App = &Config{
|
|
Env: getEnv("APP_ENV", "development"),
|
|
ServerPort: getEnv("SERVER_PORT", "8080"),
|
|
AppKey: getEnv("KIWOOM_APP_KEY", ""),
|
|
AppSecret: getEnv("KIWOOM_APP_SECRET", ""),
|
|
BaseURL: getEnv("KIWOOM_BASE_URL", "https://openapi.koreainvestment.com:9443"),
|
|
DartAPIKey: getEnv("DART_API_KEY", ""),
|
|
NaverClientID: getEnv("NAVER_CLIENT_ID", ""),
|
|
NaverClientSecret: getEnv("NAVER_CLIENT_SECRET", ""),
|
|
GroqAPIKey: getEnv("GROQ_API_KEY", ""),
|
|
GroqModel: getEnv("GROQ_MODEL", "llama-3.3-70b-versatile"),
|
|
CacheTTLSeconds: getEnvInt("CACHE_TTL_SECONDS", 1),
|
|
WSMaxClients: getEnvInt("WS_MAX_CLIENTS", 100),
|
|
WSPollIntervalMS: getEnvInt("WS_POLL_INTERVAL_MS", 1000),
|
|
AdminID: getEnv("ADMIN_ID", "admin"),
|
|
AdminPassword: getEnv("ADMIN_PASSWORD", ""),
|
|
CORSOrigin: getEnv("CORS_ORIGIN", ""),
|
|
}
|
|
}
|
|
|
|
// IsDevelopment 개발 환경 여부 반환
|
|
func (c *Config) IsDevelopment() bool {
|
|
return c.Env == "development"
|
|
}
|
|
|
|
func getEnv(key, defaultVal string) string {
|
|
if val := os.Getenv(key); val != "" {
|
|
return val
|
|
}
|
|
return defaultVal
|
|
}
|
|
|
|
func getEnvInt(key string, defaultVal int) int {
|
|
if val := os.Getenv(key); val != "" {
|
|
if n, err := strconv.Atoi(val); err == nil {
|
|
return n
|
|
}
|
|
}
|
|
return defaultVal
|
|
}
|