Project

General

Profile

Feature #79

Updated by Redmine Admin about 2 months ago

## Spec — Onglet Régie : suppression PDF (Fiche technique) + validation repas 

 ### Deux défauts liés (même surface frontend) 
 1. **Suppression PDF (Fiche technique)** échoue pour certains événements (surtout récents) : le fichier reste, sans erreur, résumé non mis à jour. 
 2. **Validation repas** : l'icône verte n'apparaît qu'après rechargement. 

 ### Cause racine probable 
 Code frontend React (composants onglet Régie sous src/components/) au-dessus de base44.entities.Event (seam AppClient) + TanStack Query. 
 - **Repas (cache)** : la mutation de validation ne fait pas invalidateQueries / optimistic update sur la query qui alimente l'icône + le statut régie → UI périmée jusqu'au refetch manuel. 
 - **Suppression PDF (delete réel + cache)** : échec UNIQUEMENT sur événements récents → incohérence d'identifiant/forme de champ post-migration Base44→Prisma dans le retrait du fichier de l'Event (matching par URL vs id, liste de fichiers stockée différemment, ou écriture non persistée). Deux volets : (a) corriger le retrait effectif pour TOUS les events, (b) invalider/mettre à jour la liste + le résumé. 

 ### Approche 
 1. Localiser composants Fiche technique + Repas et leurs hooks mutation/query. 
 2. Repas : invalidation/optimistic update dans onSuccess/onMutate. 
 3. PDF : reproduire l'échec sur event récent, corriger le retrait (mismatch id/champ), invalider/mettre à jour liste+résumé. 
 4. Ne pas avaler les erreurs (afficher message si échec). 
 5. Tests de non-régression Régie (ajout fichiers, modif repas) couvrant events récents + anciens. 

 ### Critères d'acceptation 
 - Suppression PDF marche pour TOUS les events (y compris récents), disparition immédiate sans reload, résumé à jour, pas d'erreur silencieuse. 
 - Icône verte de validation repas dès le clic, statut régie en temps réel. 
 - Tests non-régression Régie pour events récents + anciens ; lint + typecheck verts. 

 ### Portée : un seul lot frontend (composants Régie + chemin mutation/cache Event). Pas de découpage. conversation:34

Back