#!/bin/bash

# Script de vérification de l'installation RPA Vision V2

echo "╔═══════════════════════════════════════════════════════════╗"
echo "║                                                           ║"
echo "║     🔍 VÉRIFICATION INSTALLATION - RPA VISION V2         ║"
echo "║                                                           ║"
echo "╚═══════════════════════════════════════════════════════════╝"
echo ""

# Compteurs
CHECKS_PASSED=0
CHECKS_FAILED=0
WARNINGS=0

# Fonction pour afficher un résultat
check_result() {
    if [ $1 -eq 0 ]; then
        echo "  ✅ $2"
        ((CHECKS_PASSED++))
    else
        echo "  ❌ $2"
        ((CHECKS_FAILED++))
    fi
}

warning_result() {
    echo "  ⚠️  $1"
    ((WARNINGS++))
}

# 1. Vérifier la structure des répertoires
echo "1️⃣  Vérification de la structure..."
check_result $([ -d "geniusia2" ] && echo 0 || echo 1) "Répertoire geniusia2/"
check_result $([ -d "geniusia2/core" ] && echo 0 || echo 1) "Répertoire geniusia2/core/"
check_result $([ -d "geniusia2/gui" ] && echo 0 || echo 1) "Répertoire geniusia2/gui/"
check_result $([ -d "geniusia2/data" ] && echo 0 || echo 1) "Répertoire geniusia2/data/"
echo ""

# 2. Vérifier les scripts de lancement
echo "2️⃣  Vérification des scripts de lancement..."
check_result $([ -f "LANCER_APPLICATION.sh" ] && echo 0 || echo 1) "LANCER_APPLICATION.sh existe"
check_result $([ -x "LANCER_APPLICATION.sh" ] && echo 0 || echo 1) "LANCER_APPLICATION.sh est exécutable"
check_result $([ -f "geniusia2/run.sh" ] && echo 0 || echo 1) "geniusia2/run.sh existe"
check_result $([ -f "geniusia2/setup.sh" ] && echo 0 || echo 1) "geniusia2/setup.sh existe"
echo ""

# 3. Vérifier la documentation
echo "3️⃣  Vérification de la documentation..."
check_result $([ -f "README.md" ] && echo 0 || echo 1) "README.md"
check_result $([ -f "DEMARRAGE_RAPIDE.md" ] && echo 0 || echo 1) "DEMARRAGE_RAPIDE.md"
check_result $([ -f "COMMENT_LANCER.md" ] && echo 0 || echo 1) "COMMENT_LANCER.md"
check_result $([ -f "INDEX_DOCUMENTATION.md" ] && echo 0 || echo 1) "INDEX_DOCUMENTATION.md"
check_result $([ -f "geniusia2/README.md" ] && echo 0 || echo 1) "geniusia2/README.md"
echo ""

# 4. Vérifier l'environnement virtuel
echo "4️⃣  Vérification de l'environnement virtuel..."
if [ -d "geniusia2/venv" ]; then
    check_result 0 "Environnement virtuel existe"
    
    if [ -f "geniusia2/venv/bin/python3" ]; then
        check_result 0 "Python3 dans venv"
        
        # Vérifier la version de Python
        PYTHON_VERSION=$(geniusia2/venv/bin/python3 --version 2>&1 | cut -d' ' -f2)
        echo "     Version Python: $PYTHON_VERSION"
    else
        check_result 1 "Python3 dans venv"
    fi
else
    check_result 1 "Environnement virtuel existe"
    warning_result "Exécutez 'cd geniusia2 && ./setup.sh' pour installer"
fi
echo ""

# 5. Vérifier les dépendances clés
echo "5️⃣  Vérification des dépendances Python..."
if [ -f "geniusia2/venv/bin/python3" ]; then
    # PyTorch
    if geniusia2/venv/bin/python3 -c "import torch" 2>/dev/null; then
        check_result 0 "PyTorch installé"
    else
        check_result 1 "PyTorch installé"
    fi
    
    # PyQt5
    if geniusia2/venv/bin/python3 -c "import PyQt5" 2>/dev/null; then
        check_result 0 "PyQt5 installé"
    else
        check_result 1 "PyQt5 installé"
    fi
    
    # Transformers
    if geniusia2/venv/bin/python3 -c "import transformers" 2>/dev/null; then
        check_result 0 "Transformers installé"
    else
        check_result 1 "Transformers installé"
    fi
    
    # FAISS
    if geniusia2/venv/bin/python3 -c "import faiss" 2>/dev/null; then
        check_result 0 "FAISS installé"
    else
        check_result 1 "FAISS installé"
    fi
