Où sont rangés les fichiers (photos, documents, exports) dans le stockage.
Rangement des fichiers utilisateurs
Un seul rangement, valable pour toutes les catégories : organisation/{id}/{catégorie}/{identifiant}/{nom du fichier} (ou bibliothèque/{catégorie}/... pour le contenu partagé). Catégories : images, documents, pièces jointes.
- Le nom de fichier d’origine est conservé (juste sécurisé, pas transformé) pour les documents et pièces jointes.
- Seules les images perdent leur nom d’origine, remplacé par un identifiant — elles ne sont jamais retéléchargées sous leur nom de départ.
Trois espaces de stockage séparés
Décision — Exports
Les exports suivent le même rangement générique que les uploads (organisation/{id}/{type d'export}/...), plutôt qu’un chemin câblé en dur par type d’export. Un seul principe de rangement dans toute l’application, pas un système à part pour les fichiers générés.
Décision — Assets partagés (branding)
Le bucket assets reste privé par défaut. Seul un sous-dossier dédié aux visuels de marque utilisés dans les emails (logo, icônes) est rendu public — jamais l’ensemble du bucket. Le reste (modèles de PDF, polices) n’a aucune raison d’être accessible sans authentification : ces fichiers sont utilisés par le serveur pour générer des documents, jamais chargés directement par un navigateur ou un client externe.
Principe transverse
L’appartenance d’un fichier à une organisation n’est jamais reconstruite depuis son chemin de stockage — elle est toujours lue depuis la base de données. Ça évite qu’une évolution future du rangement casse silencieusement la suppression ou le décompte de quota.
Quota de stockage