Aller au contenu

TrainHub — Runbook (service down)

Procédure d'urgence

Ce document décrit la marche à suivre si TrainHub est inaccessible ou dysfonctionnel en production.

Aide-mémoire

Élément Valeur
Repo EpitechAfrik/trainhub
Projet Vercel daily-c-language-training-platform
URL prod https://trainhub.vercel.app (défaut code — confirmer le domaine réel sur Vercel)
Base de données / Auth Projet Supabase dédié
Sandbox de code Judge0/Piston — déprécié, repris par devkora (Zeno, Edwin)
Emails Resend

Étape 1 — Diagnostic initial

curl -o /dev/null -s -w "%{http_code}\n" https://<domaine-prod>/
Résultat Signification Aller à
200 App répond, problème localisé (auth, compilation, emails...) Étape 2
5xx Erreur applicative ou build cassé Étape 3
Pas de réponse / DNS Domaine ou hébergement Vercel en cause Étape 4

Étape 2 — L'app répond mais une fonctionnalité est cassée

Connexion/authentification impossible

  1. Vérifier le statut du projet Supabase (dashboard → Project Status).
  2. Vérifier NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY sur Vercel (vercel env ls).
  3. Vérifier proxy.ts / lib/supabase/proxy.ts n'a pas régressé (rafraîchissement de session).

Compilation de code (/api/compile, Recode) ne fonctionne plus

Backend Judge0 déprécié

Vérifier d'abord si devkora (module Zeno, repris par Edwin) a déjà remplacé Judge0/Piston sur l'environnement concerné — dans ce cas, se référer à sa documentation côté Zeno plutôt qu'aux étapes ci-dessous.

Voir Diagnostics → Judge0 et Erreurs courantes → Exécution de code. Le cas le plus fréquent (ancien backend) : JUDGE0_API_URL non configuré en prod ou instance Judge0 down.

Rappels d'entraînement non envoyés

Voir Erreurs courantes → Cron — vérifier CRON_SECRET et le statut du cron sur le dashboard Vercel.

Étape 3 — Erreur 5xx / build cassé

# Historique des déploiements et statut du dernier build
vercel ls daily-c-language-training-platform
vercel inspect <deployment-url> --logs
  1. Identifier le dernier déploiement en échec et lire les logs de build.
  2. Si le build échoue sur une erreur applicative (pas TypeScript, car ignoreBuildErrors: true les laisse passer — voir overview.md), vérifier les logs runtime :
    vercel logs <deployment-url>
    
  3. Si un déploiement récent est en cause, revenir au déploiement précédent stable depuis le dashboard Vercel (Promote to Production sur le déploiement antérieur) le temps d'investiguer — action réversible mais visible en prod, à faire avec l'accord de l'équipe si possible.

Étape 4 — Domaine / hébergement inaccessible

dig <domaine-prod>
  1. Vérifier le statut de Vercel : vercel-status.com (ou équivalent).
  2. Vérifier la configuration du domaine personnalisé (si applicable) dans Project → Settings → Domains sur Vercel.
  3. Si aucun domaine personnalisé n'est configuré et que trainhub.vercel.app répond, le problème est probablement côté DNS d'un domaine personnalisé récemment ajouté/retiré.

Après résolution

  • Noter la cause réelle et la correction apportée dans troubleshooting.md pour que le prochain incident similaire se résolve plus vite.
  • Si l'incident impliquait des données étudiantes (import, reset de mot de passe en masse, etc.), vérifier qu'aucune donnée n'a été corrompue via les requêtes de diagnostics.md.