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ètre | Valeur |
|---|---|
| Bucket | documents |
| Accès | Public |
| Taille max | 10 Mo par fichier |
| Types MIME autorisés | image/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.
| Champ | Type | Rôle |
|---|---|---|
id | UUID | Identifiant |
acteur_id | UUID | Acteur propriétaire |
filename | text | Nom du fichier |
mimetype | text | Type MIME |
filesize_original | integer | Taille originale en octets |
url_thumb | text | URL vignette |
url_display | text | URL affichage standard |
url_banner | text | URL bannière |
url_original | text | URL original |
is_pinned | boolean | Document épinglé |
is_enabled | boolean | Document visible publiquement |
order_idx | smallint | Ordre 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 :
- valide le fichier (type, taille) ;
- l'envoie vers Supabase Storage via l'API
service_role; - 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 actuel | Cible |
|---|---|---|
| Bucket | documents public | Idem + buckets spécialisés |
| Upload | Via backend | Idem |
| Variantes | URLs stockées manuellement | Transformation automatique à l'upload |
| CDN | Supabase CDN | Cloudflare 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.