#!/bin/bash
# Generate error summary from discovery logs

if [ -z "$1" ]; then
    DATE=$(date +%Y%m%d-%H%M%S)
else
    DATE=$1
fi

OUTPUT="docs/ORIGIN/error-logs/summary-${DATE}.md"

echo "# 📊 Rapport de Découverte d'Erreurs - Projet Veza" > $OUTPUT
echo "" >> $OUTPUT
echo "**Date de génération** : $(date '+%Y-%m-%d %H:%M:%S')" >> $OUTPUT
echo "**ID du rapport** : ${DATE}" >> $OUTPUT
echo "" >> $OUTPUT
echo "---" >> $OUTPUT
echo "" >> $OUTPUT

# ===========================================
# FONCTION DE COMPTAGE D'ERREURS
# ===========================================
count_errors() {
    local file=$1
    if [ -f "$file" ]; then
        grep -i -c "error\|failed\|fatal" "$file" 2>/dev/null || echo "0"
    else
        echo "0"
    fi
}

count_warnings() {
    local file=$1
    if [ -f "$file" ]; then
        grep -i -c "warning\|warn" "$file" 2>/dev/null || echo "0"
    else
        echo "0"
    fi
}

# ===========================================
# STATISTIQUES GLOBALES
# ===========================================
echo "## 📈 Statistiques Globales" >> $OUTPUT
echo "" >> $OUTPUT

BACKEND_BUILD_ERRORS=$(count_errors "docs/ORIGIN/error-logs/backend-build-${DATE}.log")
BACKEND_TEST_ERRORS=$(count_errors "docs/ORIGIN/error-logs/backend-tests-${DATE}.log")
BACKEND_VET_ERRORS=$(count_errors "docs/ORIGIN/error-logs/backend-vet-${DATE}.log")

FRONTEND_BUILD_ERRORS=$(count_errors "docs/ORIGIN/error-logs/frontend-build-${DATE}.log")
FRONTEND_TEST_ERRORS=$(count_errors "docs/ORIGIN/error-logs/frontend-tests-${DATE}.log")
FRONTEND_LINT_ERRORS=$(count_errors "docs/ORIGIN/error-logs/frontend-lint-${DATE}.log")
FRONTEND_TSC_ERRORS=$(count_errors "docs/ORIGIN/error-logs/frontend-tsc-${DATE}.log")

# Remove any newlines/spaces from counts
BACKEND_BUILD_ERRORS=$(echo "$BACKEND_BUILD_ERRORS" | tr -d '\n' | tr -d ' ')
BACKEND_TEST_ERRORS=$(echo "$BACKEND_TEST_ERRORS" | tr -d '\n' | tr -d ' ')
BACKEND_VET_ERRORS=$(echo "$BACKEND_VET_ERRORS" | tr -d '\n' | tr -d ' ')
FRONTEND_BUILD_ERRORS=$(echo "$FRONTEND_BUILD_ERRORS" | tr -d '\n' | tr -d ' ')
FRONTEND_TEST_ERRORS=$(echo "$FRONTEND_TEST_ERRORS" | tr -d '\n' | tr -d ' ')
FRONTEND_LINT_ERRORS=$(echo "$FRONTEND_LINT_ERRORS" | tr -d '\n' | tr -d ' ')
FRONTEND_TSC_ERRORS=$(echo "$FRONTEND_TSC_ERRORS" | tr -d '\n' | tr -d ' ')

# Default to 0 if empty
BACKEND_BUILD_ERRORS=${BACKEND_BUILD_ERRORS:-0}
BACKEND_TEST_ERRORS=${BACKEND_TEST_ERRORS:-0}
BACKEND_VET_ERRORS=${BACKEND_VET_ERRORS:-0}
FRONTEND_BUILD_ERRORS=${FRONTEND_BUILD_ERRORS:-0}
FRONTEND_TEST_ERRORS=${FRONTEND_TEST_ERRORS:-0}
FRONTEND_LINT_ERRORS=${FRONTEND_LINT_ERRORS:-0}
FRONTEND_TSC_ERRORS=${FRONTEND_TSC_ERRORS:-0}

TOTAL_ERRORS=$((BACKEND_BUILD_ERRORS + BACKEND_TEST_ERRORS + BACKEND_VET_ERRORS + FRONTEND_BUILD_ERRORS + FRONTEND_TEST_ERRORS + FRONTEND_LINT_ERRORS + FRONTEND_TSC_ERRORS))

