Skip to content

BDD-83 — Suppression de fichier

1. User Story

En tant qu'utilisateur connecté,
Je veux pouvoir supprimer un fichier que j'ai déposé dans mon espace,
Afin de garder mon dossier client propre et à jour.

En tant que super admin,
Je veux pouvoir supprimer n'importe quel fichier,
Afin de modérer et gérer le contenu de la plateforme.

2. Critères d'acceptation

  1. Une action "Supprimer" est disponible sur chaque fichier via le menu d'actions.
  2. Une confirmation explicite est demandee avant suppression.
  3. Apres confirmation, le fichier disparait de la liste (refresh ou mise a jour immediate).
  4. Une notification de succes est affichee si la suppression aboutit.
  5. Une notification d'erreur est affichee en cas d'echec.
  6. Le fichier est supprime en base et sur S3.

3. Périmètre fonctionnel

Backend

FichierRôle
back/src/api/documents/document.controller.tsEndpoint DELETE /documents/:uuid
back/src/api/documents/document.service.tsVerification des droits, suppression en base et sur S3
back/src/exceptions/document.exceptions.tsExceptions metier (acces interdit, document introuvable, etc.)

Frontend

FichierRôle
front/src/components/documents/DocumentListItem.vueAction Supprimer dans le menu contextuel fichier
front/src/pages/admin/folders/AdminFolderDetailPage.vueConfirmation utilisateur + refresh de la liste
front/src/stores/folder-store.jsAppel API de suppression du document

4. Endpoints API (rappel)

MéthodeCheminDescription
DELETE/documents/:uuidSuppression definitive d'un document

5. Règles métier implémentées

  • Un utilisateur standard ne peut supprimer que les fichiers de son entreprise.
  • Un super administrateur peut supprimer tous les fichiers.
  • Une confirmation utilisateur est obligatoire avant suppression.
  • Si l'utilisateur n'a pas les droits, l'API retourne 403.
  • Si le document n'existe pas (ou deja supprime), l'API retourne 404.
  • La suppression supprime la metadonnée en base et le fichier physique sur S3.

6. Points de vérification

  • Le menu d'action fichier affiche bien Supprimer.
  • La modale de confirmation affiche le nom du fichier cible.
  • Le bouton de confirmation declenche bien DELETE /documents/:uuid.
  • Le fichier disparait de la liste apres succes.
  • Les erreurs API sont remontees en toast utilisateur.

7. Tests associés

Backend (unitaires)

  • back/src/api/documents/document.service.spec.ts
    • suppression autorisee (meme entreprise)
    • refus 403 si acces interdit
    • retour 404 si document introuvable
    • suppression S3 bien declenchee

Frontend (unitaires)

  • front/src/__tests__/components/documents/DocumentListItem.spec.js
    • action Supprimer disponible dans le menu
  • front/src/__tests__/pages/admin/folders/AdminFolderDetailPage.spec.js
    • ouverture de confirmation et appel de suppression
    • notification succes / echec

8. Notes d'implémentation

  • Le libelle de confirmation doit etre explicite sur l'irreversibilite de l'action.
  • La logique de droits doit rester centralisee cote backend (ne pas faire confiance au frontend).
  • En cas d'echec S3, remonter une erreur metier sanitisee et exploitable cote UI.