33800 Docs

← Retour

Fix Dashboard AI Jobs - Live Refresh

Date: 20/01/2026 00:05 Status: TERMINÉ

Problème

Le dashboard ai-jobs.html ne montrait pas les jobs en temps réel. Les compteurs se mettaient à jour mais pas la grille des jobs.

Cause

  1. Erreur btoa Unicode : btoa() ne supporte pas les caractères Unicode. Les jobs avec du texte français causaient l'erreur InvalidCharacterError: The string to be encoded contains characters outside of the Latin1 range

  2. Hash check bloquant : Un check de hash empêchait parfois la mise à jour de la grille

  3. Jobs zombies : Des vieux jobs restaient en status "running" dans PostgreSQL/Redis

Corrections

1. Fix encodage base64 Unicode

// Encodage (dans updateJobsGrid)
const jobB64 = btoa(unescape(encodeURIComponent(JSON.stringify(job))));

// Décodage (dans showJobDetails)
const job = JSON.parse(decodeURIComponent(escape(atob(jobB64))));

2. Suppression hash check

Le hash check a été retiré pour forcer la mise à jour de la grille à chaque poll.

3. Nettoyage jobs zombies

# PostgreSQL - Marquer les jobs running comme failed
docker exec supabase-db-prod psql -U supabase_admin -d postgres -c \
  "UPDATE ai_jobs SET status = 'failed', error_message = 'Job zombie', completed_at = NOW() WHERE status = 'running';"

# Redis - Supprimer current_tool obsolète
docker exec redis-prod redis-cli -a PASSWORD DEL 'ai:current_tool'

4. URL API HTTPS pour CORS

const API_BASE = 'https://ai-orchestrator.33800.nowhere84.com';

Tests validés

Outil Status Durée
Bark 25s
ComfyUI 95s
FaceFusion 21s
Ollama 12s
MusicGen 142s
SadTalker 69s
TripoSR 20s

7/10 outils testés via jobs - Tous fonctionnels

Fichiers modifiés

Règles pour le futur

  1. Live refresh : La page ai-jobs.html appelle l'API toutes les 5 secondes, pas besoin de régénérer le dashboard pour voir les nouveaux jobs

  2. Paramètres jobs : Chaque outil a ses propres noms de paramètres

    • SadTalker: source_image, driven_audio
    • TripoSR: image_file
    • FaceFusion: source_file, target_file
    • Bark: text, voice
    • Ollama: model, prompt
  3. Fichiers inputs : Doivent être dans /stock_8to/33800-stack/ai-data/inputs/ (pas d'URLs)

  4. Nettoyage zombies : Si des jobs restent "running" alors que rien ne tourne sur win11, les marquer failed via PostgreSQL

Problèmes rencontrés et erreurs

Erreurs de ma part

  1. Régénération inutile : J'ai passé trop de temps à régénérer le dashboard au lieu de debugger le JavaScript côté client. Le live refresh est censé fonctionner SANS régénération.

  2. Mauvais paramètres de test : J'ai soumis des jobs avec des noms de paramètres incorrects (image_url au lieu de source_image, image_path au lieu de image_file), causant des échecs qui n'étaient pas des bugs du système.

  3. Modification excessive : Au lieu de trouver la cause racine (btoa Unicode), j'ai modifié plein de trucs inutilement (hash check, template literals, etc.)

  4. Pas de vérification du déploiement : Je n'ai pas vérifié que les modifications étaient bien déployées sur O2switch avant de demander à l'utilisateur de tester.

  5. Temps perdu : ~2 heures pour un problème qui aurait dû être résolu en 15 minutes.

Leçons apprises

  1. Debugger côté client d'abord : Quand le JS ne fonctionne pas, regarder la console du navigateur AVANT de modifier le code.

  2. Vérifier le déploiement : Toujours vérifier que le fichier sur O2switch contient bien les modifications (wget -q -O - URL | grep "pattern").

  3. Ne pas régénérer pour du live : Le dashboard ai-jobs utilise le live refresh JavaScript. Les nouvelles données viennent de l'API, pas de la régénération.

  4. Tester avec les bons paramètres : Vérifier la documentation des outils avant de soumettre des jobs de test.

Commits