Aller au contenu

Versions et dépendances DYNORS — Référence complète

Référence des dernières versions disponibles sur le GitLab Package Registry pour tous les modules DYNORS publiables. À utiliser dans tous 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 pour afficher les versions disponibles — voir § 5 Découverte dynamique des versions.


1. dynors-core — modules publiés

Artifact Version stable SNAPSHOT actuel Géré par BOM ? Remarque
dynors-core-bom 1.0.2 1.0.3-SNAPSHOT À importer en platform(...)
dynors-commons 1.0.3 1.0.3-SNAPSHOT ✅ BOM 1.0.2 Contient SlyTransitValidator, SlyTransitFilter, InterAppCallService
dynors-security 1.0.2 1.0.3-SNAPSHOT ✅ BOM 1.0.2 JWT, multi-tenant, RBAC
dynors-db 1.0.2 1.0.3-SNAPSHOT ✅ BOM 1.0.2 Multi-tenant DB
dynors-events 1.0.0 1.0.1-SNAPSHOT ✅ BOM 1.0.2 Event bus interne (publisher/subscriber)
dynors-interapp-client 1.0.0 1.0.1-SNAPSHOT ✅ BOM 1.0.2 Client HTTP inter-app → SLY

Source : GitLab Package Registry → dynors/dynors-core (project ID : 75907047).


2. dynors-extensions — modules publiés

Artifact Version stable SNAPSHOT actuel Remarque
dynors-extensions-bom en cours 1.0.0-SNAPSHOT BOM extensions
dynors-notify 1.0.0-SNAPSHOT Notifications email/SMS (SMTP, Brevo, Resend, …) — config par app : Configuration dynors-notify
dynors-pdf 1.0.0-SNAPSHOT Génération PDF (JasperReports)
dynors-invoicing-core 1.0.0-SNAPSHOT Modèle facture, cycle de vie
dynors-invoicing-tax 1.0.0-SNAPSHOT Calcul TVA, UEMOA
dynors-invoicing-numbering 1.0.0-SNAPSHOT Numérotation séquentielle multi-tenant
dynors-invoicing-compliance 1.0.0-SNAPSHOT Compliance DGI, SYSCOHADA
dynors-invoicing-export 1.0.0-SNAPSHOT Export PDF, FEC, XBRL
dynors-billing 1.0.0-SNAPSHOT Abonnements SaaS, plans
dynors-hr 1.0.0-SNAPSHOT RH, contrats
dynors-payroll 1.0.0-SNAPSHOT Paie, IPRES, CSS
dynors-webhooks 1.0.0-SNAPSHOT Webhooks signés HMAC — config par app (endpoints, secrets) : Configuration dynors-webhooks
dynors-api-client 1.0.0-SNAPSHOT Clients HTTP façon Stripe
dynors-logging 1.0.0-SNAPSHOT Logging centralisé — config par app : Configuration dynors-logging · tutoriel Logging centralisé

Source : GitLab Package Registry → dynors/dynors-extensions.


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") }
    }
}

dependencies {
    // ── BOM core — gère les versions de tous les modules core ──
    implementation(platform("com.dynors:dynors-core-bom:1.0.2"))

    // Modules core (pas de version : gérée par le BOM)
    implementation("com.dynors:dynors-commons")          // SlyTransitFilter, InterAppCallService
    implementation("com.dynors:dynors-security")         // JWT, RBAC, multi-tenant
    implementation("com.dynors:dynors-db")               // DB multi-tenant
    implementation("com.dynors:dynors-events")           // Event bus (optionnel)
    implementation("com.dynors:dynors-interapp-client")  // Appels vers autres apps via SLY

    // Extensions (versions explicites — pas encore dans le BOM)
    implementation("com.dynors:dynors-notify:1.0.0-SNAPSHOT")
    // implementation("com.dynors:dynors-invoicing-core:1.0.0-SNAPSHOT")
    // implementation("com.dynors:dynors-pdf:1.0.0-SNAPSHOT")
}

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 pour le détail complet.


4. Nouveautés récentes (2026-03-13)

dynors-commonsSlyTransitValidator + SlyTransitFilter

Deux nouvelles classes dans le package com.dynors.commons.interapp :

Classe Rôle
SlyTransitValidator Vérifie la signature HMAC-SHA256 X-Sly-Signature + timestamp X-Sly-Timestamp sur les requêtes entrantes. Garantit que la requête a transité par SLY.
SlyTransitFilter OncePerRequestFilter prêt à l'emploi. À enregistrer dans chaque backend qui reçoit des appels inter-app (FISCAL, BOOKS, TRACIUM…).

Pourquoi ? Sans ce mécanisme, n'importe qui pouvait forger X-Source-App et appeler FISCAL directement. Avec la signature, seul SLY (qui possède SLY_FORWARD_SECRET) peut produire une requête valide.

À faire pour chaque backend appelé :

@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

Module autonome pour la communication asynchrone entre apps. Voir § Events.

dynors-interapp-client — maintenant dans le CI

Le module dynors-interapp-client est désormais dans les options de publication du pipeline CI core (publish_module = interapp-client).


5. Découverte dynamique des versions (pour TAKKU et configurateurs)

TAKKU et tout outil de génération de projet doit afficher les versions disponibles en temps réel depuis le GitLab Package Registry — pas une liste en dur.

API GitLab Registry (lecture)

# Lister tous les packages maven d'un projet
curl -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
  "https://gitlab.com/api/v4/projects/75907047/packages?package_type=maven&per_page=50"

# Lister les versions d'un artifact spécifique
curl -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
  "https://gitlab.com/api/v4/projects/75907047/packages?package_type=maven&package_name=dynors-commons"

Réponse JSON :

[
  { "id": 12, "name": "dynors-commons", "version": "1.0.2", "package_type": "maven", "created_at": "..." },
  { "id": 13, "name": "dynors-commons", "version": "1.0.3-SNAPSHOT", "package_type": "maven", "created_at": "..." }
]

Intégration dans TAKKU

TAKKU doit appeler cette API au moment de la configuration d'un nouveau projet pour :

  1. Lister les modules disponibles (commons, security, db, events, interapp-client, notify, pdf…)
  2. Afficher les versions (stables et SNAPSHOT) pour chaque module
  3. Pré-sélectionner la dernière version stable (ou SNAPSHOT si aucune stable)
  4. Générer le build.gradle.kts avec les bonnes versions
// Exemple côté TAKKU — appel Registry via InterAppCallService
List<PackageVersion> versions = gitlabRegistryClient.listVersions("dynors-commons");
// → afficher dans l'UI du configurateur pour que le dev choisisse

Variables TAKKU à configurer :

dynors:
  registry:
    core-project-id: 75907047       # dynors/dynors-core
    extensions-project-id: XXXXXXX  # dynors/dynors-extensions
    token: ${GITLAB_TOKEN_READ}     # token lecture seule sur le registry

6. Mise à jour de cette page

Cette page doit être mise à jour à chaque nouvelle publication :

Événement Qui met à jour Quoi
Nouvelle release core CI core (automatique ou manuellement) Tableau § 1, bloc § 3
Nouvelle release extension CI extensions Tableau § 2
Nouveau module ajouté Architecte Tableaux + § 3 usage
Nouvelle variable inter-app Architecte § 3.2

Dernière mise à jour : 2026-03-13. Sources : dynors/dynors-core · dynors/dynors-extensions · CONFIGURATION_ACCES_DEPENDANCES.md.