Affiner sync projets + publication skills Claude/Codex

This commit is contained in:
MaksTinyWorkshop
2026-03-28 12:13:26 +01:00
parent 52daf6b3af
commit b6c2aba8e2
6 changed files with 240 additions and 3 deletions

View File

@@ -193,6 +193,67 @@ Sans ce check, les erreurs 404/500 passent silencieusement si le service appelan
---
2026-03-28 — app-alexandrie
FILE_UPDATE_PROPOSAL
Fichier cible : knowledge/frontend/risques/state.md
Pourquoi :
Anti-pattern découvert en review 5.3 : `followIsLoading: boolean` global dans un store Zustand bloquait tous les boutons "Suivre" de l'annuaire simultanément. Un seul flag booléen ne peut pas représenter des états par entité.
Proposition :
## État de chargement par entité dans les stores Zustand — préférer un Set<string>
Quand plusieurs instances d'un même composant peuvent déclencher une action async en parallèle (ex: bouton "Suivre" sur chaque carte d'une liste), un flag booléen global `isLoading: boolean` est insuffisant — il désactive toutes les instances dès qu'une action est en cours.
Pattern correct :
```typescript
// État
followingInProgress: Set<string>; // userId actuellement en cours de follow/unfollow
// Selector
isFollowInProgress: (userId: string) => boolean;
// dans le store : (userId) => get().followingInProgress.has(userId)
// Mutation
set((state) => {
const next = new Set(state.followingInProgress);
next.add(targetUserId);
return { followingInProgress: next };
});
// Après succès/erreur : next.delete(targetUserId)
```
Appliquer ce pattern pour toute action async dans une liste (like, bookmark, follow, reaction, etc.).
---
2026-03-28 — app-alexandrie
FILE_UPDATE_PROPOSAL
Fichier cible : knowledge/frontend/risques/state.md
Pourquoi :
Review 5.3 : `followError` partagé entre les actions follow/unfollow et les erreurs de chargement des listes followers/followings. Un ancien `followError` de type "ALREADY_FOLLOWING" pouvait s'afficher comme "Erreur de chargement" dans l'écran followers.
Proposition :
## Séparer les erreurs d'action et les erreurs de liste dans les stores Zustand
Quand un store gère à la fois des actions (mutations) et des listes (fetches paginés), ne pas partager la même clé d'erreur. Nommer explicitement :
```typescript
followError: string | null; // erreur de followUser/unfollowUser
followersError: string | null; // erreur de fetchFollowers/loadMoreFollowers
followingsError: string | null; // erreur de fetchFollowings/loadMoreFollowings
```
Les écrans de liste doivent afficher leur propre erreur (`followersError`) et non l'erreur d'action globale (`followError`).
---
# Format attendu
Chaque proposition doit suivre ce format :