echo "| Composant | Erreurs | Warnings | Statut |" >> $OUTPUT
echo "|-----------|---------|----------|--------|" >> $OUTPUT
echo "| **Backend Build** | ${BACKEND_BUILD_ERRORS} | - | $([ $BACKEND_BUILD_ERRORS -eq 0 ] && echo '✅' || echo '❌') |" >> $OUTPUT
echo "| **Backend Tests** | ${BACKEND_TEST_ERRORS} | - | $([ $BACKEND_TEST_ERRORS -eq 0 ] && echo '✅' || echo '❌') |" >> $OUTPUT
echo "| **Backend Vet** | ${BACKEND_VET_ERRORS} | - | $([ $BACKEND_VET_ERRORS -eq 0 ] && echo '✅' || echo '❌') |" >> $OUTPUT
echo "| **Frontend Build** | ${FRONTEND_BUILD_ERRORS} | - | $([ $FRONTEND_BUILD_ERRORS -eq 0 ] && echo '✅' || echo '❌') |" >> $OUTPUT
echo "| **Frontend Tests** | ${FRONTEND_TEST_ERRORS} | - | $([ $FRONTEND_TEST_ERRORS -eq 0 ] && echo '✅' || echo '❌') |" >> $OUTPUT
echo "| **Frontend Lint** | ${FRONTEND_LINT_ERRORS} | - | $([ $FRONTEND_LINT_ERRORS -eq 0 ] && echo '✅' || echo '❌') |" >> $OUTPUT
echo "| **Frontend TypeScript** | ${FRONTEND_TSC_ERRORS} | - | $([ $FRONTEND_TSC_ERRORS -eq 0 ] && echo '✅' || echo '❌') |" >> $OUTPUT
echo "| **TOTAL** | **${TOTAL_ERRORS}** | - | $([ $TOTAL_ERRORS -eq 0 ] && echo '✅ AUCUNE ERREUR' || echo '❌ ERREURS DÉTECTÉES') |" >> $OUTPUT
echo "" >> $OUTPUT

# ===========================================
# DÉTAILS BACKEND
# ===========================================
echo "## 📡 Backend Go - Détails" >> $OUTPUT
echo "" >> $OUTPUT

echo "### Build Errors" >> $OUTPUT
echo "" >> $OUTPUT
if [ -f "docs/ORIGIN/error-logs/backend-build-${DATE}.log" ]; then
    if [ $BACKEND_BUILD_ERRORS -eq 0 ]; then
        echo "✅ **Aucune erreur de build**" >> $OUTPUT
    else
        echo "\`\`\`" >> $OUTPUT
        head -50 "docs/ORIGIN/error-logs/backend-build-${DATE}.log" >> $OUTPUT
        echo "\`\`\`" >> $OUTPUT
    fi
else
    echo "⚠️ Fichier de log non trouvé" >> $OUTPUT
fi
echo "" >> $OUTPUT

echo "### Test Errors" >> $OUTPUT
echo "" >> $OUTPUT
if [ -f "docs/ORIGIN/error-logs/backend-tests-${DATE}.log" ]; then
    if [ $BACKEND_TEST_ERRORS -eq 0 ]; then
        echo "✅ **Tous les tests passent**" >> $OUTPUT
    else
        echo "\`\`\`" >> $OUTPUT
        grep -A 3 -i "FAIL\|error" "docs/ORIGIN/error-logs/backend-tests-${DATE}.log" | head -30 >> $OUTPUT
        echo "\`\`\`" >> $OUTPUT
    fi
else
    echo "⚠️ Fichier de log non trouvé" >> $OUTPUT
fi
echo "" >> $OUTPUT

# ===========================================
# DÉTAILS FRONTEND
# ===========================================
echo "## 🌐 Frontend React - Détails" >> $OUTPUT
echo "" >> $OUTPUT

echo "### Build Errors" >> $OUTPUT
echo "" >> $OUTPUT
if [ -f "docs/ORIGIN/error-logs/frontend-build-${DATE}.log" ]; then
    if [ $FRONTEND_BUILD_ERRORS -eq 0 ]; then
        echo "✅ **Aucune erreur de build**" >> $OUTPUT
    else
        echo "\`\`\`" >> $OUTPUT
        head -50 "docs/ORIGIN/error-logs/frontend-build-${DATE}.log" >> $OUTPUT
        echo "\`\`\`" >> $OUTPUT
    fi
else
    echo "⚠️ Fichier de log non trouvé" >> $OUTPUT
fi
echo "" >> $OUTPUT

