Skip to content

✨ feat(admin): charge serveur et imports Takeout différés, historique du dispatch (#528) - #603

Merged
ronan-develop merged 8 commits into
mainfrom
feat/528-admin-charge-takeout
Oct 2, 2026
Merged

ronan-develop merged 8 commits into
mainfrom
feat/528-admin-charge-takeout

Conversation

@ronan-develop

Copy link
Copy Markdown
Owner

Closes #528

Pourquoi

Aucune visibilité admin sur la charge serveur ni sur les imports Takeout différés (#522/#524), et aucun historique du dispatch : le 0 % de succès de #543 n'a été détecté qu'après coup. La table d'historique sert aussi d'échantillonnage de charge pour #547.

Changements

  • ServerLoadChecker : getLoadAverage(), getThreshold(), isCalm(?array) (une seule mesure par cycle, issue et charge loguées toujours cohérentes).
  • Table takeout_dispatch_log (TakeoutDispatchLog) : app:takeout:nightly-dispatch écrit une ligne par cycle de 15 min (dispatched / deferred / idle, load 1/5/15, seuil, nb en attente / dispatchés) puis purge au-delà de 30 jours (un seul DELETE indexé, aucun nouveau cron). Les cycles idle sont tracés exprès. Écriture et purge n'interrompent jamais le dispatch (erreur journalisée seulement).
  • TakeoutImport::scheduledAt posée par markScheduled() : « en attente depuis » ; repli signalé sur createdAt pour les imports déjà planifiés avant la colonne.
  • Page /admin/takeout-load (whitelist AdminVoter, lien « Charge Takeout ») : load courant vs seuil, imports scheduled (propriétaire, depuis quand), 50 derniers cycles, part de cycles calmes sur 24 h. Dates en Europe/Paris.

Migrations (2, additives)

CREATE TABLE takeout_dispatch_log et ALTER TABLE takeout_imports ADD scheduled_at DATETIME DEFAULT NULL. make:migration avait généré en plus des DROP parasites issus de la base de dev locale (broadcast_messages, users.last_broadcast_seen_at) et un CHANGE sur takeout_imports : retirés à la main (cf. #571). Rien de destructif ne part en prod.

Tests

  • Suite PHP : 1410 verts. Tests bash : 28 verts.
  • Couverture : accès anonyme (redirigé), non-whitelist (403), état vide, import en attente affiché, repli createdAt, imports non planifiés ignorés, historique + taux 24 h, lien de navigation ; une ligne d'historique par issue, purge à 30 jours, échec d'écriture/purge sans effet sur le dispatch.
  • Vérifié en réel sur la base de dev : une ligne idle écrite par la commande.

Hors périmètre

Mécanisme de dispatch (#522/#524) inchangé : seulement de l'observation.

@ronan-develop ronan-develop added the feature Nouvelle fonctionnalité label Oct 2, 2026
@ronan-develop ronan-develop self-assigned this Oct 2, 2026
@github-actions github-actions Bot added this to the Pre Prod milestone Oct 2, 2026
@ronan-develop
ronan-develop merged commit e26a731 into main Oct 2, 2026
4 checks passed
@ronan-develop
ronan-develop deleted the feat/528-admin-charge-takeout branch October 2, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Nouvelle fonctionnalité

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Panel admin : afficher la charge serveur et l'état des imports Takeout différés

1 participant