DB Migration과 테스트 근거

문서 목적

DB migration과 테스트를 단순 목록이 아니라 운영 이슈를 고정한 근거로 정리한다.

근거 맵

DB Test 근거 맵

DB Test 근거 맵

Migration 그룹

그룹 Migration 운영상 의미
초기 구조 기본 테이블 구성 주문/포지션/자산 기본 구조
설정 관리 운영 설정 테이블 live BUY, provider, scheduler 설정을 DB로 관리
관심 종목 Watchlist 저장 구조 watchlist 기반 분석 대상 관리
AI 분석 로그 AI 판단 로그 저장 AI 판단과 근거를 나중에 추적
주문 사유 주문 사유 기록 주문이 왜 발생했는지 저장
분석-주문 연결 분석 결과와 주문 연결 주문과 AI 분석 결과 연결
정확도 추적 사후 정확도 추적 필드 AI 판단 결과를 사후 비교할 수 있는 필드
paper/live 분리 실전/모의 주문 구분 실전 주문과 모의 주문 분리
채팅 이력 AI 뱅커 대화 저장 AI 뱅커 대화 이력 저장
스냅샷 포트폴리오 스냅샷 저장 포트폴리오 상태를 시점별로 저장
세션 메타 채팅 세션 상태 추적 채팅 세션 단위 상태 추적

테스트 그룹

그룹 테스트 검증 기준
주문 안전 live BUY lock, entry gate, buy weight cap 검증 자동매매 주문 위험 검증
Provider provider priority, blocked provider, fallback 검증 AI provider 장애 대응 검증
Dashboard live portfolio 실패 시 snapshot fallback 검증 대시보드 장애 대응 검증
Portfolio 스냅샷 기반 briefing과 오류 매핑 검증 포트폴리오 설명과 오류 매핑 검증
Backtest 실전 반영 전 정책 검증 정책 변경 전 검증

운영 기준

기준 이유
migration은 기능 추가 기록이 아니라 운영 상태의 기록 어떤 문제가 생겨서 어떤 상태를 저장하게 됐는지 추적
테스트는 수익률 보장이 아니라 위험 경계 검증 실전 주문, provider 장애, snapshot fallback을 고정
주문/분석/스냅샷은 분리 저장 사후에 어떤 판단과 상태가 있었는지 확인

<aside> 💡 이 문서가 설명하는 것: DB Migration과 테스트 근거

</aside>

항목 내용
관련 운영 리스크 운영 상태를 저장하지 않으면 사후 추적이 불가능
대표 구현 근거 system_configs, ai_analysis_logs, is_paper, snapshots
관련 테스트 executor/provider/dashboard/portfolio/backtest tests


실제 코드/DB 근거

<aside> 🧪 DB/Test 근거는 내부 경로가 아니라, 운영 판단을 재현할 수 있는 저장 구조와 검증 동작만 남겼다.

</aside>

운영 상태를 남기는 모델

class SystemConfig(Base):
    __tablename__ = "system_configs"
    config_key: Mapped[str] = mapped_column(String, unique=True, index=True)
    config_value: Mapped[str] = mapped_column(String, nullable=False)

class AIAnalysisLog(Base):
    __tablename__ = "ai_analysis_logs"
    symbol: Mapped[str]
    decision: Mapped[str]
    confidence: Mapped[int]
    recommended_weight: Mapped[int]
    accuracy_label: Mapped[str | None]

class PortfolioSnapshot(Base):
    __tablename__ = "portfolio_snapshots"
    total_net_worth: Mapped[float]
    total_pnl: Mapped[float]
    snapshot_data: Mapped[list[dict]] = mapped_column(JSON)