galaxis-po/docs/test-report-2026-05-09.md
머니페니 120a8546cb
Some checks failed
Deploy to Production / deploy (push) Failing after 2m38s
fix: 테스트 리포트 보완 계획 전체 구현
2026-05-10 16:44:05 +09:00

141 lines
6.8 KiB
Markdown

# 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 데이터 없음)