← Index des services · SI FGA · spécification de service

svc-notifications

Catégorie : Socle  ·  Périmètre : Transverse  ·  Module : services/svc-notifications (monorepo fga-services — ADR-0001)  ·  Stack : Java · Quarkus · Gradle · YAML  ·  Architecture : hexagonale

1. Rôle et responsabilités

Notifications multicanales (email, SMS, in-app portail), modèles de messages, préférences des usagers, traçabilité des envois. Consomme les événements métier via des règles de routage configurées ; les fournisseurs SMTP et SMS sont derrière des ports.

2. Modèle de domaine (agrégats)

NotificationTemplateNotificationPreferenceDispatch

3. API exposée

/v1/templates/v1/preferences/v1/dispatches

API REST versionnée, contrat OpenAPI généré et versionné avec le service. Authentification par jeton Keycloak (JWT RS256) validé par le service (Quarkus OIDC).

4. Événements publiés

5. Événements consommés

événements métier via routage configuré : care-request.approved, offer.issued, formal-notice.issued, payment.executed, ...

Topics sigfga.<service>.<aggregate> · enveloppe CloudEvents 1.0 · publication via outbox pattern · consommateurs idempotents (déduplication par event id).

6. Dépendances synchrones

fournisseurs SMTP · passerelle SMS (ports out)

7. Flux principal

svc-notifications · flux principalconsommer un événement métierrésoudre la règle de routagenotification requise ?noncharger préférences et templatecomposer le message (français)envoyer (email · SMS · portail)échec et tentatives restantes ?ouienvoyé ?ouinonpubliernotification.dispatchedpubliernotification.failedoui

8. Backlog Jira rattaché

42 tickets du backlog Jira se rattachent à ce service, via 2 épics :

ÉpicIntituléEnfants
FSD-1012[PORT] Notifications et communication24
FSD-1075[PORT] Notifications et suivi des échanges · clôturée en v2 (fusion)
Deux épics portail redondantes (FSD-1012 et FSD-1075) à fusionner. Les dizaines de tâches « notifier » dispersées dans tous les lots deviennent des règles de routage de ce service, pas des développements répétés. La passerelle SMS (contrat opérateur) n'a aucun ticket.

9. Implémentation

Structure hexagonale standard : domain (modèle, événements, services purs, sans dépendance framework), application (use cases, ports in/out, transactions), adapter (in/rest, in/messaging, out/persistence, out/messaging, out/client). Dépendances verrouillées par test ArchUnit. Base de données dédiée (schéma PostgreSQL propre), migrations Liquibase (changesets exclusivement en SQL formaté — ADR-0002). Code intégralement en anglais ; textes utilisateur en fichiers i18n français.

10. Schéma de données

svc-notifications