Vidéo 26 • Reporting & Performance
Génération
Asynchrone
Apprenez à générer des rapports PDF massifs sans jamais ralentir votre application pour les autres utilisateurs.
Pourquoi attendre est dangereux ?
Reporting Direct
Le serveur calcule le PDF pendant que l'utilisateur attend. Le navigateur finit par faire un "Timeout".
RÉSULTAT : Serveur bloqué, application figée pour tous.
L'Attente Interminable
"En SaaS, un utilisateur ne doit jamais attendre une action qui prend plus de 2 secondes. On délègue au second plan."
Atelier : La File d'Attente de Rapports
Dashboard Utilisateur
Demander un export annuel (150 Mo)
Commande enregistrée ! Vous serez notifié par Webhook.
Charge Serveur Web
12%
File d'attente des Jobs (Cloud Database)
Aucun job en cours
Le Cycle de Vie du Job
Les 3 États Vitaux
1
PENDING : La demande est inscrite en base mais pas encore traitée.
2
PROCESSING : Le Worker asynchrone génère le PDF.
3
COMPLETED : Le fichier est prêt sur S3/Cloud Storage.
Notification push
"Votre rapport est prêt !"
Implémentation de l'Enregistrement
// 1. Côté Webdev (L'interface qui reçoit le clic) stJob est une ST_ReportJob stJob.Type = "PDF_ANNUEL" stJob.Statut = "PENDING" stJob.IDTenant = gsIDTenantActuel // 2. On écrit juste en base, on ne génère RIEN HAjoute(F_JOBS, stJob) // 3. On répond IMMÉDIATEMENT à l'utilisateur PageActualise() ToastAffiche("Génération lancée en arrière-plan...") // 4. Le Worker (programme séparé) viendra lire F_JOBS