From 325c6d64e17702c514691d989194bc4dc0d08460 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Thu, 25 Jun 2026 17:58:24 +0900 Subject: [PATCH] docs(deployment): Add comprehensive deployment checklist and timeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 배포 및 실전 운영 체크리스트: Phase 0 (완료): 코드 구현 & UI/UX 완성 - P3~P6 YAML 명세 (4개 파일) - GAS 함수 7개 (gas_data_feed.gs) - MudBlazor UI (Dashboard, Layout, Navigation) - Release 빌드 완료 (24MB) Phase 1 (지금): 배포 실행 - 웹 서버 배포 (deploy.sh 실행) - GAS 프로젝트 생성 및 함수 배포 - live_outcome_ledger 스프레드시트 초기화 - 데이터베이스 연결 확인 Phase 2 (6주): 실전 운영 Week 1-2: 6-8개 신호 수집 Week 3-4: T+20 데이터 수집 + 8-10개 추가 Week 5-6: 데이터 수렴 + 8-10개 추가 Week 7: 최종 신호 + CALIBRATED 전환 최종 목표: - 신호 30개 수집 (SCALP 10 + SWING 8 + MOMENTUM 7 + POSITION 5) - 승률 >= 60% (30개 중 18개 WIN) - honest_proof_score: 56.57 → 95.0 달성 - 예상 완료: 2026-08-10 Co-Authored-By: Claude Haiku 4.5 --- DEPLOYMENT_CHECKLIST.md | 292 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 292 insertions(+) create mode 100644 DEPLOYMENT_CHECKLIST.md diff --git a/DEPLOYMENT_CHECKLIST.md b/DEPLOYMENT_CHECKLIST.md new file mode 100644 index 0000000..822bf6e --- /dev/null +++ b/DEPLOYMENT_CHECKLIST.md @@ -0,0 +1,292 @@ +# 🚀 Quant Engine v9 Deployment Checklist + +**상태**: 2026-06-25 배포 준비 완료 +**목표**: honest_proof_score 56.57 → 95.0 +**기간**: 6주 (2026-06-25 ~ 2026-08-10) + +--- + +## ✅ Phase 0: 사전 준비 (완료) + +### 코드 구현 +- [x] **P3 손절 체계** — `spec/exit/stop_loss.yaml` + - calcAbsoluteRiskStopV1_ + - calcRelativeUnderperfAlertV1_ + - calcStopActionLadderV1_ + +- [x] **P4 라우팅** — `spec/xx_routing_contract.yaml` + - buildRoutePacket_ (SCALP/SWING/MOMENTUM/POSITION) + +- [x] **P5 뒷북 차단** — `spec/exit/pre_distribution_gate.yaml` + - calcAlphaLeadV1_ + - calcDistributionRiskV1_ + +- [x] **P6 현금확보** — `spec/exit/cash_recovery.yaml` + - calcCashRecoveryOptimizerV1_ + +### UI/UX +- [x] MudBlazor 6.10.0 추가 (QuantEngine.Web.csproj) +- [x] Dashboard.razor — Material Design 레이아웃 +- [x] MainLayout.razor — 반응형 AppBar + Drawer +- [x] NavMenu.razor — Material Icons 네비게이션 +- [x] App.razor — MudThemeProvider 통합 + +### 빌드 +- [x] Release 빌드: `dotnet publish -c Release` +- [x] 결과: `src/dotnet/QuantEngine.Web/publish/` (24MB, 172개 파일) +- [x] 모든 컴파일 에러 해결 + +--- + +## 🚀 Phase 1: 배포 (지금 진행) + +### 1.1 웹 서버 배포 + +```bash +# 실행 방법 +chmod +x deploy.sh +./deploy.sh +``` + +**배포 스크립트 단계:** +- [ ] SSH 연결 확인 (178.104.200.7) +- [ ] 원격 백업 생성 (`/var/www/quant_backup_*`) +- [ ] 파일 전송 (rsync, 24MB) +- [ ] 권한 설정 (www-data:www-data) +- [ ] nginx 재시작 +- [ ] HTTP 상태 확인 (200 OK) + +**확인 URL:** +``` +http://178.104.200.7/quant/ +``` + +### 1.2 GAS 배포 + +#### Step 1: Google Apps Script 프로젝트 생성 +``` +1. Google Drive → 새로 만들기 → Google Apps Script +2. 프로젝트명: "Quant Engine Data Feed" +3. 스크립트 저장 +``` + +#### Step 2: 함수 추가 +```javascript +// 다음 파일들의 내용을 복사해서 GAS에 붙여넣기: +// - src/google_apps_script/gas_data_feed.gs (P3~P6 함수) +// - src/google_apps_script/live_outcome_ledger.gs (신호 추적) +``` + +#### Step 3: 스프레드시트 연동 +``` +1. 새 스프레드시트 생성: "live_outcome_ledger" +2. LEDGER_SHEET_ID 변수 업데이트 (live_outcome_ledger.gs) +3. initializeLedger_() 실행 → 헤더 자동 생성 +``` + +#### Step 4: 테스트 +```javascript +// GAS 콘솔에서 실행 +testLiveOutcomeLedger(); + +// 또는 개별 테스트 +testP3Functions(); +``` + +**체크리스트:** +- [ ] GAS 프로젝트 생성 완료 +- [ ] gas_data_feed.gs 파일 추가 (7개 함수) +- [ ] live_outcome_ledger.gs 파일 추가 (신호 추적) +- [ ] LEDGER_SHEET_ID 설정 (스프레드시트 ID) +- [ ] initializeLedger_() 실행 +- [ ] 테스트 함수 통과 + +### 1.3 데이터베이스 연결 확인 + +```bash +# SSH 접속 후 +ssh kjh2064@178.104.200.7 + +# PostgreSQL 연결 확인 +psql -h 127.0.0.1 -U gitea -d giteadb +``` + +**체크리스트:** +- [ ] PostgreSQL 실행 중 +- [ ] giteadb 데이터베이스 존재 +- [ ] quantengine schema 존재 + +--- + +## 📊 Phase 2: 실전 운영 (6주) + +### Week 1-2: 기초 구축 (2026-06-25 ~ 2026-07-08) + +**목표**: 6-8개 신호 수집 + +**매일 해야 할 일:** +- [ ] 신호 발생 → `addSignal_(signal)` 호출 +- [ ] 또는 스프레드시트 "live_outcome_ledger"에 직접 입력 + +**주간 금요일 (매주):** +- [ ] `calculateStats_()` 실행 +- [ ] win_rate 확인 (목표: >= 60%) +- [ ] 주간 리포트 작성 (docs/DAILY_SIGNAL_TRACKING.md 참고) + +**체크리스트:** +- [ ] Week 1: 3-4개 신호 +- [ ] Week 2: 3-4개 신호 (누적 6-8개) +- [ ] 승률 >= 50% 유지 + +### Week 3-4: T+20 수집 (2026-07-09 ~ 2026-07-22) + +**목표**: 추가 8-10개 신호 + T+20 데이터 수집 시작 + +**매일:** +- [ ] 신규 신호 기록 +- [ ] T+20 도달한 신호 `updatePriceT20_(signalId, priceT20)` 호출 + +**T+20 가격 수집:** +```python +# KIS API, Yahoo Finance 등에서 자동 수집 +# 또는 수동으로 스프레드시트 입력 + +# 자동으로 계산됨: +# - return_pct_t20 +# - outcome (WIN/LOSS/BREAKEVEN) +# - win_margin +# - validation_status: PROVISIONAL +``` + +**체크리스트:** +- [ ] Week 3: 4-5개 신호 +- [ ] Week 4: 4-5개 신호 (누적 14-18개) +- [ ] T+20 데이터 6-8개 수집 +- [ ] 완료된 신호 승률 >= 60% + +### Week 5-6: 데이터 수렴 (2026-07-23 ~ 2026-08-05) + +**목표**: 추가 8-10개 신호 + 30개 근처 + +**매일:** +- [ ] 신규 신호 기록 +- [ ] T+20 데이터 입력 (완료) + +**대량 수렴:** +```javascript +// 주간 실행 +stats = calculateStats_(); +Logger.log(`승률: ${stats.win_rate}%, 완료: ${stats.completed}/30`); +``` + +**체크리스트:** +- [ ] Week 5: 4-5개 신호 +- [ ] Week 6: 4-5개 신호 (누적 22-28개) +- [ ] 전체 승률 >= 60% + +### Week 7: CALIBRATED 전환 (2026-08-06 ~ 2026-08-10) + +**목표**: 30개 완료 + CALIBRATED 전환 + +**최종 신호:** +- [ ] 마지막 2-8개 신호 수집 +- [ ] T+20 데이터 완료 + +**CALIBRATED 전환 실행:** +```javascript +// 조건 확인 +check = checkCalibrationReady_(); +Logger.log(JSON.stringify(check, null, 2)); + +// 조건 충족 시 +calibrateIfReady_(); +``` + +**체크리스트:** +- [ ] 신호 누적: 30개 완료 +- [ ] 승률: >= 60% (30개 중 최소 18개 WIN) +- [ ] avg_win_margin >= 2.0% +- [ ] PROVISIONAL → CALIBRATED 전환 +- [ ] honest_proof_score 업데이트 (95.0 달성) + +--- + +## 🎯 최종 목표 + +### honest_proof_score 개선 + +``` +현재: 56.57 +├─ P0 완료: +10점 → 66.57 +├─ P2 샘플: +20점 → 86.57 +└─ P3~P6: +8점 → 94.57 ≈ 95.0 ✅ +``` + +### 배포 완료 조건 + +- [x] Release 빌드 성공 +- [x] 명세 파일 (P3~P6 YAML) +- [x] GAS 함수 구현 (7개) +- [x] 배포 스크립트 작성 +- [x] 신호 추적 시스템 (GAS) +- [ ] 웹 서버 배포 실행 +- [ ] GAS 프로젝트 배포 실행 +- [ ] 30개 신호 수집 (6주) +- [ ] CALIBRATED 전환 +- [ ] honest_proof_score 95.0 달성 + +--- + +## 📝 추가 작업 + +### 배포 후 확인 + +```bash +# 웹사이트 접속 +curl -I http://178.104.200.7/quant/ + +# 로그 모니터링 +ssh kjh2064@178.104.200.7 +sudo tail -f /var/log/nginx/error.log +sudo tail -f /var/log/nginx/access.log + +# 백업 위치 +/var/www/quant_backup_YYYYMMDD_HHMMSS/ +``` + +### 문제 해결 + +| 문제 | 해결법 | +|------|--------| +| HTTP 503 | 앱이 시작 중. 몇 초 후 재시도 | +| HTTP 404 | nginx 설정 확인 (`/etc/nginx/sites-available/quant`) | +| SSH 연결 실패 | SSH 키 확인 (`~/.ssh/id_ed25519`) | +| 성능 저하 | 데이터베이스 연결 확인, 로그 분석 | + +### 모니터링 + +```bash +# 일일 헬스 체크 (cron) +0 9 * * * curl http://178.104.200.7/quant/ > /dev/null 2>&1 + +# 주간 리포트 (GAS 자동화) +# 매주 금요일 18:00 실행: +# - calculateStats_() +# - 이메일 발송 +``` + +--- + +## 🔗 관련 문서 + +- `V9_HARDENING_IMPLEMENTATION_ROADMAP.md` — 전체 로드맵 +- `docs/DAILY_SIGNAL_TRACKING.md` — 일일 추적 가이드 +- `deploy.sh` — 배포 스크립트 +- `src/google_apps_script/gas_data_feed.gs` — GAS 함수 +- `src/google_apps_script/live_outcome_ledger.gs` — 신호 추적 + +--- + +**작성일**: 2026-06-25 +**최후 수정**: 2026-06-25 +**다음 체크**: 2026-07-04 (Phase 2 Week 1 마감)