Yatai Réflexion — 2026-05-27

Mercredi W22 · 2026  ·  ← index  ·  KPI du jour

TL;DR

Timeline

Heure (Paris)AgentÉvénementRésultat
06:01 (J-1)rekki-poll-today3 ordres batch livraison 27/05 (W14656923, W14656987, Z14657012)✅ PDF+confirm+mark
07:00–07:08daily-kpi-runnerZelty 91 919B · labor 49 118B · HTML 78 208B · PDF 141 693B✅ PDF envoyé James
09:28 (J-1)rekki-poll-todayY14659656 + Z14659709 pour livraison 27/05 (lot après-midi)✅ tout OK
09:36 (J-1)rekki-poll-todayTrigger recap 27/05 — Choiseul + Bastille ont commandé✅ recap envoyé
10:00zelty-watch1er run, catchup 630 min — 0 orders inspected (restaurants fermés)✅ silence correct
10:00combo-retard1er run, catchup 605 min — 26 shifts inspectés, 0 alertes retard
10:20rekki-recap-13hCron pour 27/05 — flag déjà présent (idempotent skip)
10:49rekki-poll-todayY14667764 + X14667780 pour livraison 28/05✅ PDF+confirm+mark
11:12rekki-poll-todayY14667899 pour livraison 28/05 → trigger recap 28/05✅ recap généré
12:20rekki-recap-13hCron fallback 28/05 — flag présent depuis 11:12, skip idempotent
10:00–22:00zelty-watch25 runs, 0 events, 0 orders inspected — api_fail_streak=0🔍 fermeture confirmée
10:00–22:00combo-retard140+ runs, 27 shifts inspectés, 0 alertes retard
17:45–20:00whatsapp-bridge10 health checks UP consécutifs
22:00yatai-reflectRun nightly réflexion✅ ce rapport

Patterns détectés

1 — Trigger recap Rekki : 8e data point, fenêtre 10h52–11h49 stable
Depuis le 18/05 (10 jours), le trigger event-driven Choiseul+Bastille se déclenche systématiquement entre 10h52 et 11h49 Paris. Aujourd'hui : 11h12. Médiane : ~11h26.
Data points : 18/05 11:29 · 19/05 11:21 · 21/05 11:26 · 22/05 11:37 · 24/05 11:49 · 25/05 10:52 · 26/05 11:36 · 27/05 11:12.
Fenêtre documentée dans CLAUDE.md (10h45–12h00) confirmée. Aucune exception depuis l'implémentation.
2 — Daily KPI pipeline : J11 sans erreur, timing constant ~7 min
Le daily-kpi-runner tourne à 09:00 Paris et se termine invariablement ~7 min plus tard. 11 jours consécutifs sans erreur depuis le refactor du 17/05. HTML stable ~78 000B, PDF ~140 000B. Les 15 MCPs sont tous OK (mcps_state.json : 15/15 ok, refreshed à 21:53).
3 — Zelty-watch "0 orders" = fermeture, pas panne (2e observation)
Zelty-watch a montré "0 orders inspected" toute la journée du 21/05 (jeudi sans service) ET du 27/05 (mercredi sans service). Dans les deux cas api_fail_streak = 0 → pas de panne API. Ce signal est le comportement attendu quand les restaurants n'ont pas de service actif. À documenter pour éviter de fausses alarmes lors de prochaines fermetures.
4 — Rekki recap idempotence : 100% fiable J10
Aucun doublon recap depuis le 17/05. Le double-trigger (event-driven + cron 12:20) produit systématiquement 1 seul recap par delivery date grâce au marker file. Aujourd'hui : 2 runs pour 28/05, 1 seul recap envoyé. Idem pour 27/05.
5 — Combo-retard 0 alertes : cohérent semaine creuse
Pas d'alertes retard depuis le 24/05. Le fichier alerted pour 27/05 est vide. Cohérent avec un mercredi sans ouverture service salle CDN+FSH. Les 27 shifts inspectés correspondent probablement au Labo central et/ou aux franchises.

Anomalies

🟡 MEDIUM — FSH absent du KPI mardi 26/05 (45h labor, €0 CA)
Le KPI généré mercredi 07:00 montre FSH "fermé / pas de service" pour mardi 26/05, mais Combo HR a 45.1h pointées (€708.93 coût employeur). Hypothèse la plus probable : délai Zelty — données soir mardi non ingérées avant le Z-report (12-24h de délai documenté). FSH mardi devrait apparaître dans le KPI du 28/05 matin. Si toujours absent → FSH était fermé mardi.
🟡 MEDIUM — Semaine W22 : MS/CA CDN 169.7%, FSH 359% (ratios non représentatifs)
Le KPI W22 affiche des ratios MS/CA alarmants : calcul sur 2j de CA CDN et 1j de CA FSH mais une semaine quasi-complète de labor. CA groupe S partiel : €2 360 vs S-1 €20 816 (−88.7%). Semaine après Pentecôte (lundi 25 = JF) structurellement creuse. Les ratios ne sont pas représentatifs jusqu'à la clôture de semaine. Pas d'action requise.
🟢 INFO — KPI title bug render_kpi.py : J11 sans fix (depuis 18/05)
Le bug d'affichage du titre (date de fin de semaine au lieu de TODAY) est proposé pour fix depuis le 18/05, J11 sans correction code. Fix trivial : 1 ligne dans ~/yatai/scripts/render_kpi.py. Impact uniquement cosmétique, visible surtout le lundi.
🟢 INFO — Seulement 3 ordres pour livraison 28/05 (vs 5 le 27/05)
Volume réduit cohérent avec un service éventuellement réduit jeudi. Trigger event-driven bien déclenché (Choiseul+Bastille ont commandé) → les franchises sont dans la boucle. Pas de commandes manquantes détectées.

Propositions CLAUDE.md

Proposition 1 — Documenter le signal "zelty 0 orders = fermeture normale"
Section cible : Section 3 (Zelty gotchas) → nouveau bloc
Justification : 2 data points concrets (21/05, 27/05), api_fail_streak=0 dans les deux cas.
### Zelty-watch 0 orders = fermeture confirmée (signal attendu)
- Si zelty-watch log "0 orders inspected" toute la journée ET api_fail_streak = 0
  → restaurants fermés ce jour (pas de service actif), pas une panne
- Distinguer : api_fail_streak >= 2 = vraie panne API, alerte WhatsApp envoyée
- Observé : jeudi 21/05, mercredi 27/05 (jours sans service CDN+FSH)
Proposition 2 — Fix code KPI title bug (action J11)
Section cible : Action directe code (pas CLAUDE.md)
Justification : 11 jours de rappels, fix trivial 1 ligne.
grep -n "week_end\|date_fin\|end_of_week" ~/yatai/scripts/render_kpi.py
# puis remplacer la ligne titre par :
# title = "KPI Yatai — " + today.strftime("%Y-%m-%d")