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-files

Rôle

Service de stockage de documents : upload, download, suppression et concaténation de fichiers (PDF principalement). Combine AWS S3 pour les binaires et MongoDB pour les métadonnées (nom, taille, propriétaire, tags, lien vers l'entité métier).

C'est un service feuille : il n'appelle aucun autre service métier. Il est consommé par presque tous les autres services qui ont besoin de stocker des documents.

Stack

ÉlémentValeur
Spring Boot3.1.3
Java18
Port8083
DatabaseMongoDB Atlas — base adb-files
Object storageAWS S3 (bucket BUCKET_FILES)
AuthKeycloak (resource server)
Stack réactiveSpring WebFlux + Reactive MongoDB
Version0.27.0-SNAPSHOT

Modules Maven internes

  • adb-files-model — DTOs et entités exposés.
  • adb-files-app — application Spring Boot exécutable.
  • adb-files-client — client Java consommable par les autres services.

Architecture interne

flowchart TB
    Client[Client adb-*<br/>via FQDN.FILES]

    subgraph adb-files
        FC[FileController]
        FMC[FileMetadataController]
        FS[FileService]
        FMS[FileMetadataService]
        FF[FileFunction<br/>SQS Listener]
    end

    Mongo[(adb-files<br/>files)]
    S3[(S3<br/>BUCKET_FILES)]
    SNS[SNS topic<br/>onFileUploaded]
    SQS[SQS queue<br/>onFileUploaded]

    Client -->|POST /files| FC
    Client -->|GET /files/:id| FC
    Client -->|GET /files/metadata| FMC

    FC --> FS
    FMC --> FMS

    FS --> S3
    FS --> Mongo
    FMS --> Mongo

    FS -.publish.-> SNS
    SNS --> SQS
    SQS --> FF
    FF --> Mongo

Endpoints

ControllerPathRôle
FileController/filesUpload, download, delete, concat PDF
FileMetadataController/files/metadataMétadonnées (recherche, listing, signed URLs)

Endpoints clés

  • POST /files — upload multipart (renvoie un fileId).
  • GET /files/{id} — download.
  • DELETE /files/{id} — suppression S3 + métadonnées.
  • GET /files/pdf?ids=a,b,c — concaténation PDF de plusieurs fichiers.
  • GET /files/metadata/list?q=... — recherche par tag, propriétaire, etc.
  • GET /files/metadata/diagnostics?q=... — métadonnées enrichies (utilisé par adb-views).

Modèle de données

erDiagram
    FileMetaDataEntity {
        string _id
        string s3Key
        string fileName
        string mimeType
        number size
        string ownerPersonId
        array tags
        date uploadedAt
    }

Une seule collection : files.

Événements

Émis (SNS)

  • onFileUploaded — déclenché à chaque upload réussi.
  • onFileMetaDataModified — modification de tags ou métadonnées.

Consommés (SQS Listeners)

  • onFileUploaded — auto-listening pour traitements asynchrones (extraction OCR, génération de thumbnails, etc.).

DLQ : ${FILES_DLQ_TOPIC}.

Dépendances inter-services

flowchart LR
    files[adb-files]
    s3[(AWS S3)]

    files --> s3

    persons[adb-persons] -->|GET /files| files
    contracts[adb-contracts] -->|POST/GET/DELETE /files| files
    accounting[adb-accounting] -->|POST/GET /files| files
    aggregates[adb-aggregates] -->|GET /files/metadata/list| files
    views[adb-views] -->|GET /files/metadata/diagnostics| files
    reports[adb-reports] -.via aggregates.-> files

adb-files n'appelle aucun autre service métier (ne consomme pas de FQDN).

Configuration & déploiement

Variables d'environnement

VariableRôle
MONGO_DB_URIConnection string MongoDB
SECURITY_ISSUER_URI / SECURITY_TOKEN_URIKeycloak
CLIENT_ID / CLIENT_SECRETOAuth2
AWS_REGION (eu-west-1)AWS region
AWS_ACCESS_KEY / AWS_SECRET_KEYCredentials AWS
BUCKET_FILESBucket S3 (ex : dev.files.life-connect.fr)
FILES_FILE_UPLOADED_QUEUEURL queue SQS
FILES_DLQ_TOPICDead-letter queue

Chart Helm

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

Liens

  • Code : adb-files/
  • Doc fonctionnelle : technical-epics/files/
Edit this page
Last Updated:
Contributors: gregory
Prev
adb-accounting
Next
adb-utilities