Aller au contenu

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
PDF 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 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, 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

  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/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.