else
    warning_result "Impossible de vérifier les dépendances (venv non trouvé)"
fi
echo ""

# 6. Vérifier Ollama
echo "6️⃣  Vérification d'Ollama..."
if command -v ollama &> /dev/null; then
    check_result 0 "Ollama installé"
    
    # Vérifier si Ollama est en cours d'exécution
    if ollama list &> /dev/null; then
        check_result 0 "Ollama en cours d'exécution"
        
        # Vérifier le modèle Qwen
        if ollama list | grep -q "qwen2.5-vl"; then
            check_result 0 "Modèle Qwen 2.5-VL téléchargé"
        else
            check_result 1 "Modèle Qwen 2.5-VL téléchargé"
            warning_result "Exécutez 'ollama pull qwen2.5-vl:3b' pour télécharger"
        fi
    else
        check_result 1 "Ollama en cours d'exécution"
        warning_result "Démarrez Ollama avec 'ollama serve'"
    fi
else
    check_result 1 "Ollama installé"
    warning_result "Installez Ollama: curl -fsSL https://ollama.com/install.sh | sh"
fi
echo ""

# 7. Vérifier les fichiers de configuration
echo "7️⃣  Vérification de la configuration..."
check_result $([ -f "geniusia2/core/config.py" ] && echo 0 || echo 1) "config.py"
check_result $([ -f "geniusia2/requirements.txt" ] && echo 0 || echo 1) "requirements.txt"
check_result $([ -f "geniusia2/main.py" ] && echo 0 || echo 1) "main.py"
echo ""

# 8. Vérifier les répertoires de données
echo "8️⃣  Vérification des répertoires de données..."
check_result $([ -d "geniusia2/data/user_profiles" ] && echo 0 || echo 1) "data/user_profiles/"
check_result $([ -d "geniusia2/data/logs" ] && echo 0 || echo 1) "data/logs/"
check_result $([ -d "geniusia2/data/faiss_index" ] && echo 0 || echo 1) "data/faiss_index/"
echo ""

# Résumé
echo "╔═══════════════════════════════════════════════════════════╗"
echo "║                      RÉSUMÉ                               ║"
echo "╚═══════════════════════════════════════════════════════════╝"
echo ""
echo "  ✅ Vérifications réussies : $CHECKS_PASSED"
echo "  ❌ Vérifications échouées : $CHECKS_FAILED"
echo "  ⚠️  Avertissements        : $WARNINGS"
echo ""

if [ $CHECKS_FAILED -eq 0 ] && [ $WARNINGS -eq 0 ]; then
    echo "╔═══════════════════════════════════════════════════════════╗"
    echo "║                                                           ║"
    echo "║     ✅ INSTALLATION COMPLÈTE ET FONCTIONNELLE !          ║"
    echo "║                                                           ║"
    echo "║     Vous pouvez lancer l'application avec :              ║"
    echo "║     ./LANCER_APPLICATION.sh                               ║"
    echo "║                                                           ║"
    echo "╚═══════════════════════════════════════════════════════════╝"
    exit 0
elif [ $CHECKS_FAILED -eq 0 ]; then
    echo "╔═══════════════════════════════════════════════════════════╗"
    echo "║                                                           ║"
    echo "║     ⚠️  INSTALLATION COMPLÈTE AVEC AVERTISSEMENTS        ║"
    echo "║                                                           ║"
    echo "║     Consultez les avertissements ci-dessus               ║"
    echo "║                                                           ║"
    echo "╚═══════════════════════════════════════════════════════════╝"
    exit 0
else
    echo "╔═══════════════════════════════════════════════════════════╗"
    echo "║                                                           ║"
    echo "║     ❌ INSTALLATION INCOMPLÈTE                           ║"
    echo "║                                                           ║"
    echo "║     Exécutez les commandes suivantes :                   ║"
    echo "║     1. cd geniusia2                                       ║"
    echo "║     2. ./setup.sh                                         ║"
    echo "║                                                           ║"
    echo "╚═══════════════════════════════════════════════════════════╝"
    exit 1
fi
