Skip to content

Optimiser les performances de MiningTable (PrimeVue DataTable) #2731

@baderdean

Description

@baderdean

Contexte

La table de contacts de LeadMiner devient lente lorsque le dataset dépasse ~1000 enregistrements.
La pagination est déjà en place et doit être conservée.

Objectif

Optimiser le rendu frontend sans modifier l'expérience utilisateur ni les fonctionnalités métier.

Contraintes obligatoires

  • Conserver la pagination existante
  • Conserver les colonnes visibles par défaut
  • Conserver le bouton pi pi-id-card
  • Conserver le comportement des filtres
  • Conserver les options DataTable: showGridlines, reorderableColumns, resizableColumns
  • Ne pas modifier l'API backend
  • Ne pas remplacer PrimeVue DataTable
  • Ne pas introduire de virtual scroll
  • Ne pas supprimer de fonctionnalités métier

Fichiers concernés

  • frontend/src/components/mining/table/MiningTable.vue
  • frontend/src/stores/filters.ts
  • frontend/src/components/icons/SocialLinksAndPhones.vue
  • frontend/src/components/icons/NormalizedLocation.vue

Travaux à réaliser

  1. Stabiliser la référence de l'array rows
  2. Vérifier dataKey stable (id si disponible, sinon email)
  3. Supprimer les dépendances directes aux stores dans les cellules (aliases computed)
  4. Remplacer les includes() en cellules par une map de visibilité computed
  5. Préparer les données avec preparedRows
  6. Optimiser la colonne Contact (montage conditionnel de composants lourds)
  7. Limiter l'affichage des tags (max 2 + +N)
  8. Simplifier les cellules statut/consentement (HTML simple si possible)
  9. Déplacer les calculs hors templates
  10. Ajouter un debounce 200-300ms à la recherche globale
  11. Réduire la profondeur DOM des cellules
  12. Stabiliser la hauteur des lignes pour fluidifier le scroll

Critères d'acceptation

  • Même UX et mêmes fonctionnalités métier
  • Moins de rerenders globaux
  • Moins de composants montés par ligne
  • Moins de calculs dans les cellules
  • Scroll plus fluide sur dataset >1000 lignes

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions