Réflexion — 2026-05-25
TL;DR
- Ops fluides : 5 ordres Rekki traités pour livraison 25/05 + 2 pour 26/05, trigger event-driven à 10h52 Paris (légèrement avant la fenêtre habituelle 11h00-12h00).
- daily-kpi J9 consécutif : HTML 78 KB + PDF 141 KB → James 09h08 Paris. WhatsApp bridge UP toute la journée.
- KPI title bug J7 non corrigé : affiche «2026-05-31» (fin de semaine) au lieu de «2026-05-25» (aujourd'hui). MS/CA MTD mai 30,4 % vs M-1 avril 23,4 % (+7 pp) — semaine Pentecôte creuse tire le CA vers le bas.
Timeline
| Heure Paris |
Agent |
Événement |
Résultat |
| 06:00 |
rekki-poll-today |
Y14646994 → livraison 25/05 (5e et dernier ordre) |
✅ PDF+confirm+mark |
| 09:07 |
daily-kpi-runner |
Zelty (86 KB, 176 appels) + Combo HR (46 KB) → HTML 78 KB + PDF 141 KB → James |
✅ exit=0 |
| 10:17 |
rekki-poll-today |
Z14650135 → livraison 26/05 (1er ordre demain) |
✅ PDF+confirm+mark |
| 10:52 |
rekki-poll-today |
Z14650321 → livraison 26/05 + TRIGGER event-driven recap 26/05 |
✅ trigger OK |
| 10:52 |
rekki-recap-13h |
Recap livraison 26/05 — 2 ordres (Choiseul + Bastille) |
✅ exit=0 |
| 12:00 |
zelty-watch |
Premier run — catchup 630 min gap overnight — 0 orders inspectés |
✅ normal |
| 12:00 |
combo-retard |
Premier run — catchup 605 min — 27 shifts inspectés, 0 retards |
✅ silence OK |
| 12:20 |
rekki-recap-13h |
Cron 12:20 fallback → idempotency skip (déjà envoyé à 10:52) |
✅ skip normal |
| 12:00–22:00 |
zelty-watch |
24 runs — 0 orders inspectés (délai Z-report structurel) |
✅ attendu |
| 12:00–22:00 |
combo-retard |
~72 runs — 27-28 shifts — 0 alertes retard (Pentecôte, services réduits) |
✅ silence OK |
| 21:35 |
audit-yatai-92-soir |
9 médias analysés (4 hors-scope matin, 1 OK, 3 photos soir perdues — bug bridge transient), 5+ checks manquants |
⚠️ rapport incomplet |
| 21:49 |
disputes-daily |
585 orders Uber scannés, 12 litiges résolus (25% win rate), 4 pending, 0 nouveaux disputable |
✅ exit=0 |
| 22:00 |
yatai-reflect |
Démarrage réflexion nuit J25 |
→ en cours |
KPI du jour — W22 (données partielles)
| Métrique |
W22 S (J1, partiel) |
W21 S-1 |
W22 N-1 (2025) |
| CA Net HT CDN |
— (Z-report delay) |
€7 916 |
€12 156 |
| CA Net HT FSH |
— |
€10 988 |
€16 755 |
| CA Net HT Groupe |
— |
€18 904 |
€28 911 |
| MS/CA service S |
— (CA=0) |
36,2% |
23,1% |
| Productivité mensuelle (MTD mai) |
MTD Mai 2026 |
M-1 (Avril 2026) |
N-1 (Mai 2025) |
| CA Net HT |
€78 670 (2 447 cmds) |
€102 958 (2 989 cmds) |
€104 938 (3 375 cmds) |
| Productivité groupe (€/h service) |
€47/h |
€62/h |
€55/h |
| MS/CA service |
30,4% |
23,4% |
22,6% |
Note: CA W22 = 0 attendu (lundi matin, Z-report Zelty disponible J+1). Labor CDN lun 25/05 : 27,8h · €452. Labor FSH lun 25/05 : 40,3h · €668.
Patterns détectés
⏱ Trigger Choiseul+Bastille — fenêtre élargie à 10h45–12h00 Paris (6 data points)
Historique complet :
17/05 (lun) : 11h22 · 18/05 (dim) : 11h06–11h29 · 19/05 (lun) : 11h21 · 20/05 (mer) : 11h22–11h43 · 24/05 (sam) : 11h49 · 25/05 (lun Pentecôte) : 10h52
Aujourd'hui 10h52 est le premier data point avant 11h00. Peut s'expliquer par le Lundi de Pentecôte (volume plus tôt). La fenêtre élargie est 10h45–12h00 Paris sur 6 jours de 9 (67% de couverture). Pattern stable, actionnable.
⚠️ Ce pattern a été proposé 4 fois (17, 18, 19, 20/05) et n'est toujours pas inscrit dans CLAUDE.md.
📊 Zelty watch 0 orders intra-jour (J9 consécutif)
Confirmé tous les soirs depuis le 17/05. Structurel — l'API Zelty retourne les orders uniquement après Z-report (clôture caisse, délai 12–24h). Déjà en mémoire persistante (lesson #2). Monitoring real-time des annulations structurellement impossible avec l'API actuelle.
🐍 daily-kpi Python pur stable (J9 consécutif)
9 runs consécutifs réussis (17–25/05) à 09:00 Paris, y compris pendant les 3 jours de API limit (21–23/05) où yatai-reflect était hors-service. Le script Python pur est immunisé contre les limites d'usage API Claude.
📦 rekki-recap idempotency parfaite (J9)
Trigger event-driven systématiquement suivi du cron 12:20 qui exit=0 silencieusement. La dedup fonctionne. Flag rekki-recap-triggered-YYYY-MM-DD.flag créé et respecté à chaque run.
⚖️ Disputes delivery — win rate global 25% (nouveau agent, baseline J1)
Données initiales : 12 litiges résolus, 4 pending. Uber 33,3% vs Deliveroo 16,7%. Motif dominant : ISSUE_WITH_ITEMS (12/12). Yat CDN et DonburiCDN : 0% win rate (vs Levallois 33,3%). Deliveroo refresh pas encore implémenté (deliveroo_refresh.py not yet implemented). Baseline établie — pas encore de tendance temporelle.
Anomalies
🟡 KPI title bug — J7 sans correction (2026-05-31 affiché au lieu de 2026-05-25)
Observé depuis le 18/05. Le renderer KPI affiche la fin de la semaine ISO (dimanche) au lieu de la date d'aujourd'hui dans le titre, uniquement le lundi (premier jour de semaine ISO). Fichier correctement nommé 2026-05-25.html, seul le titre HTML est faux. Déjà en mémoire persistante (lesson #3). Cela fait 7 jours que le bug est connu et non corrigé.
Hypothèse : le renderer calcule week_end = week_start + 6 days au lieu de today pour le titre.
Sévérité : cosmétique, mais nuit à la lisibilité du rapport le lundi.
🟡 MS/CA MTD mai 30,4% vs M-1 avril 23,4% (+7pp)
Dérive significative de la masse salariale. Le CA mai (€78 670 MTD sur 25 jours) projette un CA mensuel ~€94 K vs €102 958 en avril (-8,7%). Or le labor service (CDN+FSH) reste stable. La semaine Pentecôte (W21 : €18 904 vs N-1 €28 911, soit -35%) tire particulièrement le ratio vers le haut.
Contexte : W21 = semaine fériée (Ascension lun 20/05 + Pentecôte lun 25/05). CA structurellement faible. Ne pas alarmer avant la reprise post-Pentecôte.
Action : surveiller le ratio dès W23 (1er juin) pour vérifier retour à la normale.
🟡 Audit Yatai Labo 92 soir — 3 photos soir perdues (bridge transient 21h35)
Sur 9 médias analysés : 4 hors-scope (démo recette matin), 1 photo soir OK, 3 photos soir perdues en raison d'un bug transient du bridge lors du téléchargement. Le WhatsApp bridge était UP selon les healthchecks toutes les 15 min — la panne était transiente, limitée à l'instant de l'audit (~21h35). Rapport marqué INCOMPLET, envoyé à James DM.
Pattern à surveiller : si le bridge rencontre des timeouts ponctuels lors de téléchargements de médias (vs envois texte), cela pourrait indiquer une limite de bande passante ou un bug de retry du bridge.
🟢 Trigger event-driven à 10h52 Paris (8 min avant fenêtre habituelle)
Le trigger a eu lieu à 10h52 au lieu de la fenêtre habituelle 11h00-12h00. Plausible pour un Lundi de Pentecôte (personnel réduit, commandes anticipées). 6e data point. Le script de trigger fonctionne correctement — c'est le comportement humain qui a varié légèrement. Fenêtre élargie proposée : 10h45–12h00 Paris.
🟢 Recap livraison 26/05 : seulement 2 ordres au moment du trigger (10h52)
Seuls Choiseul (Z14650135) et Bastille (Z14650321) ont commandé pour le 26/05 au moment du trigger. Les autres restaurants (CDN, FSH, Montparnasse) n'avaient pas encore commandé via Rekki. Cela est normal — le trigger est déclenché par Choiseul+Bastille comme "derniers à commander". Les autres restaurants ont peut-être d'autres canaux ou commandes arrivées après le trigger.
Propositions CLAUDE.md
📌 Proposition 1 — Ajouter fenêtre trigger Choiseul+Bastille (section 4 Rekki)
Pattern confirmé sur
6 data points depuis le 17/05. Proposé mais non inscrit depuis 8 jours.
ADD to section 4 (Rekki — gotchas API) ou section 5 (Agents schedules) :
### Timing commandes Choiseul + Bastille (trigger recap)
- Fenêtre observée : **10h45–12h00 Paris** (6 data points sur 9 jours, 17–25/05)
- Data points : 17/05 11h22 · 18/05 11h06 · 19/05 11h21 · 20/05 11h22 · 24/05 11h49 · 25/05 10h52
- Lundi de Pentecôte = outlier à 10h52 (service réduit → commandes anticipées)
- Fenêtre "sûre" pour le recap event-driven : si pas de trigger avant 12h00, le cron 12:20 prend le relais
- Pattern stable, 6 data points ≥ seuil de confiance
JUSTIFICATION: pattern stable depuis 17/05, proposé 4× sans être inscrit. Utile pour
dimensionner les alertes et déboguer si le trigger ne se déclenche pas.
📌 Proposition 2 — Documenter KPI title bug (section 6 Daily KPI)
Bug connu depuis le 18/05 (mémoire persistante lesson #3), non corrigé après 7 jours.
ADD to section 6 (Daily KPI) :
### Bug titre KPI le lundi
- Le renderer affiche la **fin de semaine ISO** (dimanche) dans le titre au lieu d'aujourd'hui
- Ex : KPI du 2026-05-25 (lundi) affiche "2026-05-31" dans le <title> et h1
- Fichier nommé correctement : `kpi/2026-05-25.html` — seul le titre HTML est faux
- Root cause probable : calcul `week_end = week_start + 6 days` utilisé pour le titre
au lieu de `today`
- Fix : dans `render_kpi.py`, remplacer la variable titre par `TODAY` directement
JUSTIFICATION: bug cosmétique mais visible 1 jour sur 7 (chaque lundi). 7 jours sans fix.
📌 Proposition 3 — Documenter disputes-daily (section 5 Agents)
Nouvel agent actif depuis le 25/05, pas encore dans CLAUDE.md.
ADD to section 5 (Agents IA — schedules) :
| `disputes-daily` | ~21h30 Paris | Scan litiges Uber (585 orders/60j), stratégie auto |
ADD to section 7 (Infrastructure) ou section 8 (TODO) :
### Disputes livraison — état initial (25/05/2026)
- Win rate global : **25%** (12 résolus, 4 pending)
- Uber : 33,3% win rate (2/6 wins, €19,75 récupérés)
- Deliveroo : 16,7% win rate (1/6 wins, €0 récupérés — problème chiffrage)
- Motif dominant : ISSUE_WITH_ITEMS (100% des litiges)
- Dashboard : https://agents.yatairamen.fr/disputes/
- ⚠️ `deliveroo_refresh.py` pas encore implémenté — données Deliveroo manuelles
JUSTIFICATION: nouvel agent opérationnel, baseline à documenter pour suivi longitudinal.
Généré à