Life ConnectLife Connect
Table of contents
Architecture
Services
Swagger Docs
GitHub
Table of contents
Architecture
Services
Swagger Docs
GitHub
  • Backend (Java / Spring Boot)

    • adb (parent Maven + proxy)
    • adb-persons
    • adb-parts
    • adb-contracts
    • adb-accounting
    • adb-files
    • adb-utilities
    • adb-aggregates
    • adb-views
    • adb-reports
  • Frontend

    • adb-ui
    • adb-web
  • Infrastructure & Outillage

    • adb-charts
    • adb-infrastructure
    • adb-tests-artillery
    • adb-doc
  • Services externes (hors monorepo)

    • adb-tickets (externe)
    • adb-notes (déprécié)
    • adb-graph (externe, statut incomplet)

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émentValeur
Spring Boot3.1.3
Java18
Port8081
DatabaseMongoDB Atlas — base adb-persons
AuthKeycloak (resource server + admin client)
Stack réactiveSpring WebFlux + Reactive MongoDB
Version0.29.0-SNAPSHOT
Main classfr.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

ControllerPath de baseRôle
PersonController/personsCRUD personnes
OrganizationController/persons/organizationsCRUD organisations
TenantController/persons/tenantsGestion locataires
InvitationController/persons/invitationsInvitations utilisateurs
UserController/persons/{personId}/usersComptes utilisateurs Keycloak
CompanySettingsController/persons/companySettingsParamètres d'entreprise
ErrorDebugController/persons/errorsDebug

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
    }
CollectionEntity
personsPersonEntity
organizationOrganizationEntity
invitationsInvitationEntity
company_settingsCompanySettingEntity

É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

VariableRôle
MONGO_DB_URIConnection string MongoDB
SECURITY_ISSUER_URIKeycloak issuer (validation JWT)
SECURITY_TOKEN_URIEndpoint token (Client Credentials)
CLIENT_ID / CLIENT_SECRETCredentials du service
ADMIN_CLIENT_ID / ADMIN_CLIENT_SECRETCredentials admin Keycloak (création utilisateurs)
INVITATION_URIURL 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
Edit this page
Last Updated:
Contributors: gregory
Prev
adb (parent Maven + proxy)
Next
adb-parts