Files
Froidefond Julien 2d266f89f9 feat(perf): implement performance optimizations for session handling
- 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.
2026-03-10 08:06:47 +01:00

1.6 KiB

Why

Les requêtes Prisma des pages les plus fréquentées chargent trop de données : weather.ts ramène tout l'historique sans borne, les queries de la sessions page incluent des relations profondes inutiles pour l'affichage liste, et aucun cache n'est appliqué sur les requêtes répétées à chaque navigation. Ces optimisations réduisent la taille des payloads et le temps de réponse DB sans changer le comportement.

What Changes

  • Weather historique borné : ajouter take + orderBy createdAt DESC dans src/services/weather.ts, configurable via constante (défaut : 90 entrées)
  • Select fields sur sessions list : remplacer les include profonds par des select avec uniquement les champs affichés dans les cards de liste
  • Index User.name : ajouter @@index([name]) dans prisma/schema.prisma + migration
  • Cache sur requêtes fréquentes : wraper les queries de liste sessions et stats utilisateurs avec unstable_cache + tags, invalidés lors des mutations

Capabilities

New Capabilities

  • query-cache-layer: Cache Next.js sur les requêtes de liste fréquentes avec invalidation par tags

Modified Capabilities

  • Aucune modification de spec comportementale — optimisations internes transparentes

Impact

  • src/services/weather.ts — ajout limite + orderBy
  • src/services/ (tous les services de liste) — includeselect
  • prisma/schema.prisma — ajout @@index([name]) sur User
  • prisma/migrations/ — nouvelle migration pour l'index
  • src/services/ — wrapping unstable_cache sur queries fréquentes
  • src/actions/ — ajout revalidateTag correspondants (complément Phase 2)