Skip to content
StableAudienceDevSécuritéAudit banqueComplianceOwner@platform-teamDernière revue2026-05-21

Service File Service

Gestion centralisée du cycle de vie des fichiers de la plateforme (KYC, KYB, photos de profil, PDFs). Upload, stockage sur Firebase Cloud Storage, signed URLs pour accès contrôlé, vérification de contenu côté plateforme.

Identité

AttributValeur
Package@nex/service-file-service v0.0.1
Port3000
Schéma DBfile_service (PostgreSQL)
Swaggerservices/file-service/src/main.ts:39 — actif
README✅ présent
Owner@platform-team

Responsabilité

  • Réception multipart d'un fichier upload.
  • Stockage sur Firebase Cloud Storage (provider FirebaseStorageProvider, src/storage/providers/firebase-storage.provider.ts).
  • Génération de signed URLs avec expiration paramétrable pour accès en lecture.
  • Vérification du fichier (status verify) après revue compliance.
  • Téléchargement direct sécurisé via endpoint dédié.
  • Génération de PDF (reçus, déclarations) via pdfkit.
  • Cas d'usage spécifique : upload public pour le flow reset-pin (lien temporaire non authentifié).

Surface API

4 controllers :

ControllerRoute racineEndpoints
files.controller.ts/files10
pdf.controller.ts/pdf2
public-upload.controller.ts/files/public-upload/reset-pin1
app.controller.ts/1 (health)

Détail /files

MéthodeRouteRôle
POST/filesUpload multipart
GET/filesListe (admin)
GET/files/meListe des fichiers de l'utilisateur courant
GET/files/:idMétadonnées
GET/files/:id/signed-urlSigned URL pour download
GET/files/:id/downloadDownload direct authentifié
PATCH/files/:idMise à jour métadonnées
PATCH/files/:id/verifyMarquage validation compliance
DELETE/files/:idSuppression logique

Modèle de données

1 entity : File (src/files/entities/file.entity.ts).

Migrations (src/migrations/) :

  • 1730000000000-CreateFileServiceSchema.js
  • 1730000000001-CreateFilesTable.js

Politique de contenu

AspectValeur
MIME types autorisésimage/jpeg, image/jpg, image/png, image/gif, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document
Taille max10 MB
Cas d'usagephotos KYC, documents KYB, justificatifs

Stockage

Firebase Cloud Storage via SDK Firebase Admin (firebase-admin v13.5.0). Authentification serveur-à-serveur. Signed URLs avec TTL court.

À documenter / confirmer :

  • Localisation des buckets (région).
  • Chiffrement at-rest (par défaut Firebase, à confirmer pour scope audit).
  • Politique de rétention par type de fichier.
  • Droit à l'oubli RGPD : suppression effective vs soft-delete.

Ces points sont marqués dans /security/known-gaps.

Dépendances

  • Intra-monorepo : aucune dépendance directe à @nex/shared-* détectée.
  • Externes : firebase-admin, @nestjs/platform-express, multer, pdfkit, uuid, typeorm, pg.

Trust boundaries

Le service est appelé via l'orchestrator. Les signed URLs Firebase sont produites côté Nex et expirent rapidement — un audit doit vérifier que la TTL est suffisamment courte pour limiter la fenêtre de fuite si l'URL est captée. À documenter dans threat-model.md (Lot 5).

Pages à produire

  • api.md — détail des endpoints (OpenAPI auto-généré).
  • data-model.md — table files (colonnes, indexes, FK).
  • runbook.md — quota Firebase atteint, corruption fichier, restauration.
  • threat-model.md — STRIDE, focus sur PII KYC/KYB.

Nex — Plateforme fintech CEMAC