구조적인 부분 수정
This commit is contained in:
@@ -24,9 +24,23 @@ from app.core.market_schedule import is_market_open
|
||||
from sqlalchemy import text
|
||||
|
||||
# 로깅 설정
|
||||
import os
|
||||
import logging.handlers
|
||||
_log_level = getattr(logging, settings.LOG_LEVEL.upper(), logging.INFO)
|
||||
_log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||
_log_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "logs")
|
||||
os.makedirs(_log_dir, exist_ok=True)
|
||||
_log_file = os.path.join(_log_dir, "backend.log")
|
||||
|
||||
logging.basicConfig(
|
||||
level=getattr(logging, settings.LOG_LEVEL.upper(), logging.INFO),
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||
level=_log_level,
|
||||
format=_log_format,
|
||||
handlers=[
|
||||
logging.StreamHandler(),
|
||||
logging.handlers.RotatingFileHandler(
|
||||
_log_file, maxBytes=10 * 1024 * 1024, backupCount=5, encoding="utf-8"
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -191,6 +205,20 @@ async def lifespan(app: FastAPI):
|
||||
ADD COLUMN IF NOT EXISTS ml_confidence NUMERIC(5, 4),
|
||||
ADD COLUMN IF NOT EXISTS ml_signal VARCHAR(10);
|
||||
"""))
|
||||
# UPSERT를 위한 unique constraint — init-db.sql에 없을 경우 자동 생성
|
||||
await conn.execute(text("""
|
||||
DO $$ BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_constraint
|
||||
WHERE conname = 'uq_stock_analysis_code_date'
|
||||
AND conrelid = 'stock_analysis'::regclass
|
||||
) THEN
|
||||
ALTER TABLE stock_analysis
|
||||
ADD CONSTRAINT uq_stock_analysis_code_date
|
||||
UNIQUE (stock_code, analysis_date);
|
||||
END IF;
|
||||
END $$;
|
||||
"""))
|
||||
# active_trades에 분할 청산 컬럼 추가 (CLAUDE.md 섹션 7.3)
|
||||
await conn.execute(text("""
|
||||
ALTER TABLE active_trades
|
||||
|
||||
Reference in New Issue
Block a user