#!/bin/bash

# Script de déploiement du Panel Admin RollerLogic
# Usage: ./scripts/deploy/deploy_admin_panel.sh [version]

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"

VERSION=${1:-v1.0.0}
REGISTRY="ghcr.io/taaazzz-prog"
IMAGE_NAME="rollerlogic-admin"
FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${VERSION}"

echo "========================================="
echo "Déploiement Panel Admin RollerLogic"
echo "========================================="
echo "Version: ${VERSION}"
echo "Image: ${FULL_IMAGE}"
echo ""

# Vérifier que Docker est installé
if ! command -v docker &> /dev/null; then
    echo "❌ Docker n'est pas installé"
    exit 1
fi

# Se positionner dans le dossier admin
cd "${REPO_ROOT}/admin"

echo "📦 Étape 1/5: Build de l'image Docker..."
docker build -f Dockerfile.production -t ${FULL_IMAGE} .

echo ""
echo "🔐 Étape 2/5: Connexion au GitHub Container Registry..."
echo "Vous devez être connecté avec: docker login ghcr.io -u USERNAME"

echo ""
echo "📤 Étape 3/5: Push de l'image vers le registry..."
docker push ${FULL_IMAGE}

echo ""
echo "📋 Étape 4/5: Migration SQL (wallet_history + audit_log.installation_id)..."
echo "Exécutez manuellement sur votre base de données (une seule fois):"
echo ""
cat "${REPO_ROOT}/sql/migrations/add_wallet_history.sql"
echo ""
read -p "Appuyez sur Entrée quand la migration est appliquée..."

echo ""
echo "🚀 Étape 5/5: Déploiement sur OVH..."
echo "Connectez-vous à votre serveur OVH et exécutez:"
echo ""
echo "cd /path/to/docker/stack"
echo "docker stack deploy -c rollerlogic-stack.yml rollerlogic --with-registry-auth"
echo ""

echo "========================================="
echo "✅ Build et push terminés avec succès!"
echo "========================================="
echo ""
echo "📝 Prochaines étapes:"
echo "1. Vérifiez que le DNS sysop.rollerlogic.com pointe vers votre serveur OVH"
echo "2. Connectez-vous à votre serveur OVH"
echo "3. Déployez la stack Docker mise à jour"
echo "4. Testez l'accès à https://sysop.rollerlogic.com"
echo "5. Connectez-vous avec un compte admin"
echo ""
echo "🔒 Sécurité:"
echo "- Le panel utilise HTTPS avec Let's Encrypt"
echo "- Headers de sécurité stricts (CSP, HSTS, X-Frame-Options: DENY)"
echo "- Authentification JWT via l'API"
echo "- Tous les logs admin sont enregistrés"
echo ""
echo "📊 Monitoring:"
echo "- Healthcheck: https://sysop.rollerlogic.com/health"
echo "- Logs Docker: docker service logs rollerlogic_rollerlogic-admin"
echo ""
