- Add V0_301_RELEASE_SCOPE.md: P0 (Chat Server fix), C1 (typing, read receipts), P1 (presence), S1 (social enrichi) - Update SCOPE_CONTROL.md to reference v0.301 - Update PROJECT_STATE.md and FEATURE_STATUS.md - Update .cursorrules scope to v0.301
9.6 KiB
Scope v0.301 — Phase 3 Social
Version cible : v0.301 (X=3, Y=1)
Prérequis : v0.203 taguée et mergée dans main
Objectif : Phase 3 Social — Chat avancé, Présence, Social complet
Dernière mise à jour : 20 février 2026
Effort estimé : 5-7 semaines de développement
1. Principe directeur
v0.301 = première version Phase 3 (Social).
Trois axes principaux :
- Chat avancé (Lot C1) : Typing indicators, read receipts, delivered status
- Présence (Lot P1) : Statut en ligne/hors ligne, last seen, liste utilisateurs en ligne
- Social enrichi (Lot S1) : Feed amélioré, posts enrichis, groupes, exploration
2. Contexte — État post v0.203
2.1 Livré en v0.203
| Lot | Feature | Statut |
|---|---|---|
| L | Social Trending (GET /social/trending, cache Redis) | ✅ |
| K | Recherche enrichie (pg_trgm, AND/OR/NOT) | ✅ |
| D1 | Queue collaborative (sessions partagées, polling) | ✅ |
2.2 Fondation existante (à enrichir)
| Domaine | Existant | À ajouter v0.301 |
|---|---|---|
| Chat | WebSocket (veza-chat-server), DM, rooms, messages | Typing, read receipts, delivered — Chat Server doit compiler |
| Présence | PresenceManager (Rust, i32 user_id), non exposé | API REST ou WS, UUID, last_seen, statut |
| Social | Feed, posts, groups, follows, blocks, trending | Enrichissement feed, posts audio/vidéo, exploration |
2.3 Blocage technique — Chat Server Rust
| Composant | État | Action v0.301 |
|---|---|---|
| veza-chat-server | ⚠️ Erreurs SQLx | P0 : Corriger compilation avant Lot C1 |
| veza-stream-server | ⚠️ Imports manquants | Optionnel (hors scope chat) |
Référence : AUDIT_CHAT_SERVER_RUST.md
3. Features IN SCOPE v0.301
3.1 Lot P0 — Correction Chat Server (prérequis Lot C1)
Objectif : Rendre le Chat Server compilable et opérationnel.
Effort : M (3-5 jours)
Référence : AUDIT_CHAT_SERVER_RUST.md, erreurs SQLx
| # | Feature | Tâche détaillée | Critère de sortie |
|---|---|---|---|
| P0.1 | SQLx | Corriger requêtes SQLx (types UUID vs i32, colonnes manquantes) | cargo build --release OK |
| P0.2 | Migrations | Aligner schéma DB avec code (conversations, messages, read_receipts) | Migrations appliquées sans erreur |
| P0.3 | Auth WebSocket | Token JWT en header ou body, pas en query params | Token non exposé dans URL |
| P0.4 | Tests | Démarrer Chat Server, connexion WS fonctionnelle | Connexion établie, messages échangés |
Fichiers clés :
veza-chat-server/src/**/*.rs,veza-chat-server/migrations/
3.2 Lot C1 — Chat avancé (typing, read receipts)
Objectif : Indicateurs de frappe et statuts de lecture.
Effort : M (4-5 jours)
Prérequis : Lot P0 terminé
Référence : Module 5.2, features 174-175 ; CHAT_DELIVERED_AND_TYPING.md
| # | Feature | Tâche détaillée | Chat Server | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| C1.1 | Typing indicators | Broadcast UserTyping sur WS | IncomingMessage::Typing, broadcast OutgoingMessage::UserTyping | TypingIndicator.tsx connecté, debounce 300ms | « X est en train d'écrire... » affiché |
| C1.2 | Read receipts | Marquer message comme lu | Handler MarkAsRead, table read_receipts, types UUID | Envoyer MarkAsRead à réception, afficher « Vu à HH:mm » | Statut lu visible |
| C1.3 | Delivered status | Message reçu (pas encore lu) | Table delivered_status, broadcast MessageDelivered | Envoyer Delivered à réception, afficher « Livré » | Statut livré visible |
Fichiers clés :
- Chat Server :
typing_indicator.rs,read_receipts.rs,websocket/handler.rs - Frontend :
TypingIndicator.tsx,useChatInterface.ts,chatStore.ts, types websocket
3.3 Lot P1 — Présence (statut, last seen)
Objectif : Afficher qui est en ligne et dernière activité.
Effort : M (3-4 jours)
Référence : Module 5.3, features 176-181
| # | Feature | Tâche détaillée | Backend / Chat | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| P1.1 | API Présence | GET /users/:id/presence ou via WebSocket | Backend Go : table user_presence, route REST ; ou Chat Server broadcast | Composant PresenceBadge | Statut (online/away/offline) affiché |
| P1.2 | Last seen | Dernière activité utilisateur | Champ last_seen_at, mise à jour à chaque action | Affichage « Vu il y a X min » | Last seen visible sur profil/chat |
| P1.3 | Liste en ligne | Utilisateurs en ligne par salon/conversation | Chat Server : get_room_users ou équivalent | Liste dans ChatSidebar ou conversation | Liste utilisateurs en ligne affichée |
Option A : Backend Go — table user_presence, route REST, mise à jour via middleware ou jobs.
Option B : Chat Server — PresenceManager existant, exposer via WebSocket ou API proxy.
Fichiers clés :
- Backend :
user_presencemodel,presence_handler.go,routes_users.go - Chat Server :
presence.rs(UUID au lieu de i32) - Frontend :
PresenceBadge.tsx,UserAvatar.tsx,ChatSidebar.tsx
3.4 Lot S1 — Social enrichi (feed, posts, exploration)
Objectif : Enrichir le feed social et l'exploration.
Effort : L (5-7 jours)
Référence : Module 6, features 201-215
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| S1.1 | Posts enrichis | Posts avec track audio, image, vidéo | Vérifier modèles posts (attachments, track_id) | SocialViewFeedItem : afficher player inline si track | Post avec track jouable |
| S1.2 | Feed pagination | Curseur ou offset, infinite scroll | GET /social/feed?cursor=&limit=20 | useInfiniteQuery, IntersectionObserver | Scroll infini fonctionnel |
| S1.3 | Exploration | Page découverte (tendances, suggestions) | GET /social/explore (trending + suggested users) | Page /explore ou onglet Social | Page exploration avec trending + suggestions |
| S1.4 | Réactions posts | Like, comment, repost | Routes existantes (likes, comments) ; repost si manquant | Boutons like/comment/repost sur SocialViewFeedItem | Interactions fonctionnelles |
| S1.5 | Filtres feed | Tous / Abonnements / Groupes | Paramètre type dans GET /social/feed | Onglets ou filtre dans SocialView | Filtrage feed par source |
Fichiers clés :
- Backend :
social_handler.go,social/service.go, routes/social/feed,/social/explore - Frontend :
SocialViewFeed.tsx,SocialViewFeedItem.tsx,SocialViewSidebar.tsx,useSocialView.ts
4. Récapitulatif par lot
| Lot | Priorité | Effort | Dépendances |
|---|---|---|---|
| P0 | Critique | M (3-5 j) | Aucune |
| C1 | Haute | M (4-5 j) | P0 |
| P1 | Haute | M (3-4 j) | Optionnel P0 (si via Chat Server) |
| S1 | Haute | L (5-7 j) | Aucune (Backend Go) |
Ordre recommandé : P0 → C1, P1, S1 (P1 et S1 en parallèle possible).
5. Features HORS SCOPE v0.301
| Feature | Raison | Version cible |
|---|---|---|
| Appels audio/vidéo | Complexité, WebRTC | v0.302+ |
| Chiffrement E2E messages | Effort majeur | v0.303+ |
| Notifications push (FCM/APNs) | Infra externe | v0.302+ |
| Mode invisible avancé | P1.3 suffit pour v0.301 | v0.302 |
| Rich presence (track en cours) | Dépend player sync | v0.302 |
6. Migrations et schémas
| Migration | Description |
|---|---|
| 088 | user_presence (user_id, status, last_seen_at, status_message) — si Option A Lot P1 |
| — | Chat Server : migrations 001, 002 existantes ; corrections si nécessaire |
7. Critères de livraison v0.301
- Chat Server compile et démarre sans erreur
- Typing indicators fonctionnels (frontend + Chat Server)
- Read receipts et delivered status fonctionnels
- Présence (online/away/offline) visible sur au moins un écran (profil ou chat)
- Feed social avec pagination et posts enrichis (track inline)
- Page ou onglet exploration avec trending + suggestions
- Tests :
go test ./...OK,npm run buildOK - Documentation : FEATURE_STATUS, PROJECT_STATE, CHANGELOG mis à jour
8. Checklist pré-merge
- Tous les lots IN SCOPE terminés ou reportés (avec ticket)
- Pas de régression sur v0.203
- SCOPE_CONTROL.md référence V0_301_RELEASE_SCOPE.md
- FEATURE_STATUS.md mis à jour
- CHANGELOG v0.301
- MSW handlers pour nouvelles routes (si pertinent)
9. Transition vers v0.302
À l'issue de v0.301 :
- Phase 3 Social démarre (~390 / 600 features)
- Prochaine version : v0.302 — Chat (appels, notifications push), Social (groupes avancés)
- Document de scope :
V0_302_RELEASE_SCOPE.md(à créer après tag v0.301)
Références
- V0_203_RELEASE_SCOPE.md — Version précédente
- SCOPE_CONTROL.md — Processus anti-scope-creep
- FEATURE_STATUS.md — Statut des features
- PROJECT_STATE.md — État actuel du projet
- veza_full_features_list.md — Cible v1.0 (600 features)
- AUDIT_CHAT_SERVER_RUST.md — État Chat Server
- CHAT_DELIVERED_AND_TYPING.md — Spec typing/receipts