Versions et dépendances DYNORS — Référence complète¶
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é · entitlements-client:1.0.0 (nouveau) · logging:1.0.4 |
1.0.3 (DAWALALE, internal) · 1.0.2 par clé (paiement) |
| 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.0 | Première release registry — client + guard entitlements via SLY |
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.3 |
1.0.3-SNAPSHOT |
| 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 | Email SMTP, SMS (Twilio…), push — envoi notifications | 1.0.3 · 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 | EntitlementsClient + EntitlementsGuard → /entitlements/check via SLY, fail-closed, cache TTL |
1.0.0 (nouveau) |
| 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, mediconnect)
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/mediconnect-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-06-21 — entitlements-client:1.0.0, interapp-client:1.0.8, BOM extensions 1.0.4. Core train 1.0.7 (+ inter-app 1.0.8). Audit : docs/AUDIT_PACKAGES_PUBLIES_DYNORS.md.