veza/docs/V0_301_RELEASE_SCOPE.md
senke e8750df475 docs: prepare v0.301 Phase 3 Social implementation
- 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
2026-02-21 05:13:43 +01:00

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 :

  1. Chat avancé (Lot C1) : Typing indicators, read receipts, delivered status
  2. Présence (Lot P1) : Statut en ligne/hors ligne, last seen, liste utilisateurs en ligne
  3. 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_presence model, 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 build OK
  • 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