- 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.
2.1 KiB
2.1 KiB
1. Index User.name (migration Prisma)
- 1.1 Lire
prisma/schema.prismaet localiser le modèleUser - 1.2 Ajouter
@@index([name])au modèleUser - 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 studiomontre l'index
2. Weather: limiter le chargement historique
- 2.1 Ajouter la constante
WEATHER_HISTORY_LIMIT = 90danssrc/lib/types.ts - 2.2 Lire
src/services/weather.tset localiser la queryfindManydes entrées historiques - 2.3 Ajouter
take: WEATHER_HISTORY_LIMITetorderBy: { 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
includeutilisés dans les fonctions de liste (pas de détail session) - 3.3 Définir des types
XxxListItemdanssrc/lib/types.tsavec uniquement les champs affichés en carte - 3.4 Remplacer les
includeprofonds parselectcorrespondant aux typesXxxListItemdans 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 buildsans erreurs TypeScript
4. Cache layer sur requêtes fréquentes
- 4.1 Créer
src/lib/cache-tags.tssi 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 (
getUserStatsou équivalent) avecunstable_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