Files
stocksearch/config/config.go
hayato5246 5aeb5f2b80
Some checks failed
Build Push and Restart Compose / deploy (push) Failing after 11m20s
자산 현황 및 자동매매 페이지 제거:
- `/templates/pages/asset.html`, `/templates/pages/autotrade.html` HTML 템플릿 삭제.
- `/static/js/asset.js`, `/static/js/autotrade.js` 클라이언트 스크립트 제거.
- 관련 함수 및 초기화 로직 삭제 (자산 조회 및 자동매매 기능 비활성화).
2026-04-07 21:43:24 +09:00

82 lines
2.4 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)
DatabaseURL string // PostgreSQL 연결 URL
}
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", ""),
DatabaseURL: getEnv("DATABASE_URL", ""),
}
}
// 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
}