veza/docs/V0_302_RELEASE_SCOPE.md

9.1 KiB

Scope v0.302 — Phase 3 Social (suite)

Version cible : v0.302 (X=3, Y=2)
Prérequis : v0.301 taguée et mergée dans main
Objectif : Chat (appels, notifications), Social (groupes avancés), Présence enrichie
Dernière mise à jour : 20 février 2026
Effort estimé : 6-8 semaines de développement


1. Principe directeur

v0.302 = suite Phase 3 Social.

Quatre axes principaux :

  1. Groupes avancés (Lot S2) : Demander à rejoindre, inviter, rôles, feed groupes
  2. Notifications push (Lot N1) : Web Push API navigateur
  3. Chat appels (Lot C2) : Appels audio/vidéo WebRTC (MVP)
  4. Présence enrichie (Lot P2) : Rich presence (track en cours), mode invisible

2. Contexte — État post v0.301

2.1 Livré en v0.301

Lot Feature Statut
P0 Chat Server compilable, auth WebSocket
C1 Typing indicators, read receipts, delivered
P1 Présence API, PresenceBadge, last_seen
S1 Feed enrichi, pagination, explore, filtres all/following/groups

2.2 Fondation existante (à enrichir)

Domaine Existant À ajouter v0.302
Groupes CRUD, join, leave, rôles (admin/modo/member) Demander à rejoindre (privé), inviter, feed groupes
Notifications In-app (liste, marquer lu) Web Push navigateur
Chat DM, rooms, typing, receipts Appels audio/vidéo WebRTC
Présence online/away/offline, last_seen Rich presence (track), mode invisible

2.3 Composants techniques

Composant État Action v0.302
veza-backend-api Nouvelles routes groupes, push subscriptions
veza-chat-server Signalisation WebRTC (si Lot C2)
apps/web Groupes avancés UI, Web Push, appels UI
Stream Server ⚠️ Hors scope (pas nécessaire pour appels)

3. Features IN SCOPE v0.302

3.1 Lot S2 — Groupes avancés

Objectif : Enrichir les groupes sociaux (demander à rejoindre, inviter, feed).
Effort : M (4-5 jours)
Référence : veza_full_features_list.md §6.3 (216-225)

# Feature Tâche détaillée Backend Frontend Critère de sortie
S2.1 Demander à rejoindre Groupe privé : requête d'adhésion POST /groups/:id/request, table group_join_requests Bouton « Demander à rejoindre », liste demandes (admin) Flux demande → approbation fonctionnel
S2.2 Inviter membres Admin/modo peut inviter par email ou user_id POST /groups/:id/invite, notifications Modal inviter, lien ou recherche user Invitation envoyée, user peut accepter
S2.3 Rôles (assign/revoke) Promouvoir modo, rétrograder PUT /groups/:id/members/:user_id/role UI rôles dans GroupDetailView Admin peut changer rôle membre
S2.4 Feed groupes Posts des groupes dont user est membre GetGlobalFeed type=groups déjà implémenté Vérifier filtre groups retourne données Feed « Groupes » affiche posts des groupes
S2.5 Liste mes groupes Groupes dont l'utilisateur est membre GET /social/groups/mine Onglet ou section « Mes groupes » Liste groupes de l'utilisateur

Fichiers clés :

  • Backend : group_service.go, social_group_handler.go, migrations
  • Frontend : GroupDetailView, GroupsView, groupService.ts, SocialViewFeed (filtre groups)

3.2 Lot N1 — Notifications push (Web Push)

Objectif : Notifications navigateur (sans FCM/APNs).
Effort : M (3-4 jours)
Référence : Module 2.3 (61-62), features 529, 552-553

# Feature Tâche détaillée Backend Frontend Critère de sortie
N1.1 Subscription Enregistrer endpoint Web Push POST /notifications/push/subscribe (VAPID) Service Worker, pushManager.subscribe Subscription stockée
N1.2 Envoi Déclencher push sur événement (follow, like, message) Intégrer web-push dans notification_service Push reçu en arrière-plan
N1.3 Préférences Activer/désactiver par type GET/PUT /notifications/preferences Settings notifications User peut activer/désactiver push
N1.4 Badge Compteur non lus sur icône Badge sur favicon ou titre Badge mis à jour

