adb-parts
Rôle
Service de gestion des biens immobiliers (parts). Une part est l'unité de base de la plateforme : elle peut être un bâtiment, un étage, un appartement, un lot de copropriété, un parking, un local commercial, etc. Le service gère :
- la hiérarchie des parts (un bâtiment contient des étages contiennent des lots),
- les caractéristiques physiques (surface, équipements, charges),
- les actifs financiers associés (valeur, indices),
- les budgets et clés de répartition,
- les ventes (sale).
Stack
| Élément | Valeur |
|---|---|
| Spring Boot | 3.1.3 |
| Java | 18 |
| Port | 8085 |
| Database | MongoDB Atlas — base adb-parts |
| Auth | Keycloak (resource server) |
| Stack réactive | Spring WebFlux + Reactive MongoDB |
| Version | 0.30.0-SNAPSHOT |
| Main class | fr.lifeconnect.adb.part.AdbPartApplication |
Dépend de : adb-common, adb-model, adb-messaging, adb-actions, adb-action-logs.
Architecture interne
flowchart TB
subgraph Controllers
PaC[PartController]
AC[AssetController]
BC[BudgetController]
CC[ChargeController]
SC[SaleController]
OIC[ObjectIdController]
end
subgraph Services
PS[PartService]
AS[AssetService]
BS[BudgetService]
CS[ChargeService]
SS[SaleService]
end
Mongo[(adb-parts<br/>Mongo)]
PaC --> PS
AC --> AS
BC --> BS
CC --> CS
SC --> SS
PS --> Mongo
AS --> Mongo
BS --> Mongo
CS --> Mongo
SS --> Mongo
Persons[adb-persons]
Contracts[adb-contracts]
Utilities[adb-utilities]
PS -.HTTP.-> Persons
SS -.HTTP.-> Contracts
BS -.HTTP.-> Utilities
Endpoints
| Controller | Path de base | Rôle |
|---|---|---|
PartController | /parts | CRUD parts (hiérarchie) |
AssetController | /parts/assets | Actifs financiers |
BudgetController | /parts/budgets | Budgets et lignes budgétaires |
ChargeController | /parts/charges | Charges récupérables / non récupérables |
SaleController | /parts/sales | Ventes de parts |
ObjectIdController | – | Génération d'IDs MongoDB |
ErrorDebugController | /parts/errors | Debug |
Modèle de données
erDiagram
PartEntity ||--o{ PartEntity : "parent → enfants"
PartEntity ||--o{ AssetEntity : "associé à"
PartEntity ||--o{ ChargeEntity : "supporte"
PartEntity ||--o{ BudgetLineEntity : "budgété par"
PartEntity ||--o{ SaleEntity : "vendu via"
PartEntity {
string _id
string parentId
string type "building / floor / unit / parking"
string name
number surface
object address
}
AssetEntity {
string _id
string partId
number value
date acquisitionDate
}
ChargeEntity {
string _id
string partId
number amount
string allocationKey
}
BudgetLineEntity {
string _id
string partId
number amount
string fiscalYear
}
SaleEntity {
string _id
string partId
number price
date saleDate
}
Collections : parts, assets, charges, budget_lines, sales.
Événements
Émis (via SNS)
onPartModifiedonChargeModifiedonMarketPerformanceModified
Consommés
Aucun listener SQS direct.
Dépendances inter-services
flowchart LR
parts[adb-parts]
persons[adb-persons]
contracts[adb-contracts]
utilities[adb-utilities]
parts -->|GET /persons| persons
parts -->|GET /contracts/sellPart| contracts
parts -->|GET /utilities/allocationkey/key/:id| utilities
contracts2[adb-contracts] -->|GET /parts| parts
accounting[adb-accounting] -->|GET /parts| parts
aggregates[adb-aggregates] -->|GET /parts| parts
views[adb-views] -->|GET /parts| parts
Configuration & déploiement
Variables d'environnement
| Variable | Rôle |
|---|---|
MONGO_DB_URI | Connection string MongoDB |
SECURITY_ISSUER_URI | Keycloak issuer |
SECURITY_TOKEN_URI | Token endpoint |
CLIENT_ID / CLIENT_SECRET | Credentials du service |
Chart Helm
adb-charts/charts/services/templates/adb-parts.yaml. Image : lifeconnect/adb-parts.
Liens
- Code :
adb-parts/ - Application :
adb-parts/src/main/java/fr/lifeconnect/adb/part/AdbPartApplication.java