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-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émentValeur
Spring Boot3.1.3
Java18
Port8092
DatabaseMongoDB Atlas — base adb-views
AuthKeycloak (resource server)
Stack réactiveSpring WebFlux + Reactive MongoDB
PDFiTextPDF v2.1.6 + FreeMarker
StockageAWS S3 (BUCKET_TEMPLATES)
Detection blockingBlockHound (activé par défaut)
Version0.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

ControllerPathRôle
PropertiesViewController/view/propertiesVue dashboards des propriétés
MarketPerformanceViewController/view/properties/{partId}/market-performancesPerformance marché par part
FilterController/view/filterFiltres avancés (parts, owners, contracts)
AccountingViewController/view/accountingVues comptables
ViewInfoController/view/infoModule 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)

QueueSource
${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

VariableRôle
MONGO_DB_URIConnection string MongoDB
SECURITY_ISSUER_URI / SECURITY_TOKEN_URIKeycloak
CLIENT_ID / CLIENT_SECRETOAuth2
AWS_REGION / AWS_ACCESS_KEY / AWS_SECRET_KEYAWS
BUCKET_TEMPLATESBucket S3 templates
VIEWS_*_QUEUEURLs des 8 queues SQS
VIEWS_DLQ_TOPICDLQ
BLOCKHOUND_ENABLEDDétection code bloquant (défaut: true)
state-machine.pool.size1000

Chart Helm

adb-charts/charts/services/templates/adb-views.yaml. Image : lifeconnect/adb-views.

Liens

  • Code : adb-views/
Edit this page
Last Updated:
Contributors: gregory
Prev
adb-aggregates
Next
adb-reports