Skip to content

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

Merged
ronan-develop merged 7 commits into
mainfrom
feature/283-broadcast-message
Jul 23, 2026
Merged

Diffuser un message admin (maintenance/indisponibilité) à tous les utilisateurs des instances#362
ronan-develop merged 7 commits into
mainfrom
feature/283-broadcast-message

Conversation

@ronan-develop

Copy link
Copy Markdown
Owner

Résumé

  • Ronan peut diffuser un message (maintenance, indisponibilité, mise à jour majeure) par email à tous les utilisateurs (propriétaires + invités) de toutes les instances déployées, ou une seule instance ciblée, en une seule action depuis /admin/broadcast.
  • Chaque instance a sa propre DB isolée : l'instance ronan.lenouvel.me orchestre via un appel HTTP interne (BroadcastOrchestratorPOST /internal/broadcast) sur chaque autre instance, qui envoie ensuite ses propres emails localement.
  • Authentification service-to-service par secret partagé (BROADCAST_SHARED_TOKEN), firewall dédié broadcast_internal, hors du firewall JWT api.
  • Pas de nouveau ROLE_ADMIN Symfony : garde applicative BroadcastAdminChecker (whitelist par email BROADCAST_ADMIN_EMAIL).
  • Dry-run à tous les niveaux (service, orchestrateur, endpoint, command, formulaire admin), sans appel HTTP sortant en dry-run.
  • Canal email uniquement pour cette version — notification in-app suivie séparément dans Diffuser le message admin aussi via une notification in-app (suite de #283) #361.

Commits

  1. BroadcastTargetProvider + BroadcastMailer — envoi local à tous les users d'une instance (guests inclus, email invalide skippé)
  2. BroadcastOrchestrator — orchestration multi-instances (ciblage, dry-run, échec partiel n'interrompt pas les autres)
  3. BroadcastInternalController — endpoint interne + firewall dédié + authenticator par token
  4. BroadcastSendCommand — déclenchement CLI (app:broadcast:send)
  5. BroadcastAdminWebController — interface admin web + lien de navigation conditionnel
  6. Config déploiement (bin/deploy-all.sh, .env*, .claude/deploiement.md)
  7. Avancement

Test plan

  • Suite complète PHPUnit : 976/976 verts, composer dev-check passé
  • Tests dédiés : BroadcastTargetProviderTest, BroadcastMailerTest, BroadcastOrchestratorTest, BroadcastInternalControllerTest, BroadcastSendCommandTest, BroadcastAdminCheckerTest, BroadcastAdminWebControllerTest
  • Avant premier envoi réel en prod : ajouter BROADCAST_SHARED_TOKEN_PRESET/BROADCAST_ADMIN_EMAIL_PRESET dans .secrets, redéployer les 7 instances, tester en dry-run ciblé sur une instance non critique avant un envoi à toutes

Closes #283

@ronan-develop ronan-develop added the feature Nouvelle fonctionnalité label Jul 23, 2026
@ronan-develop
ronan-develop merged commit c800d2c into main Jul 23, 2026
4 checks passed
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.

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

1 participant