Skip to content

BDD-37 — Pagination de la liste des fichiers espace admin

1. User Story

En tant que super administrateur Je veux paginer la liste des fichiers d'un dossier client Afin de consulter facilement un grand nombre de fichiers

2. Criteres d'acceptance

Mêmes règles que BDD-36, appliquées à l'espace admin :

  1. La liste des fichiers d'un dossier est paginée côté front à partir des métadonnées renvoyées par GET /folders/:uuid/documents
  2. La pagination n'est pas affichée si le total est inférieur ou égal à la limite par page
  3. La pagination est affichée si le total dépasse la limite
  4. Le changement de page déclenche un nouvel appel avec le bon paramètre page
  5. La limite par défaut est 6 fichiers par page
  6. La pagination s'applique à chaque dossier ouvert indépendamment (reset à la page 1 lors du changement de dossier)

3. Perimetre fonctionnel

  • Page front: front/src/pages/admin/folders/AdminFolderDetailPage.vue
  • Store front: front/src/stores/folder-store.js
  • Endpoint back: GET /folders/:uuid/documents

4. Points de verification

  • Le header Fichiers déposés affiche x fichier(s) à partir de currentFolderDocumentsTotal
  • q-pagination apparait uniquement si documentsTotalPages > 1
  • Le calcul du nombre de pages suit ceil(total / limit)
  • Le clic sur une page appelle folderStore.fetchFolderDocuments(folderUuid, { page: p })
  • La navigation vers un nouveau dossier remet currentFolderDocumentsPage à 1

5. Tests associes

  • Tests unitaires back:

    • back/src/api/folders/folder.service.spec.ts
      • retourne les documents paginés avec take et skip
      • applique le skip correct pour la page 2
      • retourne { items, total, page, limit }
  • Tests unitaires front:

    • front/src/__tests__/pages/admin/folders/AdminFolderDetailPage.spec.js
      • masque la pagination si total <= limit
      • affiche la pagination si total > limit
      • calcule le nombre de pages
      • appelle fetchFolderDocuments(uuid, { page: 2 }) au clic
      • affiche le total depuis currentFolderDocumentsTotal
    • front/src/__tests__/stores/folder-store.spec.js
      • charge GET /folders/:uuid/documents avec page=1 et limit=6
      • accepte des paramètres page/limit personnalisés
      • réutilise la page courante pour le même dossier
      • reset à la page 1 lors du changement de dossier
  • Tests e2e front (Playwright mock):

    • front/e2e/pages/admin/admin-folder-detail.spec.js
      • affiche les fichiers de la page 1
      • masque la pagination si total <= limit
      • affiche la pagination et charge la page 2 pour 7 fichiers
      • affiche le total correct et non documents.length

6. Notes d'implementation

  • Le backend utilise Promise.all([findMany, count]) pour optimiser la requête
  • Le store encode l'indépendance par dossier : l'uuid courant est tracé dans currentFolderUuid et la pagination est reset automatiquement lors d'un changement de dossier
  • La limite par défaut est 6 (identique à BDD-36)