États & événements SSE
Payloads exacts pour chaque état de job et chaque événement émis sur le flux SSE.
Le contrat pour toute intégration contre le flux job — bots, dashboards, alerting, assistants IA.
États — énumération complète
| Valeur | Terminal | Fichiers résultats dispo | Reprenable |
|---|---|---|---|
pending |
non | non | s/o |
running |
non | non | s/o |
done |
oui | oui (7 jours) | oui |
failed |
oui | partiels | oui |
cancelled |
oui | partiels | oui |
expired |
oui | non (purgés) | non |
Un job pending ou running ne peut être supprimé, seulement annulé.
Flux SSE
GET /api/jobs/{id}/stream
Accept: text/event-stream
SSE standard ; chaque événement :
event: <name>
data: <json-payload>
Événement status
Toutes les 2 secondes tant que non-terminal, plus une fois à l'état terminal.
{
"id": "j_abc123",
"status": "running",
"processed_points": 412,
"grid_points_count": 1280,
"results_count": 387,
"error_count": 2,
"download_available": false,
"query_stats": {
"bakery": { "found_pct": 92 },
"dentist": { "found_pct": 78 }
}
}
| Champ | Type | Description |
|---|---|---|
id |
string | Id du job |
status |
enum | Voir tableau ci-dessus |
processed_points |
int | Items traités |
grid_points_count |
int | Items planifiés |
results_count |
int | Lignes de résultats à ce stade |
error_count |
int | Items en échec (le job peut quand même atteindre done) |
download_available |
bool | true une fois le fichier prêt |
query_stats |
object | Stats par requête ; dépend du module |
Événement log
Émis au fil des nouvelles lignes de log (par lots, sondage interne 0,5 s).
{
"message": "Picked up 12 POIs in Lyon centre",
"level": "info",
"timestamp": "2026-05-27T14:21:08Z"
}
level ∈ debug · info · warn · error.
Événement done
Émis une fois, puis le flux se ferme. Même événement pour failed et cancelled — vérifier status.
{
"id": "j_abc123",
"status": "done",
"results_count": 1820,
"duration_seconds": 1342
}
Événement error
Erreurs au niveau du flux (auth, not-found). Différent d'un job terminé en failed (qui arrive via done avec status: "failed").
{ "code": "forbidden", "message": "Not your job" }
Intervalles de sondage (sans SSE)
| Endpoint | Intervalle minimum |
|---|---|
/api/jobs/{id} |
2 secondes |
/api/jobs |
5 secondes |
L'état interne se rafraîchit toutes les 2 s ; sonder plus vite n'apporte rien.
Timeouts
| Élément | Valeur |
|---|---|
| Durée max d'un flux SSE | 6 heures |
| Timeout global d'un job | 6 heures |
| Fenêtre de reconnexion worker idle | 30 secondes |
Rétention fichiers résultats après done |
7 jours |