adb-utilities
Rôle
Service de services transverses consommé par tous les autres microservices. Il fournit :
- Catalogues et traductions (
/utilities/catalog,/utilities/i18n) — tables de référence multilingues. - Configuration métier (
/utilities/configurations) — formats, séries, charges, paramètres. - Clés d'allocation (
/utilities/allocationkey) — règles de répartition des charges entre lots. - Indices INSEE (
/utilities/indexes) — indices IRL, ILC, ILAT, ICC pour révision des loyers, mis à jour quotidiennement à midi via un job cron. - Notifications (
/utilities/notifications,/utilities/notification-definitions) — système de notifications transverses. - Logs UI (
/utilities/logs) — collecte les logs côté client. - Dashboards (
/utilities/dashboards) — configuration de dashboards utilisateur. - Validations (
/utilities/validations) — règles de validation métier réutilisables.
Stack
| Élément | Valeur |
|---|---|
| Spring Boot | 3.1.3 |
| Java | 18 |
| Port | 8082 |
| Database | MongoDB Atlas — base adb-utilities |
| Auth | Keycloak (resource server) |
| Stack réactive | Spring WebFlux + Reactive MongoDB |
| State machine | Spring Statemachine 2.2.3 |
| Intégration | API INSEE (indices bancaires) |
| Version | 0.40.0-SNAPSHOT |
Architecture interne
flowchart TB
subgraph Controllers["12 Controllers"]
CC[CatalogController]
I18N[I18NController]
CFC[ConfigurationController]
AKC[AllocationKeysController]
IC[IndexController]
NC[NotificationController]
NDC[NotificationDefinitionController]
DC[DashboardController]
VC[ValidationsController]
SC[SerialController]
ULC[UiLogsController]
INFOC[InfoController]
end
subgraph Jobs
InseeJob[Job INSEE<br/>cron: 0 0 12 * * *]
end
Mongo[(adb-utilities)]
INSEE[API INSEE]
Controllers --> Mongo
InseeJob --> INSEE
InseeJob --> Mongo
InseeJob -.publish.-> SNS[SNS<br/>onIndexPublished]
Endpoints (12 controllers)
| Controller | Path | Rôle |
|---|---|---|
CatalogController | /utilities/catalog | Catalogues de valeurs (types, statuts...) |
I18NController | /utilities/i18n | Traductions multilingues |
ConfigurationController | /utilities/configurations | Configuration globale |
AllocationKeysController | /utilities/allocationkey | Clés d'allocation |
IndexController | /utilities/indexes | Indices INSEE |
NotificationController | /utilities/notifications | Notifications utilisateur |
NotificationDefinitionController | /utilities/notification-definitions | Définitions de notifications |
DashboardController | /utilities/dashboards | Dashboards utilisateur |
ValidationsController | /utilities/validations | Règles de validation |
SerialController | /utilities/serials | Numéros de série |
UiLogsController | /utilities/logs | Logs UI |
InfoController | /utilities | Module info |
Modèle de données
erDiagram
AllocationKeyEntity ||--o{ Configuration : "référence"
AllocationKeyEntity {
string _id
string name
object rules
}
AbstractConfigurationEntity {
string _id
string type "format / serial / charge / ..."
object data
}
CatalogValueEntity {
string _id
string catalog
string code
object translations
}
InseeIndexEntity {
string _id
string bankId "IRL / ILC / ILAT / ICC"
date publishedAt
number value
}
NotificationDefinitionEntity {
string _id
string type
string template
}
NotificationEntity {
string _id
string userId
string definitionId
boolean read
}
Collections : allocationkeys, configurations, dashboards, catalog, indexes, notifications, notification_definitions, serials.
Événements
Émis (SNS)
onIndexPublished— quand le job INSEE publie un nouvel indice (consommé paradb-contractspour ré-indexer les loyers).
Consommés
Aucun listener SQS — adb-utilities est purement producteur ou en lecture.
Dépendances inter-services
flowchart LR
utilities[adb-utilities]
insee[API INSEE]
utilities --> insee
parts[adb-parts] -->|GET /utilities/allocationkey| utilities
contracts[adb-contracts] -->|GET /utilities/i18n| utilities
accounting[adb-accounting] -->|GET /utilities/i18n| utilities
web[adb-web/bff] --> utilities
ui[adb-ui] --> utilities
adb-utilities n'appelle aucun autre service métier.
Job INSEE
Job Spring (cron 0 0 12 * * * — chaque jour à midi) qui :
- Appelle l'API INSEE avec les credentials
insee.consumer.key/insee.consumer.secret. - Récupère les indices IRL, ILC, ILAT, ICC.
- Persiste dans la collection
indexes. - Publie l'événement
onIndexPublishedsur SNS.
Désactivable via insee.job.enabled=false.
Configuration & déploiement
Variables d'environnement
| Variable | Rôle |
|---|---|
MONGO_DB_URI | Connection string MongoDB |
SECURITY_ISSUER_URI / SECURITY_TOKEN_URI | Keycloak |
CLIENT_ID / CLIENT_SECRET | OAuth2 |
insee.consumer.key / insee.consumer.secret | API INSEE |
IRL_bankIds, ILC_bankIds, ILAT_bankIds, ICC_bankIds | IDs INSEE par type d'indice |
insee.job.enabled | Activation du cron |
insee.job.cron | Expression cron |
Chart Helm
adb-charts/charts/services/templates/adb-utilities.yaml. Image : lifeconnect/adb-utilities.
Liens
- Code :
adb-utilities/ - Doc allocation keys :
functional-epics/utility/allocation-keys.md - Doc revision index :
functional-epics/utility/revision-index.md