Versions et dépendances DYNORS — Référence complète — archive¶
Archive historique, non normative. Les versions, pins, mécanismes et recommandations ci-dessous ne décrivent pas l'état actuel. Utiliser la référence courante. Aucun ancien exemple ne vaut autorisation de rollback ou d'adoption.
Référence des versions disponibles sur le GitLab Package Registry pour les modules com.dynors.*. À utiliser dans les projets (clients, internal, extensions) pour rester aligné.
Conseil pour TAKKU et tout configurateur de projet : interroger l'API GitLab Registry en temps réel — voir § 5 Découverte dynamique des versions.
Docs associées (MkDocs) : Audit packages Maven · Notes de version extensions · Checklist publications. Copie workspace :
enterprise-gouvernance→docs/AUDIT_PACKAGES_PUBLIES_DYNORS.md.
0. Synthèse train (mise à jour doc — 2026-06-21)¶
| Train | Projet GitLab | Releases stables (registry) | Pin courant des apps |
|---|---|---|---|
| Core | 75907047 (dynors-core) |
BOM 1.0.8 · modules 1.0.7 · interapp-client:1.0.8 |
dynors.core.version=1.0.8 |
| Core dev | branche main du repo core |
1.0.8-SNAPSHOT (indicatif) |
Ne pas consommer en CI/prod |
| Extensions (consommateurs) | 76017499 | Train 1.0.3 · BOM 1.0.4 republié · notify:1.0.6 · entitlements-client:1.0.3 · logging:1.0.4 |
Versions indépendantes par application ; AUTH et DOSALI notify 1.0.6 |
| Extensions dev | branche main dynors-extensions |
SNAPSHOT 1.0.4 sur plusieurs modules | Voir dynors-extensions/gradle.properties — pas dans les apps CI/prod |
Publications du 2026-06-21 :
| Artefact | Version | Notes |
|---|---|---|
dynors-entitlements-client |
1.0.3 | Client + guard via SLY ; scopes canoniques préservés, logs non sensibles. 1.0.2 superseded. |
dynors-interapp-client |
1.0.8 | Métriques Micrometer P3 (interapp.calls*) |
dynors-extensions-bom |
1.0.4 | Republié avec contrainte entitlements-client |
Règle : pas de -SNAPSHOT sur com.dynors.* en dépendance CI/prod des applications — .cursor/rules/dynors-core-stable-versions.mdc.
Publication ciblée extensions (confirmée registry — juin 2026)¶
Publications indépendantes (une clé gradle.properties par module, pas de bump global du train) :
| Action | Clé / artefact | Release stable publiée | SNAPSHOT dev (registry) |
|---|---|---|---|
| Logging | dynors.ext.logging.version |
dynors-logging:1.0.3 |
1.0.4-SNAPSHOT |
dynors.ext.pdf.version |
dynors-pdf:1.0.3 |
1.0.4-SNAPSHOT | |
| Notify | dynors.ext.notify.version |
dynors-notify:1.0.6 |
source 1.0.6 ; aucun bump post-release créé lors de la publication ciblée |
| Auth LDAP | dynors.ext.auth-ldap.version |
dynors-auth-ldap:1.0.3 |
— |
| BOM | bomVersion |
dynors-extensions-bom:1.0.3 |
1.0.4-SNAPSHOT |
| Media | dynors.ext.media.version |
dynors-media:1.0.3 (publié 2026-06-05) |
1.0.4-SNAPSHOT |
| Webhooks | dynors.ext.webhooks.version |
1.0.3 |
1.0.4-SNAPSHOT |
| Billing | dynors.ext.billing.version |
1.0.3 |
1.0.4-SNAPSHOT |
| API client | dynors.ext.api-client.version |
1.0.3 |
1.0.4-SNAPSHOT |
| Invoicing core | dynors.ext.invoicing-core.version |
1.0.3 |
1.0.4-SNAPSHOT |
Le BOM 1.0.3 publié reste propre : au moment de la publication, packages/bom/build.gradle.kts applique stableModuleVersion() — toute clé *-SNAPSHOT dans gradle.properties est convertie en release stable précédente (ex. 1.0.4-SNAPSHOT → contrainte 1.0.3) dans les contraintes Maven du BOM. Le BOM publié ne référence pas de *-SNAPSHOT.
Consommateurs : implementation(platform("com.dynors:dynors-extensions-bom:1.0.3")) puis implementation("com.dynors:dynors-logging") / dynors-pdf sans version (résolu par le BOM 1.0.3).
1. dynors-core — modules publiés¶
| Artifact | Version stable (registry) | Géré par BOM ? | Contenu (résumé) |
|---|---|---|---|
| dynors-core-bom | 1.0.7, 1.0.8 | — | Train Maven : contraintes de version des modules core |
| dynors-commons | 1.0.7 | ✅ | Contrat inter-app (InterAppCallService), transit SLY (SlyTransitFilter / SlyTransitValidator), erreurs (StandardErrorCode, DynorsApiException), cookies (DynorsAccessCookie), exceptions métier |
| dynors-security | 1.0.7 | ✅ | JWT (JwtAuthFilter), RBAC, contexte tenant, OAuth2/MFA, validateurs prod (cookies, JWT asymétrique) |
| dynors-db | 1.0.7 | ✅ | Multi-tenant JDBC : TenantContext, datasources, filtres, stratégies schéma / ligne |
| dynors-events | 1.0.7 | ✅ | Bus d'événements (EventPublisher), corrélation (EventCorrelation / traceparent), adaptateurs in-memory / Redis / RabbitMQ / Kafka |
| dynors-interapp-client | 1.0.7, 1.0.8 | ✅ (train 1.0.7) | Impl HTTP client → SLY : headers X-Source-App, signature transit, métriques Micrometer 1.0.8+ (interapp.calls*) |
| dynors-web-errors | 1.0.7 | ✅ | ApiErrorResponse, filtre X-Request-Id, @RestControllerAdvice unifié, anti-fuite messages JDBC/SQL |
Source : API GitLab Package Registry, projet 75907047 — scan 2026-06-21.
Publication core urgente : aucune — train dynors-core-bom:1.0.8 publié (2026-06-21) : modules 1.0.7 + interapp-client 1.0.8.
1.1 Catalogue core — détail par module¶
| Module | Packages / briques clés | Quand l'ajouter |
|---|---|---|
| commons | com.dynors.commons.interapp, …api.error, …web, …exceptions |
Toujours — socle API et inter-app |
| security | JwtAuthFilter, RBAC, tenant |
Toute app avec auth utilisateur |
| db | TenantContext, multi-datasource |
App multi-tenant PostgreSQL |
| events | publish/subscribe, corrélation | Workflows async, intégration billing/FISCAL |
| interapp-client | client SLY, auto-config, métriques P3 | App qui appelle FISCAL, BOOKS, PAIEMENT, notify… |
| web-errors | handler HTTP homogène | Toute API REST exposée |
2. dynors-extensions — modules publiés¶
| Artifact | Releases stables (registry) | Contenu (résumé) | Pin typique |
|---|---|---|---|
| dynors-extensions-bom | 1.0.1–1.0.3, 1.0.4 | Train extensions + contraintes par clé dynors.ext.* |
1.0.3 ou 1.0.4 |
| dynors-logging | 1.0.1–1.0.4 | DynorsLogger, providers console / Sentry / noop — remplace LoggerFactory métier |
1.0.3 · paiement 1.0.2 |
| dynors-notify | 1.0.1–1.0.3, 1.0.5, 1.0.6 | Email/SMS multi-provider et templates ; 1.0.6 corrige le routage EMAIL ; push limité au contrat + fallback NoOp |
EMAIL 1.0.6 · paiement 1.0.2 |
| dynors-pdf | 1.0.1–1.0.4 | Génération PDF (JasperReports), signatures | 1.0.3 / 1.0.4 (FISCAL) |
| dynors-webhooks | 1.0.1–1.0.3 | Envoi événements signés HMAC vers partenaires | 1.0.3 · paiement 1.0.2 |
| dynors-billing | 1.0.1, 1.0.3 | Abonnements SaaS, plans, métriques billing | 1.0.3 |
| dynors-api-client | 1.0.1, 1.0.3 | SDK HTTP façon Stripe (clés API, clients typés) | 1.0.3 |
| dynors-media | 1.0.0–1.0.3 | SDK stockage local (auto-config, quotas) — distinct du service REST MEDIA (dynors-internal) |
1.0.3 |
| dynors-fiscal-client | 1.0.0 | Client FISCAL via SLY (certify, invoices…) | 1.0.0 |
| dynors-entitlements-client | 1.0.0–1.0.3 | EntitlementsClient + EntitlementsGuard → /entitlements/check via SLY, fail-closed, cache TTL |
1.0.3 ; ne pas consommer 1.0.2 |
| dynors-auth-ldap | 1.0.3 | Bind LDAP / AD, auto-config Spring Security | 1.0.3 |
| invoicing-core | 1.0.1, 1.0.3 | Modèle facturation partagé (lignes, totaux, services) | 1.0.3 |
Source : API GitLab Package Registry, projet 76017499 — scan 2026-06-21.
2.1 Catalogue extensions — modules non publiés (repo uniquement)¶
Présents dans dynors-extensions mais absents du Package Registry — ne pas déclarer en dépendance CI/prod tant qu'ils ne sont pas publiés :
| Module (repo) | Rôle prévu |
|---|---|
| hr | RH — contrats, référentiels |
| payroll | Paie — IPRES, CSS |
| invoicing-tax, invoicing-numbering, invoicing-compliance, invoicing-export, invoicing-integration | Sous-modules facturation (complément invoicing-core) |
2.2 Détail entitlements & inter-app (juin 2026)¶
| Module | Ce qu'il apporte | Config minimale |
|---|---|---|
| entitlements-client | Remplace les copies locales EntitlementsClient/Guard ; @PreAuthorize + require* ; refuse enabled=false en prod |
dynors.entitlements.enabled=true, deny-on-error=true |
| interapp-client 1.0.8 | Métriques interapp.calls (Timer), interapp.calls.errors, interapp.calls.started — tags target, outcome uniquement |
Actuator + MeterRegistry (auto si présent) |
Publication extensions (job publish-manual)¶
Depuis dynors/dynors-extensions : publier un module à la fois (bump uniquement la clé concernée dans gradle.properties) :
- Logging :
dynors.ext.logging.version→ release 1.0.3, puis repasser en 1.0.4-SNAPSHOT en dev local si besoin. - PDF :
dynors.ext.pdf.version→ idem. - BOM :
bomVersion→ release 1.0.3 (les contraintes du BOM utilisentstableModuleVersion()— pas de SNAPSHOT dans le POM publié).
Checklist workspace : docs/runbooks/publications-maven-checklist.md (dépôt enterprise-gouvernance).
Train 1.0.3 : complet sur le registry (2026-06-05), BOM republié. dynors-paiement : 1.0.2 par module (notify, webhooks, logging) — coexistence avec 1.0.3 ailleurs.
3. Usage recommandé dans un nouveau projet¶
3.1 Projet standard (backend Spring Boot)¶
// build.gradle.kts
repositories {
maven {
url = uri("https://gitlab.com/api/v4/projects/75907047/packages/maven")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = System.getenv("GITLAB_TOKEN")
}
authentication { create<HttpHeaderAuthentication>("header") }
}
maven {
url = uri("https://gitlab.com/api/v4/projects/76017499/packages/maven")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = System.getenv("GITLAB_TOKEN")
}
authentication { create<HttpHeaderAuthentication>("header") }
}
mavenCentral()
}
dependencies {
val dynorsCore = "1.0.7" // gradle.properties ou API §5
val dynorsExtBom = "1.0.3" // ou 1.0.1 si app legacy (ex. dynors-paiement)
implementation(platform("com.dynors:dynors-core-bom:$dynorsCore"))
implementation(platform("com.dynors:dynors-extensions-bom:$dynorsExtBom"))
implementation("com.dynors:dynors-commons")
implementation("com.dynors:dynors-security")
implementation("com.dynors:dynors-db")
implementation("com.dynors:dynors-events")
implementation("com.dynors:dynors-interapp-client")
implementation("com.dynors:dynors-web-errors")
implementation("com.dynors:dynors-logging")
// implementation("com.dynors:dynors-notify")
}
3.2 Configuration application.yml minimale (inter-app SLY)¶
dynors:
interapp:
source-app: mon-app # code stable de l'app (ex. supergest, medisen)
gateway-url: ${SLY_BASE_URL:https://sly.dynors.com}
return-base-url: ${SLY_BASE_URL:https://sly.dynors.com}/mon-app
sly-forward-secret: ${SLY_FORWARD_SECRET} # obligatoire en production
sly-signature-window-ms: 30000
Voir Routage inter-app SLY.
3.3 Épinglage par dépôt (workspace — juin 2026)¶
| Dépôt | dynors.core.version |
Extensions | Remarque |
|---|---|---|---|
| dynors-paiement | 1.0.7 | notify / webhooks / logging 1.0.2 |
clés dynors.ext.* séparées — pas media/pdf |
| dawalale | 1.0.7 | 1.0.3 |
logging, notify, pdf — OK registry |
| dynors-internal | 1.0.7 | 1.0.3 (+ auth-ldap 1.0.3) |
media/webhooks selon app — voir §2 |
| jaraaf | 1.0.7 | — | Pas de BOM extensions |
| selebeyone (SLY) | 1.0.7 | auth-ldap 1.0.3 | logging : vérifier pin vs registry |
4. Nouveautés récentes (2026-03-13)¶
dynors-commons — SlyTransitValidator + SlyTransitFilter¶
| Classe | Rôle |
|---|---|
SlyTransitValidator |
Vérifie la signature HMAC-SHA256 X-Sly-Signature + timestamp X-Sly-Timestamp. |
SlyTransitFilter |
Filtre prêt à l'emploi sur les backends appelés via SLY. |
Enregistrement type :
@Bean
FilterRegistrationBean<SlyTransitFilter> slyTransit(
@Value("${dynors.interapp.sly-forward-secret:}") String secret,
@Value("${dynors.interapp.sly-signature-window-ms:30000}") long windowMs) {
var filter = new SlyTransitFilter(secret, windowMs,
Set.of("/actuator/health", "/v3/api-docs", "/swagger-ui"));
var reg = new FilterRegistrationBean<>(filter);
reg.setOrder(Ordered.HIGHEST_PRECEDENCE + 10);
reg.addUrlPatterns("/api/*");
return reg;
}
dynors-events — module event bus¶
Voir Architecture SI — index.
dynors-interapp-client — publication CI¶
Module inclus dans les options publish_module du pipeline dynors-core.
5. Découverte dynamique des versions (pour TAKKU et configurateurs)¶
API GitLab Registry (lecture)¶
curl -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
"https://gitlab.com/api/v4/projects/75907047/packages?package_type=maven&per_page=100"
curl -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
"https://gitlab.com/api/v4/projects/76017499/packages?package_type=maven&per_page=100"
Vérification ponctuelle (clone dynors-core) : core/scripts/check-version-available.sh <version> [module].
Intégration TAKKU¶
- Lister les modules disponibles.
- Afficher les versions stables (exclure
-SNAPSHOTpour la prod). - Pré-sélectionner la dernière release.
- Générer
build.gradle.kts/gradle.properties.
dynors:
registry:
core-project-id: 75907047
extensions-project-id: 76017499
token: ${GITLAB_TOKEN_READ}
6. Vérification builds workspace (2026-06-05)¶
Commande type : CI=true ./gradlew classes test --no-daemon -Pgitlab.token=$GITLAB_TOKEN
(APIs sans gradlew : ./gradlew du clone core/ dans le répertoire du module).
| Dépôt | Résultat | Note |
|---|---|---|
dynors-core |
OK | |
dynors-extensions |
OK | |
dynors-internal |
OK | Substitutions includeBuild |
dynors-paiement |
OK | Extensions 1.0.2 (notify, webhooks, logging) depuis registry |
dynors-projects/dawalale |
OK | Backend ; front : ng build OK |
dynors-projects/jaraaf |
OK | Fix Gradle projet synthétique :shared (juin 2026) |
dynors-platform/selebeyone |
OK | |
dynors-projects/medisen-sn/api |
OK | |
dynors-projects/supergest/api |
Tests KO | Compile OK — 9 tests contrat (Tracium / paiement) |
dynors-projects/dynors-books/api |
Compile KO | Dépendance OpenAPI / Swagger manquante sur controller paiement |
Risques dev local : includeBuild(../core) et chaîne extensions masquent des absences registry — valider une CI sans clones voisins avant release applicative.
7. Mise à jour de cette page¶
| Événement | Qui met à jour | Quoi |
|---|---|---|
| Nouvelle release core | CI / plateforme | §0, §1, §3 |
| Nouvelle release extensions | CI publish-manual |
§0, §2, checklist workspace |
| Nouveau module | Architecte | Tableaux + §3 |
| Re-audit registry / builds | Dev / agent (trimestriel ou avant release train) | §0, §2, §6 + AUDIT_PACKAGES_PUBLIES_DYNORS.md |
Dernière mise à jour : 2026-09-07 — notify:1.0.6 publié, résolu par AUTH/DOSALI et validé par smoke SMTP ; 1.0.5 reste immuable mais est superseded pour EMAIL ; entitlements-client:1.0.3 validé par smoke DOSALI. Notify 1.0.4, PDF 1.0.5 et BOM extensions 1.0.5 restent non publiés. Audit : docs/AUDIT_PACKAGES_PUBLIES_DYNORS.md.