refactor: config.yaml 제거 및 환경변수 전용 설정으로 전환

- config.yaml 파일 삭제 (모든 설정을 .env로 이관)
- conf/db.py: 환경변수에서 직접 DB 설정 로드
- lib/common.py: load_config()를 환경변수 기반으로 완전히 재작성
- .env 파일에 모든 설정값 추가 (API, GA4, POS, 예측 가중치 등)
- YAML 의존성 제거, 환경변수만으로 전체 시스템 설정 가능
- 12-factor app 원칙 준수 (설정을 환경변수로 관리)
This commit is contained in:
2025-12-26 17:45:38 +09:00
parent 98d633ead8
commit 5cae6e22c7
2 changed files with 61 additions and 103 deletions

View File

@ -3,41 +3,22 @@ import os
import logging
from sqlalchemy import create_engine, event, exc, pool
from sqlalchemy.orm import sessionmaker, scoped_session
import yaml
logger = logging.getLogger(__name__)
# 프로젝트 루트 경로 설정
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
CONFIG_PATH = os.path.join(BASE_DIR, 'conf', 'config.yaml')
def load_config(path=CONFIG_PATH):
"""설정 파일 로드 (환경변수 우선)"""
try:
# config.yaml 로드
with open(path, 'r', encoding='utf-8') as f:
config = yaml.safe_load(f)
if not config:
raise ValueError(f"설정 파일이 비어있음: {path}")
# 환경변수로 데이터베이스 설정 덮어쓰기
if os.getenv('DB_HOST'):
config.setdefault('database', {})
config['database']['host'] = os.getenv('DB_HOST', config['database'].get('host'))
config['database']['user'] = os.getenv('DB_USER', config['database'].get('user'))
config['database']['password'] = os.getenv('DB_PASSWORD', config['database'].get('password'))
config['database']['name'] = os.getenv('DB_NAME', config['database'].get('name'))
return config
except FileNotFoundError:
logger.error(f"설정 파일을 찾을 수 없음: {path}")
raise
except yaml.YAMLError as e:
logger.error(f"YAML 파싱 오류: {e}")
raise
def get_db_config():
"""환경변수에서 데이터베이스 설정 로드"""
return {
'host': os.getenv('DB_HOST', 'localhost'),
'user': os.getenv('DB_USER', 'firstgarden'),
'password': os.getenv('DB_PASSWORD', 'Fg9576861!'),
'name': os.getenv('DB_NAME', 'firstgarden')
}
config = load_config()
db_cfg = config.get('database', {})
db_cfg = get_db_config()
# DB URL 구성
db_url = (