Aller au contenu principal

Stockage de fichiers

Statut

Document de cadrage architecture — v1.0 — relu le 2026-05-10.

Fournisseur actuel

Le stockage de fichiers est géré par Supabase Storage.

Le bucket principal est documents. Il est public, ce qui permet un accès direct aux URLs sans proxy applicatif.

Configuration du bucket

ParamètreValeur
Bucketdocuments
AccèsPublic
Taille max10 Mo par fichier
Types MIME autorisésimage/jpeg, image/png, image/svg+xml, image/webp, application/pdf

Contrôle d'accès (RLS)

La politique RLS sur Supabase Storage définit :

  • Lecture : publique, sans authentification.
  • Écriture (INSERT) : réservée au rôle service_role (le backend).
  • Suppression (DELETE) : réservée aux administrateurs et au service_role.

Les clients frontend ne peuvent jamais écrire directement dans le bucket.

Modèle Document

La table documents (PostgreSQL via Supabase) référence les fichiers stockés.

ChampTypeRôle
idUUIDIdentifiant
acteur_idUUIDActeur propriétaire
filenametextNom du fichier
mimetypetextType MIME
filesize_originalintegerTaille originale en octets
url_thumbtextURL vignette
url_displaytextURL affichage standard
url_bannertextURL bannière
url_originaltextURL original
is_pinnedbooleanDocument épinglé
is_enabledbooleanDocument visible publiquement
order_idxsmallintOrdre d'affichage

Un trigger Supabase enforce_single_pinned garantit qu'un seul document peut être épinglé par acteur.

Upload

L'upload est piloté par le backend via ActeurWriteService. Le frontend envoie le fichier au backend qui :

  1. valide le fichier (type, taille) ;
  2. l'envoie vers Supabase Storage via l'API service_role ;
  3. enregistre les URLs et métadonnées dans la table documents.

Variantes d'images

Pour chaque document image, plusieurs variantes d'URL peuvent être stockées :

  • url_thumb : vignette (miniature).
  • url_display : affichage standard.
  • url_banner : format bannière.
  • url_original : fichier original non transformé.

État actuel vs cible

AspectÉtat actuelCible
Bucketdocuments publicIdem + buckets spécialisés
UploadVia backendIdem
VariantesURLs stockées manuellementTransformation automatique à l'upload
CDNSupabase CDNCloudflare en frontal

Points à clarifier

  • Stratégie de suppression physique (fichier orphelin après suppression de la ligne).
  • Bucket PlayLoop pour les médias d'affichage dynamique.
  • Gestion des erreurs d'upload partiel.
  • Politique de rétention et nettoyage automatique.