Configuration dynors-notify — librairie vs applications
dynors-notify (com.dynors:dynors-notify, dépôt dynors-extensions) est une bibliothèque embarquée dans chaque application Spring Boot qui déclare la dépendance. Il n’existe pas de « serveur NOTIFY » unique : chaque app configure son fournisseur d’envoi, ses secrets et ses profils (dev, recette, prod).
!!! note "Source et dépôt principal"
Contenu aligné sur le dépôt agrégé dynors : docs/CONFIGURATION_DYNORS_NOTIFY.md.
Résolution Maven / registry : Versions et dépendances (core) ; accès token : CONFIGURATION_ACCES_DEPENDANCES.md.
SLY (SelebeYone) et applications tierces
dynors.interapp.gateway-url(SLY) etInterAppCallService= appels entre apps DYNORS. La configdynors.notify.*cible les fournisseurs (SMTP, Brevo, Resend…), sans signature de transit SLY sur ces envois.- App tierce : assouplir avec
stub,base-urlsi proxy, sans imposer le contrat inter-app — voir le paragraphe homonyme dansCONFIGURATION_DYNORS_NOTIFY.md.
1. Rôles
| Couche | Responsabilité |
|---|---|
| dynors-notify | Contrat Java (NotificationService, NotificationRequest), auto-config Spring, implémentations SMTP, Brevo, Resend, SendGrid, Mailgun, SMS Orange, construction des payloads API (TransactionalEmailPayloads, pièces jointes EmailMetadataAttachments). |
| Chaque application | Dépendance Maven + entrée dans application.yml / variables d’environnement / Vault : choix du provider, clés API, SMTP, stub ou non, expéditeur par défaut. |
| Code métier | Contenu des messages, templateId / templateVars par cas d’usage, appels à NotificationService.send(...). |
Deux apps différentes peuvent donc utiliser Brevo et Resend avec des comptes, domaines et templates distincts.
2. Propriétés principales (dynors.notify.*)
Préfixe commun : dynors.notify.
| Clé | Rôle |
|---|---|
dynors.notify.email.provider |
smtp · brevo · resend · sendgrid · mailgun — un seul actif par app (bean conditionnel). |
dynors.notify.email.enabled |
Active le provider email (true en général si vous envoyez des mails). |
dynors.notify.email.stub |
true : pas d’appel réseau (logs uniquement) — pratique en dev sans secrets. |
dynors.notify.email.from |
Adresse expéditeur par défaut (souvent surchargée par le template côté Brevo/Resend). |
dynors.notify.email.brevo.api-key |
Clé API Brevo (préférer ${BREVO_API_KEY}). |
dynors.notify.email.brevo.base-url |
Défaut https://api.brevo.com/v3. |
dynors.notify.email.resend.api-key |
Clé Resend (${RESEND_API_KEY}). |
dynors.notify.email.mailgun.* |
Domaine, URL de base, clé — voir javadoc MailgunEmailProvider. |
dynors.notify.email.sendgrid.* |
Idem SendGrid. |
SMTP : en plus, configurer spring.mail.* (host, port, username, password, TLS) — classique Spring Boot.
Les clés exactes et les javadoc sont dans les classes *EmailProvider sous le module notify dans dynors-extensions (packages/extensions/notify/.../providers/email/).
3. Secrets et environnements
- Ne pas commiter les clés dans Git : utiliser variables d’environnement, Vault (stratégie DYNORS), ou fichiers locaux ignorés (
.env). - En CI/CD : variables masquées dans GitLab / pipeline ; le
GITLAB_TOKENsert au registry Maven (read_registry), pas aux APIs Brevo/Resend (tokens distincts).
4. Templates distants vs HTML inline
Définis sur NotificationRequest : templateId, templateVars.
- Brevo :
templateIddoit être l’ID numérique du template dans Brevo (chaîne"42"). Payload JSON :templateId,params←templateVars, sanshtmlContent. - Resend :
templateId= id ou alias du template (ex.order-confirmation). Payload :template: { id, variables }, sanshtml. - SMTP : pas de rendu de template distant ; seul le corps (
body) est envoyé. Les champstemplateId/templateVarsne sont pas interprétés par le serveur SMTP (éventuellement enrichissement métier avant l’appel à NOTIFY).
Voir TransactionalEmailPayloads et les tests TransactionalEmailPayloadsTest dans le module notify (repo dynors-extensions).
5. Pièces jointes
Métadonnées standardisées : attachmentPdfBase64, attachmentFilename, attachmentContentType (voir EmailMetadataAttachments). Utilisées par exemple par FISCAL pour joindre un PDF de facture.
6. Politique métier et distinction events
- Relances client vs alertes admin : Politique notifications, relances et monitoring (dépôt dynors).
- dynors-notify vs dynors-events : NOTIFY vs events et finalisation FISCAL / extensions (dépôt dynors).
7. Références code
| Élément | Emplacement |
|---|---|
| README module | dynors-extensions packages/extensions/notify/README.md |
| Payloads Brevo / Resend | .../notify/email/TransactionalEmailPayloads.java |
| PJ depuis métadonnées | .../notify/email/EmailMetadataAttachments.java |
| Registry Maven | Projet GitLab 76017499 — Versions et dépendances |
Dernière mise à jour : 2026-04-12 — alignée sur les providers et tests du module notify.