echo "### TypeScript Errors" >> $OUTPUT
echo "" >> $OUTPUT
if [ -f "docs/ORIGIN/error-logs/frontend-tsc-${DATE}.log" ]; then
    if [ $FRONTEND_TSC_ERRORS -eq 0 ]; then
        echo "✅ **Aucune erreur TypeScript**" >> $OUTPUT
    else
        echo "\`\`\`" >> $OUTPUT
        head -50 "docs/ORIGIN/error-logs/frontend-tsc-${DATE}.log" >> $OUTPUT
        echo "\`\`\`" >> $OUTPUT
    fi
else
    echo "⚠️ Fichier de log non trouvé" >> $OUTPUT
fi
echo "" >> $OUTPUT

# ===========================================
# RECOMMANDATIONS
# ===========================================
echo "## 🎯 Recommandations" >> $OUTPUT
echo "" >> $OUTPUT

if [ $TOTAL_ERRORS -eq 0 ]; then
    echo "🎉 **Félicitations!** Aucune erreur détectée. Le projet est en excellent état." >> $OUTPUT
    echo "" >> $OUTPUT
    echo "### Prochaines étapes" >> $OUTPUT
    echo "1. ✅ Phase 0 (Error Resolution) non nécessaire" >> $OUTPUT
    echo "2. ✅ Reprendre l'implémentation à partir de T0511" >> $OUTPUT
else
    echo "⚠️ **${TOTAL_ERRORS} erreur(s) détectée(s).** Corrections nécessaires avant de continuer." >> $OUTPUT
    echo "" >> $OUTPUT
    echo "### Prochaines étapes (Ordre de priorité)" >> $OUTPUT
    echo "" >> $OUTPUT
    echo "1. 📋 **Mettre à jour ORIGIN_ERROR_REGISTRY.md**" >> $OUTPUT
    echo "   - Documenter chaque erreur identifiée" >> $OUTPUT
    echo "   - Assigner catégorie (CAT-XX) et priorité (PX)" >> $OUTPUT
    echo "   - Estimer complexité et temps" >> $OUTPUT
    echo "" >> $OUTPUT
    echo "2. 📝 **Créer les tâches TERR-XXX**" >> $OUTPUT
    echo "   - Une tâche par erreur dans ORIGIN_IMPLEMENTATION_TASKS.md" >> $OUTPUT
    echo "   - Suivre le template défini dans ORIGIN_ERROR_RESOLUTION_STRATEGY.md" >> $OUTPUT
    echo "" >> $OUTPUT
    echo "3. 🔧 **Corriger par ordre de priorité**" >> $OUTPUT
    echo "   - P0 (Critiques) en premier" >> $OUTPUT
    echo "   - Puis P1 (Hautes)" >> $OUTPUT
    echo "   - Puis P2 (Moyennes)" >> $OUTPUT
    echo "" >> $OUTPUT
    echo "4. ✅ **Valider les corrections**" >> $OUTPUT
    echo "   - Relancer ce script après chaque correction" >> $OUTPUT
    echo "   - Vérifier que le nombre d'erreurs diminue" >> $OUTPUT
    echo "" >> $OUTPUT
    echo "5. 🚀 **Reprendre T0511+ une fois TOUT corrigé**" >> $OUTPUT
fi
echo "" >> $OUTPUT

# ===========================================
# FICHIERS DE LOGS
# ===========================================
echo "## 📁 Fichiers de Logs" >> $OUTPUT
echo "" >> $OUTPUT
echo "Tous les logs détaillés sont disponibles dans:" >> $OUTPUT
echo "" >> $OUTPUT
echo "\`\`\`" >> $OUTPUT
echo "docs/ORIGIN/error-logs/" >> $OUTPUT
ls -lh docs/ORIGIN/error-logs/*${DATE}* 2>/dev/null | awk '{print "  - " $9 " (" $5 ")"}' >> $OUTPUT
echo "\`\`\`" >> $OUTPUT
echo "" >> $OUTPUT

# ===========================================
# FOOTER
# ===========================================
echo "---" >> $OUTPUT
echo "" >> $OUTPUT
echo "**Généré par** : scripts/generate-error-summary.sh" >> $OUTPUT
echo "**Référence** : ORIGIN_ERROR_RESOLUTION_STRATEGY.md" >> $OUTPUT
echo "" >> $OUTPUT

# Afficher aussi à l'écran
cat $OUTPUT

echo ""
echo "✅ Résumé généré avec succès: $OUTPUT"

