Ingestion planifiée
Ingestion planifiée
Dernière mise à jour : 2026-05-10
Pourquoi
- Lancer une grosse ingestion la nuit pour ne pas bouffer ton quota Claude pendant la journée
- Étaler 3 jeux à ingérer sans tous les lancer en parallèle
- Programmer une ingestion d'extension pour quand le jeu de base sera lui-même fini
Comment
Dans le wizard /add-game étape 2, coche "Démarrer plus tard" et choisis une date/heure.
Contraintes : doit être dans le futur, max +7 jours.
Que se passe-t-il en interne
- Le PDF est uploadé sur disque immédiatement (
/app/pdfs/...) - La ligne
gamesest créée avecingestStatus='scheduled'+ingestScheduledAt - Un
setTimeoutest armé danssrc/cron/ingest-scheduler.tspour déclencherstartIngestJob(gameId)à l'heure prévue - Le PDF n'est PAS analysé tant que l'heure n'est pas atteinte
Si tu redémarres le container avant l'heure
Au boot, restoreScheduledOnBoot() relit la BDD et re-programme tous les timers en attente. Si une date est déjà passée pendant le redémarrage, le job démarre immédiatement avec une grace de 1 seconde.
Annuler une ingestion planifiée
DELETE /api/games/:id/scheduled (via /admin → Games → bouton Annuler) :
- Clear le timer
- Supprime le PDF du disque
- Supprime la ligne SQLite
Renvoie 409 si le jeu est déjà passé en running ou done.
Distinction reprise après quota
Le même mécanisme (scheduleIngestStart) est réutilisé pour la pause auto en cas de quota Claude. Côté UI, le motif est différencié (reason: 'quota' vs 'user') pour afficher la bonne copie. Pour l'utilisateur c'est transparent : laisse tourner, ça reprendra tout seul.
No comments to display
No comments to display