Skip to content

Stockage de fichiers

Présentation

Le stockage de fichiers est géré par Supabase Storage qui utilise MinIO comme moteur de stockage objet. Les fichiers sont organisés en buckets et accessibles via des URLs signées.

Buckets disponibles

BucketContenu
documents-chantierJustificatifs de dépenses, documents de commandes, pièces jointes
photos-chantierPhotos des phases de chantier, photos du journal

Organisation des fichiers

Les fichiers sont organisés selon la structure suivante :

documents-chantier/
  {user_id}/
    {chantier_id}/
      depenses/
        {depense_id}.pdf
      commandes/
        {bon_id}/
          facture.pdf
      phases/
        {phase_id}/
          photo.jpg

Accès aux fichiers

Les fichiers ne sont pas publics. L'accès se fait via des URLs signées avec une durée d'expiration.

// Générer une URL signée valide 5 minutes
const { data } = await db.storage
  .from('documents-chantier')
  .createSignedUrl(path, 300)

if (data?.signedUrl) window.open(data.signedUrl, '_blank')

Upload d'un fichier

// Upload d'un fichier
const { error } = await db.storage
  .from('documents-chantier')
  .upload(path, file)

Le chemin doit être unique. En cas de conflit, utiliser l'option upsert :

await db.storage
  .from('documents-chantier')
  .upload(path, file, { upsert: true })

Suppression d'un fichier

await db.storage
  .from('documents-chantier')
  .remove([path])

Limites

ParamètreValeur
Taille maximale par fichier50 Mo
Types acceptésPDF, JPG, PNG, WEBP, DOCX, XLSX
Durée maximale des URLs signées1 heure

Table pieces_jointes

Chaque fichier uploadé est référencé dans la table pieces_jointes avec les informations suivantes :

ColonneDescription
idIdentifiant unique
chantier_idChantier concerné
depense_idDépense associée si justificatif
bon_commande_idBon de commande associé
nom_fichierNom original du fichier
storage_pathChemin dans le bucket
type_fichierjustificatif_depense, document_commande, photo_phase
uploaded_parEmail de l'utilisateur ayant uploadé
created_atDate d'upload

Maintenance

Les fichiers orphelins (non référencés dans pieces_jointes) peuvent être nettoyés périodiquement depuis la console Supabase :

https://supabase.waali.at
Storage > documents-chantier > Parcourir

BTP Chantier Pro