Fichiers clés :

  • Backend : notification_service.go, notification_handlers.go, migration push_subscriptions
  • Frontend : sw.ts (service worker), useNotifications, settings

Note : FCM/APNs pour mobile reportés v0.303+.


3.3 Lot C2 — Chat appels (WebRTC)

Objectif : Appels audio/vidéo 1-to-1 via WebRTC.
Effort : L (5-7 jours)
Référence : Module 5, Video chat intégré (full_features 487)

# Feature Tâche détaillée Chat Server Frontend Critère de sortie
C2.1 Signalisation SDP/ICE via WebSocket Messages CallOffer, CallAnswer, ICECandidate Échange WebRTC via WS Connexion peer-to-peer établie
C2.2 UI appel Bouton appeler, modal appel entrant/sortant CallButton, IncomingCallModal, ActiveCallBar Appel initié, accepté, refusé
C2.3 Audio uniquement (MVP) Appel audio 1-to-1 getUserMedia audio Appel audio fonctionnel
C2.4 Vidéo (optionnel) Activer caméra getUserMedia video Appel vidéo si temps

Fichiers clés :

  • Chat Server : websocket/handler.rs, types CallOffer, CallAnswer, ICECandidate
  • Frontend : useWebRTC, CallModal, chatStore (call state)

Option : Si effort trop élevé, reporter C2 en v0.303 et garder S2, N1, P2.


3.4 Lot P2 — Présence enrichie

Objectif : Rich presence (track en cours), mode invisible.
Effort : S (2-3 jours)
Référence : V0_301 HORS SCOPE → v0.302

# Feature Tâche détaillée Backend Frontend Critère de sortie
P2.1 Rich presence Champ status_message = « Écoute X » PresenceService.UpdatePresence(track_id, track_title) Player envoie track en cours « Écoute Midnight Drive » affiché
P2.2 Mode invisible User peut masquer statut PUT /users/me/presence (invisible: true) Toggle paramètres Statut masqué pour les autres

Fichiers clés :

  • Backend : presence_handler.go, user_presence (colonne invisible)
  • Frontend : playerStore, PresenceBadge, settings

4. Récapitulatif par lot

Lot Priorité Effort Dépendances
S2 Haute M (4-5 j) Aucune
N1 Haute M (3-4 j) Aucune
C2 Moyenne L (5-7 j) Chat Server stable
P2 Moyenne S (2-3 j) P1 (présence)

Ordre recommandé : S2, N1 en parallèle → P2 → C2 (ou C2 reporté).


5. Features HORS SCOPE v0.302

Feature Raison Version cible
FCM / APNs (mobile) Infra externe, apps natives v0.303+
Appels de groupe (3+) Complexité WebRTC v0.304+
Chiffrement E2E messages Effort majeur v0.303+
Forum de discussion par groupe Scope S2 suffit v0.303
Événements de groupe Scope S2 suffit v0.303

6. Migrations et schémas

Migration Description
089 group_join_requests (group_id, user_id, status, created_at)
090 push_subscriptions (user_id, endpoint, p256dh, auth, created_at)
091 user_presence.invisible (BOOLEAN DEFAULT false) — si pas déjà dans 088

7. Critères de livraison v0.302

  • Lot S2 : Demander à rejoindre, inviter, rôles, feed groupes, mes groupes
  • Lot N1 : Web Push subscription, envoi sur événement, préférences
  • Lot C2 : Appel audio 1-to-1 (ou reporté avec ticket)
  • Lot P2 : Rich presence (track), mode invisible
  • 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.301
  • SCOPE_CONTROL.md référence V0_302_RELEASE_SCOPE.md
  • FEATURE_STATUS.md mis à jour
  • CHANGELOG v0.302
  • MSW handlers pour nouvelles routes

9. Transition vers v0.303

À l'issue de v0.302 :

  • Phase 3 Social avancée (~400 / 600 features)
  • Prochaine version : v0.303 — Chat (E2E, appels groupe), Notifications (FCM), Social (forum groupes)
  • Document de scope : V0_303_RELEASE_SCOPE.md (à créer après tag v0.302)

Références