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.
This commit is contained in:
29
openspec/changes/perf-data-optimization/proposal.md
Normal file
29
openspec/changes/perf-data-optimization/proposal.md
Normal file
@@ -0,0 +1,29 @@
|
||||
## 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) — `include` → `select`
|
||||
- `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)
|
||||
Reference in New Issue
Block a user