adb-reports
Rôle
Service de génération de documents PDF : contrats signés, lettres de résiliation, rapports comptables, notifications. Combine FreeMarker (templates HTML stockés en base) et iTextPDF (rendu HTML → PDF).
C'est le seul consommateur direct de adb-aggregates : il appelle ce dernier pour récupérer des modèles consolidés (contrat + persons + parts) et les injecter dans les templates.
Stack
| Élément | Valeur |
|---|---|
| Spring Boot | 3.1.3 |
| Java | 18 |
| Port | 8090 |
| Database | MongoDB Atlas — base adb-reports |
| Auth | Keycloak (resource server) |
| Stack réactive | Spring WebFlux + Reactive MongoDB |
iTextPDF v4.0.2 (com.itextpdf:html2pdf) | |
| Templating | FreeMarker (spring-boot-starter-freemarker) |
| Stockage | AWS S3 (BUCKET_TEMPLATES) |
| Tracing | Micrometer Tracing (Brave) |
| Version | 0.18.0-SNAPSHOT |
Dépend du module : adb-aggregates-model (consommé en dépendance Maven pour les DTOs d'agrégats).
Architecture interne
flowchart TB
Client[Client adb-ui<br/>ou adb-web]
subgraph adb-reports
RC[ReportsController]
TC[TemplateController]
TMC[TemplateMetaDataController]
NGC[NotificationGeneratorController]
RS[ReportService]
TS[TemplateService]
FM[FreeMarker engine]
IT[iText html2pdf]
end
Mongo[(adb-reports<br/>templates,<br/>template_meta_data)]
S3[(S3 templates)]
Aggregates[adb-aggregates]
Contracts[adb-contracts]
Client -->|GET /reports/contracts/:id| RC
Client -->|GET /reports/templates| TC
RC --> RS
TC --> TS
TMC --> TS
RS -->|fetch enriched data| Aggregates
RS -->|fetch template values| Contracts
RS --> TS
TS --> Mongo
TS --> S3
RS --> FM
FM --> IT
IT -->|PDF bytes| Client
Endpoints
| Controller | Path | Rôle |
|---|---|---|
ReportsController | /reports | Génération de rapports |
TemplateController | /reports/templates | Gestion des templates |
TemplateMetaDataController | /reports/metadata | Métadonnées de templates |
NotificationGeneratorController | /notifications | Génération de notifications |
Endpoints clés
GET /reports/contracts/{contractId}→ PDF du contrat.GET /reports/contracts/{contractId}/resumptionOfLeasePDF→ PDF de résiliation.GET /reports/info→ module info.
Modèle de données
erDiagram
TemplateEntity ||--|| TemplateMetaDataEntity : "métadonnées"
TemplateEntity {
string _id
string name
string content "HTML + FreeMarker"
string version
}
TemplateMetaDataEntity {
string _id
string templateId
string description
array variables
}
Collections : templates, template_meta_data.
Événements
Aucun. adb-reports est purement synchrone (consommé sur demande).
Dépendances inter-services
flowchart LR
reports[adb-reports]
aggregates[adb-aggregates]
contracts[adb-contracts]
reports -->|GET /aggregates/contracts/:id| aggregates
reports -->|GET /contracts/.../templateValues| contracts
ui[adb-ui] -->|GET /reports/...| reports
web[adb-web/bff] --> reports
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 |
AWS_REGION / AWS_ACCESS_KEY / AWS_SECRET_KEY | AWS |
BUCKET_TEMPLATES | Bucket S3 templates |
Chart Helm
adb-charts/charts/services/templates/adb-reports.yaml. Image : lifeconnect/adb-reports.
Liens
- Code :
adb-reports/