Aller au contenu

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-gouvernancedocs/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.propertiespas 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
PDF 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.11.0.3, 1.0.4 Train extensions + contraintes par clé dynors.ext.* 1.0.3 ou 1.0.4
dynors-logging 1.0.11.0.4 DynorsLogger, providers console / Sentry / noop — remplace LoggerFactory métier 1.0.3 · paiement 1.0.2
dynors-notify 1.0.11.0.3 Email SMTP, SMS (Twilio…), push — envoi notifications 1.0.3 · paiement 1.0.2
dynors-pdf 1.0.11.0.4 Génération PDF (JasperReports), signatures 1.0.3 / 1.0.4 (FISCAL)
dynors-webhooks 1.0.11.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.01.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 utilisent stableModuleVersion() — 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-commonsSlyTransitValidator + 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

  1. Lister les modules disponibles.
  2. Afficher les versions stables (exclure -SNAPSHOT pour la prod).
  3. Pré-sélectionner la dernière release.
  4. 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-21entitlements-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.