adb-aggregates
Rôle
Service read-only qui agrège des données provenant de plusieurs microservices pour fournir des vues consolidées : un contrat enrichi avec les détails de ses parts/persons/files, une recherche cross-service, des agrégations par part ou par personne.
Il ne possède aucune collection MongoDB : c'est un orchestrateur d'appels HTTP qui assemble les réponses en mémoire et les retourne au client. C'est aussi le seul service qui expose un module Maven public (adb-aggregates-model) consommé par adb-reports.
Stack
| Élément | Valeur |
|---|---|
| Spring Boot | 3.1.3 |
| Java | 18 |
| Port | 8086 |
| Database | MongoDB Atlas (connecté mais aucune écriture) |
| Auth | Keycloak (resource server) |
| Stack réactive | Spring WebFlux + WebClient |
| Version | 0.37.0-SNAPSHOT |
Modules Maven internes
adb-aggregates-model— DTOs des agrégats. Publié comme dépendance consommée paradb-reportspour générer des rapports basés sur ces structures.adb-aggregates-app— application Spring Boot exécutable.
Architecture interne
flowchart TB
Client[Client adb-*<br/>ou frontend]
subgraph adb-aggregates
SAC[SearchAggregateController]
CAC[ContractAggregateController]
PAC[PartAggregateController]
PeAC[PersonAggregateController]
MIC[ModuleInfoAggregateController]
AS[AggregateService]
RC[RestClientImpl<br/>WebClient wrapper]
end
Persons[adb-persons]
Parts[adb-parts]
Contracts[adb-contracts]
Files[adb-files]
Utilities[adb-utilities]
Tickets[adb-tickets<br/>externe]
Client --> SAC
Client --> CAC
Client --> PAC
Client --> PeAC
SAC --> AS
CAC --> AS
PAC --> AS
PeAC --> AS
AS --> RC
RC -.GET.-> Persons
RC -.GET.-> Parts
RC -.GET.-> Contracts
RC -.GET.-> Files
RC -.GET.-> Utilities
RC -.GET.-> Tickets
Endpoints
| Controller | Path | Rôle |
|---|---|---|
ContractAggregateController | /aggregates/contracts | Contrats enrichis |
PartAggregateController | /aggregates/parts | Parts enrichis |
PersonAggregateController | /aggregates/persons | Personnes enrichies |
SearchAggregateController | /aggregates/search | Recherche cross-service |
ModuleInfoAggregateController | /aggregates/modules/info | Module info |
Modèle de données
Aucune collection persistée. Le service orchestre des appels HTTP et compose des DTOs en mémoire à partir des modèles partagés (adb-aggregates-model, adb-model).
Événements
Aucun. adb-aggregates est purement synchrone et stateless.
Dépendances inter-services
flowchart LR
aggregates[adb-aggregates]
persons[adb-persons]
parts[adb-parts]
contracts[adb-contracts]
files[adb-files]
utilities[adb-utilities]
tickets[adb-tickets]
aggregates -->|GET /persons| persons
aggregates -->|GET /parts| parts
aggregates -->|GET /contracts| contracts
aggregates -->|GET /files/metadata/list| files
aggregates -->|GET /utilities| utilities
aggregates -->|GET /tickets?q=...| tickets
reports[adb-reports] -->|GET /aggregates| aggregates
Configuration & déploiement
Variables d'environnement
| Variable | Rôle |
|---|---|
SECURITY_ISSUER_URI / SECURITY_TOKEN_URI | Keycloak |
CLIENT_ID / CLIENT_SECRET | OAuth2 (pour appels sortants) |
Configuration Jackson : dateFormat: yyyy-MM-dd HH:mm:ss, WRITE_DATES_AS_TIMESTAMPS: false.
Chart Helm
adb-charts/charts/services/templates/adb-aggregates.yaml. Image : lifeconnect/adb-aggregates.
Liens
- Code :
adb-aggregates/ - Module model :
adb-aggregates/adb-aggregates-model/