# Galaxis-Po 배포 테스트 리포트 **테스트 일시**: 2026-05-09 (토) **테스트 URL**: https://galaxis.ayuriel.duckdns.org **테스터**: Claude (Cowork) --- ## 전체 결과 요약 | 페이지 / 기능 | 상태 | 비고 | |---|---|---| | 로그인 / 인증 | ✅ 정상 | | | 대시보드 | ✅ 정상 | | | 포트폴리오 목록 | ✅ 정상 | | | 포트폴리오 상세 (보유종목·거래내역·분석) | ✅ 정상 | | | 전략 목록 | ✅ 정상 | | | KJB 전략 실행 (종목 랭킹) | ✅ 정상 | | | 매매 신호 (오늘) | ✅ 정상 | 주말이라 신호 0건 — 정상 | | 매매 신호 이력 | ✅ 정상 | | | 백테스트 실행 | ❌ 실패 | No trading days found | | 데이터 수집 관리 (`/admin/data`) | ✅ 정상 | | | 데이터 탐색 차트 | ❌ 실패 | 런타임 에러 | --- ## ✅ 정상 동작 상세 ### 대시보드 - 총 자산: ₩78,627,545 - 총 수익률: +32.3% (+₩19,203,619) - 활성 포트폴리오: 3개 - 보유 중인 종목: 5개 - 자산 배분 도넛 차트 정상 렌더링 ### 포트폴리오 - 연금 포트폴리오 (퇴직연금): ₩78,627,545, +32.32%, 5종목 보유 - ACE KRX금현물 (14.5%, +41.15%) - TIGER 미국S&P500 (18.0%, +25.38%) - KIWOOM 국고채10년 (20.6%, -7.31%) - TIGER 200 (2.4%, +241.95%) - KODEX 200미국채혼합 (44.6%, +58.89%) - 거래내역 탭: 2026-03-23 최근 매수 이력 정상 표시 - 분석 탭: 자산 배분 차트 + 목표 vs 실제 비중 비교 정상 ### 전략 - 멀티 팩터, 슈퍼 퀄리티, 밸류 모멘텀, 김종봉 단기매매 4개 카드 정상 - KJB 전략 실행: 30/30 종목 (기준일 2026-05-09), 팩터 스코어 순위 정상 - 1위: LS ELECTRIC (산업재, 종합 86.55) ### 매매 신호 - 오늘의 신호: 매수 0, 매도 0, 부분매도 0 (주말 - 정상) - 신호 이력: 2026-05-07 HD현대중공업(329180) 매수, 진입가 693,000, large_candle 사유 ### 데이터 수집 - 수집 작업 6종 정상 표시 (종목 마스터, 섹터 정보, 가격 데이터, 밸류 지표, ETF 마스터, ETF 가격) - 주식 마스터: 2,787건 수집 완료 - ETFPriceCollector: 52,038건 수집 성공 --- ## ❌ 버그 상세 ### BUG-01: 백테스트 전면 실패 (심각) **증상**: 모든 전략, 모든 날짜 범위에서 실패 **에러 메시지**: `백테스트 실패: No trading days found in the specified period` **재현**: 백테스트 설정에서 어떤 전략을 선택해도 실행 즉시 실패 **근본 원인**: `backend/app/services/backtest/engine.py:316`의 `_get_trading_days()`가 `Price` 테이블에서 해당 기간 날짜를 조회하는데, DB에 2020~2024년 가격 데이터가 없어 빈 리스트 반환 → 에러 발생 ```python def _get_trading_days(self, start_date: date, end_date: date) -> List[date]: prices = self.db.query(Price.date).filter(...).distinct().all() return [p[0] for p in prices] # 2020~2024 데이터 없으면 [] ``` **수정 방향**: 1. (근본 해결) pykrx로 2020~2024년 과거 가격 데이터 소급 수집 2. (임시 조치) 백테스트 기본 날짜를 실제 보유 데이터 기간으로 변경 + UI에서 사용 가능 날짜 범위 안내 ### BUG-02: 데이터 탐색 차트 버튼 런타임 에러 **증상**: `/admin/data/explorer`에서 종목 옆 "차트" 버튼 클릭 시 전체 페이지 에러 화면 표시 **에러**: "문제가 발생했습니다. 페이지를 새로고침 해주세요." **재현**: 데이터 탐색 → 삼성전자 검색 → 차트 클릭 **추정 원인**: 차트 모달/컴포넌트 렌더링 중 unhandled exception (가격 데이터 없음 또는 props 타입 오류) ### BUG-03: PriceCollector 작업 상태 미업데이트 **증상**: 5/6, 5/7, 5/8 날짜의 PriceCollector가 `running` 상태로 잔류 (완료/실패 처리 안 됨) **영향**: 작업이 실제로 수집됐는지 여부 불투명, 모니터링 신뢰도 저하 **추정 원인**: PriceCollector 작업이 완료/에러 시 DB 상태를 업데이트하지 않거나, 프로세스가 비정상 종료됨 ### BUG-04: `/admin` 경로 404 **증상**: `/admin` 직접 접근 시 404 **실제 경로**: `/admin/data` **영향**: 낮음 (사이드바에서 접근하면 정상) **수정 방향**: `/admin` → `/admin/data` 리다이렉트 추가 --- --- ## 구현됐지만 UI에 미노출된 기능 ### A. 프론트엔드 페이지 존재, 진입 경로 없음 (직접 URL 접근만 가능) | URL | 기능 | 연결 방식 | |---|---|---| | `/portfolio/[id]/correlation` | 상관관계 분석 (상관관계 매트릭스, 분산화 점수) | 사이드바·포트폴리오 상세 어디에도 링크 없음 | | `/portfolio/[id]/benchmark` | 벤치마크 비교 (KOSPI 대비 수익률, Sharpe, MDD 비교) | 진입 경로 없음 | | `/portfolio/[id]/drawdown` | 드로우다운 분석 (현재·최대 MDD, 경보 한도, 히스토리 차트) | 진입 경로 없음 | | `/portfolio/[id]/history` | 포트폴리오 수익률 히스토리 (별도 전체 페이지) | 진입 경로 없음 | | `/strategy/optimizer` | 전략 파라미터 최적화 (그리드 서치, CAGR/MDD/Sharpe 기준 랭킹) | 전략 페이지에 링크 없음 | | `/pension/tax-simulator` | 퇴직연금 세금 시뮬레이터 (세액공제, 연금 vs 일시금 세금 비교) | 퇴직연금 페이지에 링크 없음 | | `/backtest/compare` | 백테스트 결과 비교 (여러 백테스트 동시 비교) | 백테스트 "비교" 버튼 존재하나 백테스트 결과가 없어 접근 불가 | | `/strategy/compare` | 전략 비교 페이지 | 전략 페이지 "전략 비교" 버튼으로 접근 가능 (노출됨) | ### B. 백엔드 API 구현 완료, 프론트엔드 페이지 없음 | API 파일 | 기능 | 상태 | |---|---|---| | `backend/app/api/agents.py` | 자연어 쿼리 기반 AI 투자 분석 에이전트 (`/api/agent`) — 스트리밍 응답, tool call 로그 포함 | 백엔드만 구현, 프론트엔드 완전 미구현 | | `backend/app/api/screening.py` | KJB 종목 스크리닝 신호 (`/api/screening/today`, `/api/screening/history`, `/api/screening/watchlist`, `/api/screening/auto-orders`) | 백엔드만 구현, 프론트엔드 완전 미구현 | ### C. 요약 - **직접 URL로 접근은 가능하나 진입 경로가 없는 페이지**: 7개 → 포트폴리오 분석 3종(상관관계·벤치마크·드로우다운), 포트폴리오 히스토리, 전략 최적화, 퇴직연금 세금 시뮬레이터, 백테스트 비교 - **백엔드만 구현된 기능**: 2개 (AI 에이전트, 스크리닝) - **이미 UI에 노출된 기능 중 작동 안 하는 것**: 백테스트 전체 (BUG-01) --- ## 환경 정보 - 주식 마스터: 2,787건 - ETF 가격: 52,038건 - 포트폴리오: 3개 (연금 2개, 키움 일반 1개) - 가격 데이터 범위: 2025년 이후로 추정 (2020~2024 데이터 없음)