- Introduced a new configuration file `config.yaml` for specifying project context and artifact rules. - Added `.openspec.yaml` files for tracking changes related to performance improvements. - Created design documents outlining the context, goals, decisions, and migration plans for optimizing session performance. - Proposed changes include batching database queries, debouncing event refreshes, purging old events, and implementing loading states for better user experience. - Added tasks and specifications to ensure proper implementation and validation of the new features. These enhancements aim to improve the scalability and responsiveness of the application during collaborative sessions.
31 lines
2.1 KiB
Markdown
31 lines
2.1 KiB
Markdown
## 1. Index User.name (migration Prisma)
|
|
|
|
- [ ] 1.1 Lire `prisma/schema.prisma` et localiser le modèle `User`
|
|
- [ ] 1.2 Ajouter `@@index([name])` au modèle `User`
|
|
- [ ] 1.3 Exécuter `pnpm prisma migrate dev --name add_user_name_index`
|
|
- [ ] 1.4 Vérifier que la migration s'applique sans erreur et que `prisma studio` montre l'index
|
|
|
|
## 2. Weather: limiter le chargement historique
|
|
|
|
- [ ] 2.1 Ajouter la constante `WEATHER_HISTORY_LIMIT = 90` dans `src/lib/types.ts`
|
|
- [ ] 2.2 Lire `src/services/weather.ts` et localiser la query `findMany` des entrées historiques
|
|
- [ ] 2.3 Ajouter `take: WEATHER_HISTORY_LIMIT` et `orderBy: { createdAt: 'desc' }` à la query
|
|
- [ ] 2.4 Vérifier que les calculs de tendances fonctionnent avec un historique partiel
|
|
|
|
## 3. Select fields sur les queries de liste
|
|
|
|
- [ ] 3.1 Lire les services de liste : `src/services/swot.ts`, `motivators.ts`, `year-review.ts`, `weekly-checkin.ts`, `weather.ts`
|
|
- [ ] 3.2 Identifier les `include` utilisés dans les fonctions de liste (pas de détail session)
|
|
- [ ] 3.3 Définir des types `XxxListItem` dans `src/lib/types.ts` avec uniquement les champs affichés en carte
|
|
- [ ] 3.4 Remplacer les `include` profonds par `select` correspondant aux types `XxxListItem` dans chaque service
|
|
- [ ] 3.5 Mettre à jour les composants de liste qui utilisaient les champs supprimés (vérifier les erreurs TypeScript)
|
|
- [ ] 3.6 Vérifier `pnpm build` sans erreurs TypeScript
|
|
|
|
## 4. Cache layer sur requêtes fréquentes
|
|
|
|
- [ ] 4.1 Créer `src/lib/cache-tags.ts` si pas encore fait (sinon compléter) avec les helpers de tags : `sessionTag(id)`, `sessionsListTag(userId)`, `userStatsTag(userId)`
|
|
- [ ] 4.2 Wrapper la fonction de liste sessions dans chaque service avec `unstable_cache(fn, [key], { tags: [sessionsListTag(userId)], revalidate: 60 })`
|
|
- [ ] 4.3 Wrapper la fonction de stats utilisateurs (`getUserStats` ou équivalent) avec `unstable_cache`
|
|
- [ ] 4.4 Vérifier que les Server Actions de création/suppression de session appellent `revalidateTag(sessionsListTag(userId))`
|
|
- [ ] 4.5 Tester l'invalidation : créer une session → vérifier qu'elle apparaît immédiatement dans la liste
|