veza/scripts/generate-error-summary.sh
2025-12-03 22:56:50 +01:00

226 lines
8.9 KiB
Bash
Executable file

#!/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"