adb-persons
Rôle
Service responsable de toutes les personnes manipulées par la plateforme : propriétaires, locataires, fournisseurs, employés, gérants, indivisions, copropriétés. Gère également les organisations (sociétés), les invitations d'utilisateurs et le provisioning Keycloak.
C'est le seul service qui écrit dans Keycloak pour créer des comptes utilisateurs.
Stack
| Élément | Valeur |
|---|---|
| Spring Boot | 3.1.3 |
| Java | 18 |
| Port | 8081 |
| Database | MongoDB Atlas — base adb-persons |
| Auth | Keycloak (resource server + admin client) |
| Stack réactive | Spring WebFlux + Reactive MongoDB |
| Version | 0.29.0-SNAPSHOT |
| Main class | fr.lifeconnect.adb.person.AdbPersonApplication |
Dépend des modules partagés : adb-common, adb-model, adb-messaging, adb-actions, adb-action-logs.
Architecture interne
flowchart TB
subgraph Controllers
PC[PersonController]
OC[OrganizationController]
TC[TenantController]
IC[InvitationController]
UC[UserController]
CSC[CompanySettingsController]
end
subgraph Services
PS[PersonService]
OS[OrganizationService]
IS[InvitationService]
KCS[KeycloakAdminService]
end
subgraph Storage
Mongo[(adb-persons<br/>Mongo)]
KC[Keycloak]
end
External[adb-files]
PC --> PS
OC --> OS
TC --> PS
IC --> IS
UC --> KCS
PS --> Mongo
OS --> Mongo
IS --> Mongo
KCS --> KC
PS -.HTTP.-> External
Endpoints
| Controller | Path de base | Rôle |
|---|---|---|
PersonController | /persons | CRUD personnes |
OrganizationController | /persons/organizations | CRUD organisations |
TenantController | /persons/tenants | Gestion locataires |
InvitationController | /persons/invitations | Invitations utilisateurs |
UserController | /persons/{personId}/users | Comptes utilisateurs Keycloak |
CompanySettingsController | /persons/companySettings | Paramètres d'entreprise |
ErrorDebugController | /persons/errors | Debug |
OpenAPI / Swagger disponible sous /persons/api-docs.
Modèle de données
erDiagram
PersonEntity ||--o{ OrganizationEntity : "appartient à"
PersonEntity ||--o{ InvitationEntity : "reçoit"
OrganizationEntity ||--|| CompanySettingEntity : "configure"
PersonEntity {
string _id
string firstName
string lastName
string email
string type "natural / legal / unknown"
string organizationId
}
OrganizationEntity {
string _id
string name
string vatNumber
}
InvitationEntity {
string _id
string personId
string status
date expiresAt
}
CompanySettingEntity {
string _id
string organizationId
object settings
}
| Collection | Entity |
|---|---|
persons | PersonEntity |
organization | OrganizationEntity |
invitations | InvitationEntity |
company_settings | CompanySettingEntity |
Événements
Émis (via SNS)
onPersonModified— création / mise à jour / suppression d'une personne.onOrganizationModified— création / mise à jour d'une organisation.
Consommés par adb-contracts, adb-accounting, adb-views.
Consommés
Pas de listener SQS direct — adb-persons est principalement producteur d'événements et dépend de peu de services externes.
Dépendances inter-services
flowchart LR
persons[adb-persons]
files[adb-files]
keycloak[Keycloak]
persons -->|GET /files/...| files
persons -->|admin API<br/>création utilisateurs| keycloak
contracts[adb-contracts] -->|GET /persons| persons
parts[adb-parts] -->|GET /persons| persons
accounting[adb-accounting] -->|GET /persons| persons
aggregates[adb-aggregates] -->|GET /persons| persons
views[adb-views] -->|GET /persons| persons
web[adb-web/bff] --> persons
ui[adb-ui] --> persons
Configuration & déploiement
Variables d'environnement
| Variable | Rôle |
|---|---|
MONGO_DB_URI | Connection string MongoDB |
SECURITY_ISSUER_URI | Keycloak issuer (validation JWT) |
SECURITY_TOKEN_URI | Endpoint token (Client Credentials) |
CLIENT_ID / CLIENT_SECRET | Credentials du service |
ADMIN_CLIENT_ID / ADMIN_CLIENT_SECRET | Credentials admin Keycloak (création utilisateurs) |
INVITATION_URI | URL d'invitation envoyée par email |
Chart Helm
adb-charts/charts/services/templates/adb-persons.yaml — déploie un Deployment + Service Kubernetes. Image Docker : lifeconnect/adb-persons.
Pipeline CI/CD
Bitbucket Pipelines (historique) — la migration vers GitHub Actions est en cours dans le cadre du passage en monorepo.
Liens
- Code :
adb-persons/ - Application :
adb-persons/src/main/java/fr/lifeconnect/adb/person/AdbPersonApplication.java - Configuration :
adb-persons/src/main/resources/application.yml