fix(pagination) : éviter la troncature silencieuse des collections paginées (LST-52) #9
Reference in New Issue
Block a user
Delete Branch "fix/lst-52-pagination-audit"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
LST-52 — Audit : listes impactées par la pagination API Platform non gérée
Suite au bug LST-51 (time entries tronquées à 30 par la pagination par défaut, lue sur une seule page côté front), audit complet de l'app pour éviter que le piège se reproduise + garde-fous de prévention.
Le mécanisme du piège
extractHydraMembers()(frontend/utils/api.ts) ne lit que la première page (hydra:member), il ignorehydra:view.next→ toute liste > 30 sur une ressource paginée est tronquée silencieusement.Audit (croisement back × front)
Beaucoup de gros suspects côté front se sont avérés déjà protégés côté back :
/tasksfalse✅/time_entries/range+/activefalse✅ (route dédiée bornée)/absence_requests/absence_policies/absence_balancesfalse✅/task_documents/task_recurrencesfalse✅/notificationsfetchAllHydra()côté front/clientspaginationEnabled: false/projectspaginationEnabled: false/userspaginationEnabled: false/task_tagspaginationEnabled: false/task_groups/task_statuses/task_priorities/task_efforts/workflowspaginationEnabled: false(robustesse)/gitea/*/bookstack/*Changements
Back —
paginationEnabled: falsesur leGetCollectiondes ressources consommées intégralement et à volume borné/modéré :Client,Project,User,TaskTag,TaskGroup,TaskStatus,TaskPriority,TaskEffort,Workflow. (Cohérent avec le choix déjà fait pourTask/TimeEntry.)Front — nouveau helper
fetchAllHydra()(frontend/utils/api.ts) qui parcourt toutes les pages viahydra:totalItems+ parampage(garde-fou anti-boucle à 1000 pages). Utilisé pour/notifications, qui reste paginé côté back (volume non borné).Doc — règle anti-troncature ajoutée au
CLAUDE.mddu projet : toute collection lue viaextractHydraMembersdoit être non paginée (volume borné), gérée viafetchAllHydra(), ou servie par une route dédiée bornée.Vérifications
make php-cs-fixer-allow-risky: 0 correction.make test: 89 tests OK (les 16 « Notices » sont des dépréciations préexistantes).nuxi typecheck: aucune erreur sur les fichiers modifiés (erreurs préexistantes ailleurs, hors scope).Closes LST-52.