#!/bin/bash
# GUARDiA ITSM 자동 배포 스크립트 (Deploy Webhook / CI 트리거 시 실행)
# 경로: /opt/guardia/app/deploy/guardia_deploy.sh

set -euo pipefail
LOG=/opt/guardia/logs/deploy.log
APP=/opt/guardia/app
REPO=http://zio:Zio%40Admin2026%21@localhost:3000/zio/guardia-itsm.git
SRC=/opt/guardia/src

echo "[$(date '+%Y-%m-%d %H:%M:%S')] === GUARDiA 배포 시작 ===" >> $LOG

# 1. 소스 갱신
if [ ! -d "$SRC/.git" ]; then
    echo "[$(date)] git clone..." >> $LOG
    git clone $REPO $SRC
else
    echo "[$(date)] git pull..." >> $LOG
    cd $SRC && git pull origin main
fi
echo "[$(date)] 소스 갱신 완료" >> $LOG

# 2. 새 파일 복사 (test_, __pycache__ 제외)
rsync -av --exclude="__pycache__" --exclude="test_*.py" \
    --exclude="*.db" --exclude="*.bak" --exclude=".git" \
    $SRC/ $APP/ >> $LOG 2>&1
echo "[$(date)] 파일 복사 완료" >> $LOG

# 3. 패키지 업데이트
if [ -f "$SRC/requirements.txt" ]; then
    /opt/guardia/venv/bin/pip install -r $SRC/requirements.txt -q >> $LOG 2>&1
    echo "[$(date)] 패키지 업데이트 완료" >> $LOG
fi

# 4. 서비스 재시작
systemctl restart guardia
sleep 5

# 5. 헬스체크
HTTP=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8001/docs 2>/dev/null)
if [ "$HTTP" = "200" ]; then
    echo "[$(date)] 배포 성공 (HTTP $HTTP)" >> $LOG
else
    echo "[$(date)] 배포 실패 (HTTP $HTTP)" >> $LOG
    exit 1
fi

echo "[$(date)] === GUARDiA 배포 완료 ===" >> $LOG
