adb-views
Rôle
Service de dashboards et vues consolidées. Contrairement à adb-aggregates qui agrège à la volée via HTTP, adb-views maintient des projections dénormalisées dans sa propre base MongoDB, alimentées en continu par les événements SQS de tous les services. Cela lui permet de servir les dashboards rapidement sans cascade d'appels.
C'est le plus gros consommateur d'événements de la plateforme : 8 listeners SQS écoutent en permanence les modifications de parts, contrats, accounting, files, charges, market performances, tickets.
Il génère aussi des PDFs de propriétés (via iText + FreeMarker) et expose des endpoints de filtrage avancé.
Stack
| Élément | Valeur |
|---|---|
| Spring Boot | 3.1.3 |
| Java | 18 |
| Port | 8092 |
| Database | MongoDB Atlas — base adb-views |
| Auth | Keycloak (resource server) |
| Stack réactive | Spring WebFlux + Reactive MongoDB |
| iTextPDF v2.1.6 + FreeMarker | |
| Stockage | AWS S3 (BUCKET_TEMPLATES) |
| Detection blocking | BlockHound (activé par défaut) |
| Version | 0.32.0-SNAPSHOT |
Architecture interne
flowchart TB
subgraph Controllers
VIC[ViewInfoController]
PVC[PropertiesViewController]
MPVC[MarketPerformanceViewController]
FC[FilterController]
AVC[AccountingViewController]
end
subgraph Listeners["8 SQS Listeners<br/>(MessagingFunctions)"]
L1[ticketModified]
L2[ticketEventModified]
L3[partModified]
L4[contractModified]
L5[accountingEventModified]
L6[fileMetaDataModified]
L7[chargeModified]
L8[marketPerformanceModified]
end
subgraph Services
VS[ViewService]
PS[ProjectionService]
PDF[PDFService]
end
Mongo[(adb-views<br/>projections dénormalisées)]
S3[(S3 templates)]
External[adb-files,<br/>adb-persons,<br/>adb-parts,<br/>adb-contracts]
Controllers --> VS
VS --> Mongo
Listeners --> PS
PS --> Mongo
PS -.appel cross-service<br/>pour enrichir.-> External
PDF --> S3
Controllers --> PDF
Endpoints
| Controller | Path | Rôle |
|---|---|---|
PropertiesViewController | /view/properties | Vue dashboards des propriétés |
MarketPerformanceViewController | /view/properties/{partId}/market-performances | Performance marché par part |
FilterController | /view/filter | Filtres avancés (parts, owners, contracts) |
AccountingViewController | /view/accounting | Vues comptables |
ViewInfoController | /view/info | Module info |
Note : la gateway expose ces endpoints via
/view/*(au singulier).
Modèle de données
erDiagram
PartEntity {
string _id
object denormalized "copies de adb-parts"
}
ContractPartEntry {
string _id
string contractId
string partId
object denormalized
}
AccountingEventEntity {
string _id
date timestamp
object denormalized
}
Collections : parts, contracts_entries, accounting_event (toutes des projections de données originaires d'autres services).
Événements
Émis (SNS)
Pas d'événements émis.
Consommés (8 SQS Listeners)
| Queue | Source |
|---|---|
${VIEWS_TICKET_MODIFIED_QUEUE} | adb-tickets |
${VIEWS_TICKET_EVENT_MODIFIED_QUEUE} | adb-tickets |
${VIEWS_PART_MODIFIED_QUEUE} | adb-parts |
${VIEWS_CONTRACT_MODIFIED_QUEUE} | adb-contracts |
${VIEWS_ACCOUNTING_EVENT_MODIFIED_QUEUE} | adb-accounting |
${VIEWS_FILE_METADATA_MODIFIED_QUEUE} | adb-files |
${VIEWS_CHARGE_MODIFIED_QUEUE} | adb-parts |
${VIEWS_MARKET_PERFORMANCE_MODIFIED_QUEUE} | adb-parts |
DLQ : ${VIEWS_DLQ_TOPIC}.
Dépendances inter-services
flowchart LR
views[adb-views]
files[adb-files]
persons[adb-persons]
parts[adb-parts]
contracts[adb-contracts]
views -->|GET /files/metadata/diagnostics| files
views -->|GET /persons| persons
views -->|GET /parts| parts
views -->|GET /contracts| contracts
ui[adb-ui] -->|GET /view/...| views
web[adb-web/bff] --> views
Configuration & déploiement
Variables d'environnement clés
| Variable | Rôle |
|---|---|
MONGO_DB_URI | Connection string MongoDB |
SECURITY_ISSUER_URI / SECURITY_TOKEN_URI | Keycloak |
CLIENT_ID / CLIENT_SECRET | OAuth2 |
AWS_REGION / AWS_ACCESS_KEY / AWS_SECRET_KEY | AWS |
BUCKET_TEMPLATES | Bucket S3 templates |
VIEWS_*_QUEUE | URLs des 8 queues SQS |
VIEWS_DLQ_TOPIC | DLQ |
BLOCKHOUND_ENABLED | Détection code bloquant (défaut: true) |
state-machine.pool.size | 1000 |
Chart Helm
adb-charts/charts/services/templates/adb-views.yaml. Image : lifeconnect/adb-views.
Liens
- Code :
adb-views/