Files
QuantEngineByItz/deploy.sh
T
kjh2064 2c49f083d0 feat(deployment): Add deployment script and signal tracking system
배포 및 실전 운영 준비:

1. 배포 스크립트 (deploy.sh)
   - SSH 기반 자동 배포
   - 원격 백업 생성
   - nginx 자동 재시작
   - 헬스 체크

2. Live Outcome Ledger (live_outcome_ledger.gs)
   - addSignal_(): 신호 기록
   - updatePriceT5_(): T+5 가격 입력
   - updatePriceT20_(): T+20 가격 + outcome 자동 계산
   - calculateStats_(): 통계 계산 (win_rate, avg_margin)
   - checkCalibrationReady_(): CALIBRATED 전환 조건 확인
   - calibrateIfReady_(): 자동 전환 (30개 신호 + 60% 승률)

3. 일일 추적 가이드 (DAILY_SIGNAL_TRACKING.md)
   - 신호 발생 시 → T+5 → T+20 프로세스
   - 주간 리뷰 체크리스트
   - 마일스톤 일정 (6주)
   - CALIBRATED 전환 조건
   - honest_proof_score 개선 경로

배포 준비:
  - publish 폴더: 24MB (172개 파일)
  - appsettings.json: PostgreSQL 연결 설정됨
  - MudBlazor UI: 반응형 대시보드
  - GAS 함수: 7개 (P3~P6)

실전 운영:
  - 신호 수집 기간: 2026-06-25 ~ 2026-08-10 (6주)
  - 목표: 30개 신호 + win_rate >= 60%
  - 최종 목표: honest_proof_score 95.0 달성

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-25 17:57:50 +09:00

124 lines
3.8 KiB
Bash

#!/bin/bash
# Quant Engine Web Service Deployment Script
# 목표: publish 폴더를 웹 서버에 배포
set -e
# 설정
SOURCE_DIR="src/dotnet/QuantEngine.Web/publish"
DEPLOY_USER="kjh2064"
DEPLOY_HOST="178.104.200.7"
DEPLOY_PATH="/var/www/quant"
SSH_KEY="${HOME}/.ssh/id_ed25519"
echo "🚀 Quant Engine 웹 서비스 배포 시작"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "소스: $SOURCE_DIR"
echo "대상: $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# 1. 배포 폴더 생성/준비
echo ""
echo "📦 Step 1: 배포 폴더 준비..."
if [ ! -d "$SOURCE_DIR" ]; then
echo "❌ 오류: publish 폴더 없음. 먼저 'dotnet publish -c Release'를 실행하세요"
exit 1
fi
echo "✓ publish 폴더 크기: $(du -sh $SOURCE_DIR | cut -f1)"
echo "✓ 파일 수: $(find $SOURCE_DIR -type f | wc -l)"
# 2. SSH 연결 확인
echo ""
echo "🔐 Step 2: SSH 연결 확인..."
if [ ! -f "$SSH_KEY" ]; then
echo "❌ SSH 키 없음: $SSH_KEY"
exit 1
fi
ssh -i "$SSH_KEY" -o ConnectTimeout=10 "$DEPLOY_USER@$DEPLOY_HOST" "echo '✓ SSH 연결 성공'" || {
echo "❌ SSH 연결 실패"
exit 1
}
# 3. 원격 백업
echo ""
echo "💾 Step 3: 원격 백업 생성..."
BACKUP_DIR="/var/www/quant_backup_$(date +%Y%m%d_%H%M%S)"
ssh -i "$SSH_KEY" "$DEPLOY_USER@$DEPLOY_HOST" \
"sudo mkdir -p $DEPLOY_PATH && \
if [ -d $DEPLOY_PATH/publish ]; then \
sudo cp -r $DEPLOY_PATH/publish $BACKUP_DIR; \
echo '✓ 백업 생성: $BACKUP_DIR'; \
else \
echo '✓ 기존 배포 없음'; \
fi"
# 4. 배포
echo ""
echo "📤 Step 4: 파일 전송 중... (이 작업은 시간이 걸릴 수 있습니다)"
rsync -av -e "ssh -i $SSH_KEY" \
--delete \
"$SOURCE_DIR/" \
"$DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH/publish/" \
|| {
echo "❌ 배포 실패"
exit 1
}
echo "✓ 파일 전송 완료"
# 5. 권한 설정
echo ""
echo "🔧 Step 5: 원격 권한 설정..."
ssh -i "$SSH_KEY" "$DEPLOY_USER@$DEPLOY_HOST" \
"sudo chown -R www-data:www-data $DEPLOY_PATH/publish && \
sudo chmod -R 755 $DEPLOY_PATH/publish && \
echo '✓ 권한 설정 완료'"
# 6. 웹 서버 재시작
echo ""
echo "🔄 Step 6: 웹 서버 재시작 중..."
ssh -i "$SSH_KEY" "$DEPLOY_USER@$DEPLOY_HOST" \
"sudo systemctl restart nginx && \
sleep 2 && \
sudo systemctl status nginx | grep Active && \
echo '✓ nginx 재시작 완료'" \
|| {
echo "⚠️ nginx 재시작 실패 (수동으로 확인 필요)"
}
# 7. 배포 확인
echo ""
echo "🧪 Step 7: 배포 확인..."
sleep 2
HEALTH_URL="http://178.104.200.7/quant/"
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL" || echo "000")
if [ "$HTTP_CODE" = "200" ]; then
echo "✅ 배포 성공! URL: $HEALTH_URL"
elif [ "$HTTP_CODE" = "301" ] || [ "$HTTP_CODE" = "302" ]; then
echo "✓ 배포 완료 (리다이렉트: $HTTP_CODE)"
else
echo "⚠️ HTTP 상태: $HTTP_CODE (nginx 설정 확인 필요)"
fi
# 8. 최종 보고
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ 배포 완료!"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "📋 배포 정보:"
echo " 웹사이트: http://178.104.200.7/quant/"
echo " 배포 경로: $DEPLOY_PATH/publish"
echo " 백업 위치: $BACKUP_DIR (필요시)"
echo ""
echo "🔍 로그 확인:"
echo " ssh $DEPLOY_USER@$DEPLOY_HOST"
echo " sudo tail -f /var/log/nginx/error.log"
echo " sudo tail -f /var/log/nginx/access.log"
echo ""
exit 0