Skip to content

Diffuser un message d'admin (maintenance/indisponibilité) à tous les utilisateurs des instances #283

Description

@ronan-develop

Description

ronan.lenouvel.me est l'instance principale/admin (Ronan). Besoin : pouvoir envoyer un message (email, et/ou bannière in-app) à l'ensemble des utilisateurs de toutes les instances déployées (yannick, coralie, elea, corentin, damien, cf. .deploy-targets) pour prévenir d'une maintenance planifiée, d'une indisponibilité, d'une mise à jour majeure, etc.

Contexte technique — particularité multi-instances

Chaque instance (<prenom>.lenouvel.me) a sa propre base de données isolée (bin/deploy-all.sh, section DB) — il n'existe aujourd'hui aucune table ni connexion partagée entre instances. "Tous les autres" ne peut donc pas être une simple requête SQL : il faut soit :

  • un script/commande admin qui se connecte successivement à chaque instance (via SSH, comme bin/deploy-all.sh le fait déjà pour le déploiement) et déclenche l'envoi localement sur chacune ;
  • soit un mini-registre central (liste des instances + leurs users, à maintenir quelque part côté admin) qui pousse les emails directement depuis la machine de Ronan sans passer par chaque instance.

Le mailer est déjà opérationnel sur toutes les instances (MAILER_DSN injecté automatiquement depuis MAILER_DSN_PRESET, cf. #et fix récent) — la brique d'envoi existe (MailerInterface, TemplatedEmail, cf. ShareNotificationMailer/GuestAccountCreator comme modèles à suivre pour le template email).

Points à trancher avant implémentation

  • Email uniquement, ou aussi une bannière/notification affichée dans l'app au prochain login ?
  • Le déclenchement se fait comment : commande console (bin/console app:broadcast-message "...") lancée manuellement par Ronan sur chaque instance via SSH (le plus simple, cohérent avec le fonctionnement actuel bin/deploy-all.sh), ou une interface admin dans l'app elle-même ?
  • Si bannière in-app : comment un message "poussé" une fois s'affiche puis se dismiss définitivement par utilisateur (éviter qu'il réapparaisse à chaque connexion une fois lu) ?

Critères d'acceptation

  • Ronan peut déclencher l'envoi d'un message à tous les utilisateurs de toutes les instances en une seule action (idéalement un seul script/commande, pas 6 opérations manuelles répétées)
  • Le message part bien à tous les comptes actifs de chaque instance (pas seulement l'owner de chacune — les invités aussi, s'ils ont un email valide)
  • Tests : commande/service testée isolément (dry-run possible sans réellement spammer en environnement de test)

Zone concernée

Autre (script d'administration multi-instances, pas une fonctionnalité applicative classique)

Effort estimé

M — 1 journée

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNouvelle fonctionnalité

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions