Réflexion — 2026-05-24
TL;DR
- Ops fluides : 4 ordres Rekki traités pour livraison dimanche 25/05 (Lundi de Pentecôte), trigger event-driven à 11h49 Paris, recap envoyé, daily-kpi OK.
- Reflect manquant 3 jours (21–23/05) : org API usage limit atteinte — aucun rapport de réflexion généré pendant 3 nuits consécutives. Reprise ce soir.
- CA hebdomadaire –31% WoW : semaine Pentecôte creuse (€18 193 vs €26 423 S-1). Vendredi 22/05 CDN : MS/CA 95.1% — quasi-perte journalière.
Timeline du jour
| Heure Paris |
Agent |
Événement |
Résultat |
| 06:00 |
rekki-poll-today |
V14645478, U14646270, Y14646293 → livraison 25/05 |
✅ PDF+confirm+mark |
| 07:00 |
daily-kpi-runner |
Fetch Zelty (84 KB) + Combo HR (45 KB) |
✅ démarré |
| 09:07 |
daily-kpi-runner |
HTML 78 511 B écrit + PDF 142 KB généré + envoyé James |
✅ exit=0 |
| 11:49 |
rekki-poll-today |
U14646806 → livraison 25/05 (4e ordre du jour) |
✅ PDF+confirm+mark |
| 11:49 |
rekki-poll-today |
TRIGGER event-driven recap — Choiseul + Bastille ont commandé pour 25/05 |
✅ trigger systemctl |
| 11:49 |
rekki-recap-13h |
Recap livraison 25/05 (pure Python) |
✅ exit=0 |
| 12:10 |
combo-retard |
1 retard détecté (ab2c6736 · CDN, 10:10 Paris) |
✅ alerte envoyée |
| 12:20 |
rekki-recap-13h |
Cron 12:20 fallback → idempotency silent skip |
✅ exit=0 |
| 18h30–22h00 |
zelty-watch |
10 runs · 0 orders inspectés (API Z-report delay structurel) |
✅ normal |
| 20h50–22h00 |
combo-retard |
14 runs · 23 shifts · 0 nouveaux retards |
✅ silence OK |
| 22:00 |
yatai-reflect |
Réflexion nuit — reprise après 3 jours API limit |
✅ en cours |
Patterns détectés
⏱ Trigger Choiseul+Bastille 11h00–12h00 Paris (J5+ stable)
Confirmé le 24/05 (samedi) à 11h49 Paris. Données accumulées :
- 17/05 (lun) : 11h22 · 18/05 (dim) : 11h06–11h29 · 19/05 (lun) : 11h21
- 20/05 (mer) : 11h22–11h43 · 24/05 (sam) : 11h49
Fenêtre stable :
11h00–12h00 Paris, y compris samedis et dimanches. 5 data points sur 8 jours.
Ce pattern n'est pas encore inscrit dans CLAUDE.md malgré les propositions répétées (17, 18, 19, 20/05).
📊 Zelty watch 0 orders intra-jour (J8 consécutif)
Confirmé tous les soirs depuis le 17/05. Structurel — l'API Zelty ne retourne les orders qu'après Z-report (clôture journée).
Déjà en mémoire persistante (lesson #2). Le monitoring real-time des annulations est structurellement impossible avec l'API actuelle.
🐍 daily-kpi Python pur stable (J8)
8 runs consécutifs réussis (17–24/05) à 09:00 Paris, y compris pendant les 3 jours de API limit (21–23/05).
Contrairement à yatai-reflect (Claude), daily-kpi est maintenant un script Python pur qui n'est pas affecté par les limites d'usage API.
📦 rekki-recap idempotency parfaite (J8)
Le trigger event-driven (11h49 aujourd'hui) est systématiquement suivi d'un cron 12:20 qui exit=0 silencieusement.
La dedup fonctionne. Le flag rekki-recap-triggered-YYYY-MM-DD.flag est créé et respecté.
🔋 Récupération post-limit API (nouveau)
Après 3 jours de You've hit your org's monthly usage limit (21–23/05), yatai-reflect est de nouveau opérationnel le 24/05.
La limite semble avoir été réinitialisée ou augmentée. Aucune action visible de l'utilisateur dans les logs.
Seuls les agents Claude (yatai-reflect) ont été affectés — les agents Python pur ont continué normalement.
Anomalies
🔴 Org API usage limit — 3 nuits sans réflexion (21–23/05)
Période : 2026-05-21 22:00 → 2026-05-23 22:00 (3 nuits consécutives)
Symptôme : You've hit your org's monthly usage limit · exit=1 en ~6s
Impact : 0 rapport HTML généré pour 21, 22, 23/05. Aucune détection de patterns/anomalies pendant cette période.
Les agents Python pur (daily-kpi, zelty-watch, combo-retard, rekki-polls) ont continué sans interruption.
Cause probable : forte utilisation Claude API en mai (refactors, debug sessions, agents). Limite mensuelle atteinte le 21/05 soir.
Résolu : le 24/05 — probablement reset automatique de la fenêtre ou augmentation manuelle de la limite.
🔴 3 ordres Rekki jamais livrés au Labo — 2026-05-21 matin
Ordres : X14624178, U14625033, X14625186
Période échec : 04:00 → 08:38 UTC le 21/05 (4h38 de WHATSAPP_FAIL répétés toutes les 34s)
Cause : WhatsApp bridge DOWN à 04:00 UTC (6h Paris) — même bridge qui était DOWN le 20/05 à 22:00
Impact : Ces 3 ordres sont absents de rekki-poll-processed.txt → PDFs non envoyés au groupe Labo 92, non confirmés ni marqués dans Rekki.
Status : Historique (livraisons probablement 22/05) — dommage fait. V14626408 a réussi à 08:39 quand le bridge est revenu.
Risque structurel : si le bridge tombe à 04:00 pendant un poll, les ordres sont bloqués sans mécanisme de reprise automatique.
🟡 CA hebdomadaire –31% WoW — effet Pentecôte
S (W21 partiel) : €18 193 · S-1 (W20) : €26 423 · vs N-1 : €33 402 (–45.5%)
Vendredi 22/05 CDN : 24 cmdes · €521 CA · MS/CA 95.1% → quasi-perte (€496 labor pour €521 CA)
Cause : Dimanche de Pentecôte = 25/05 (demain). Week-end long → Parisiens partis.
À surveiller : rebond attendu semaine S+1 (W22, 26–31 mai).
🟡 Lundi de Pentecôte 25/05 — jour férié
Demain = Lundi de Pentecôte. 4 ordres Rekki déjà traités pour livraison 25/05 (V14645478, U14646270, Y14646293, U14646806 — probablement Choiseul + Bastille + autres).
CDN et FSH sont fermés le dimanche (pas de service). Les 4 ordres sont pour les franchises (Choiseul 2e, Bastille 11e, Montparnasse).
Impact RH : Combo HR devrait montrer shifts réduits lundi. MS/CA difficile à interpréter sur les jours fériés.
🟢 Bug titre KPI renderer — non résolu (J7)
Le titre du rapport KPI affiche 2026-05-24 (dimanche fin de semaine ISO W21) au lieu de la date réelle du rapport.
Première détection : 18/05. Rappelé chaque nuit dans le reflect. Aucun fix appliqué en 7 jours.
Le fichier HTML est correctement nommé — seul le <title> et le <h1> sont erronés.
Propositions CLAUDE.md
PROPOSITION 1 — Section 1 (Business context) : Timing commandes Choiseul+Bastille
Cible : Section 1, sous "Trigger event-driven du recap"
Texte à ajouter :
### Timing commandes Choiseul+Bastille (observé depuis 17/05/2026)
- Choiseul 2e et Bastille 11e commandent typiquement entre **11h00 et 12h00 Paris**,
y compris les samedis et dimanches.
- Pattern stable sur 5+ data points (17, 18, 19, 20, 24/05).
- Trigger event-driven systématiquement déclenché 55–65 min avant le cron 12:20.
- Implication : le cron 12:20 est un pur fallback de sécurité, rarement activé.
Justification : 5 data points sur 8 jours, y compris week-end. Pattern fiable pour optimisation future.
PROPOSITION 2 — Section 8 (TODO) : Reprise auto des ordres Rekki après bridge DOWN
Cible : Section 8 "Open issues / TODO"
Texte à ajouter :
- [ ] **Mécanisme de reprise Rekki après bridge DOWN** : si WhatsApp bridge est DOWN
à 04:00 UTC lors du poll, les ordres X14624178/U14625033/X14625186 (21/05) n'ont pas été
envoyés ni confirmés (4h38 de failures sans recovery). Ajouter une liste d'ordres "pending"
dans le state, relancés automatiquement quand le bridge revient UP (via health check).
Justification : 3 ordres perdus le 21/05 à cause de 4h38 de bridge DOWN sans recovery automatique.
PROPOSITION 3 — Section 8 (TODO) : Monitoring org API usage limit
Cible : Section 8 "Open issues / TODO"
Texte à ajouter :
- [ ] **Monitoring org API usage limit** : yatai-reflect a été DOWN 3 nuits consécutives
(21–23/05) suite à la limite mensuelle atteinte. Ajouter une vérification périodique
de l'usage API (via tableau de bord Anthropic ou alerte email) pour anticiper avant
atteinte de la limite. Envisager migrer les agents non-critiques vers des scripts Python
purs pour réduire la consommation (daily-kpi déjà migré, rekki-recap-13h candidat).
Justification : 3 jours aveugles = anomalies non détectées. La migration Python réduit la consommation.
PROPOSITION 4 — Section 3 (Zelty gotchas) : Bug titre KPI renderer
Cible : Section 8 "Open issues / TODO"
Texte à ajouter :
- [ ] **Bug titre KPI renderer** : render_kpi.py affiche la date dimanche fin de semaine ISO
(ex: "2026-05-24" pour W21) au lieu de la date du jour passée en paramètre. Detecté
depuis le 18/05. Le fichier HTML est correctement nommé — seul le titre est faux.
Priorité basse mais confusant pour l'historique. Fix : passer TODAY explicitement
comme variable au renderer et l'utiliser dans le <title> et <h1>.
Justification : Bug non corrigé après 7 jours malgré 4 signalements dans les reflections.