Guide d'implémentation v0.302
Version : v0.302
Date : 21 février 2026
Référence : V0_302_RELEASE_SCOPE.md
1. Résumé
| Lot |
Statut |
Description |
| S2 |
✅ Livré |
Groupes avancés — demander à rejoindre, inviter, rôles, feed groupes, mes groupes |
| N1 |
✅ Livré |
Web Push — subscription, envoi sur événement, préférences, badge |
| P2 |
✅ Livré |
Présence enrichie — rich presence (track), mode invisible |
| C2 |
⏸ Reporté v0.303 |
Chat appels WebRTC — ticket dans V0_303_RELEASE_SCOPE.md |
2. Migrations
Toutes les migrations sont dans veza-backend-api/migrations/ :
| # |
Fichier |
Description |
| 069 |
069_groups_and_members.sql |
groups, group_members (prérequis S2) |
| 089 |
089_group_join_requests.sql |
group_join_requests |
| 090 |
090_push_subscriptions.sql |
push_subscriptions |
| 091 |
091_user_presence_invisible.sql |
user_presence.invisible |
| 092 |
092_group_invitations.sql |
group_invitations |
| 093 |
093_notification_preferences.sql |
notification_preferences |
| 094 |
094_user_presence_rich.sql |
user_presence (track_id, track_title) |
3. Backend — Routes et handlers
Lot S2 — Groupes avancés
| Méthode |
Route |
Handler |
| GET |
/api/v1/social/groups/mine |
groupHandler.ListMyGroups |
| POST |
/api/v1/social/groups/:id/request |
groupHandler.RequestToJoin |
| GET |
/api/v1/social/groups/:id/requests |
groupHandler.ListJoinRequests |
| POST |
/api/v1/social/groups/:id/requests/:request_id/approve |
groupHandler.ApproveJoinRequest |
| POST |
/api/v1/social/groups/:id/requests/:request_id/reject |
groupHandler.RejectJoinRequest |
| POST |
/api/v1/social/groups/:id/invite |
groupHandler.InviteMember |
| PUT |
/api/v1/social/groups/:id/members/:user_id/role |
groupHandler.UpdateMemberRole |
Fichiers : internal/handlers/group_handler.go, internal/core/social/group_service.go, internal/api/routes_social.go
Lot N1 — Notifications push
| Méthode |
Route |
Handler |
| POST |
/api/v1/notifications/push/subscribe |
NotificationHandlersInstance.SubscribePush |
| GET |
/api/v1/notifications/preferences |
NotificationHandlersInstance.GetPreferences |
| PUT |
/api/v1/notifications/preferences |
NotificationHandlersInstance.UpdatePreferences |
Fichiers : internal/services/push_service.go, internal/handlers/notification_handlers.go, internal/api/routes_core.go
Lot P2 — Présence enrichie
| Méthode |
Route |
Handler |
| PUT |
/api/v1/users/me/presence |
PresenceHandler.UpdatePresence |
Corps : { status?, invisible?, track_id?, track_title? }
Fichiers : internal/handlers/presence_handler.go, internal/services/presence_service.go
4. Frontend — Composants et services
Lot S2
| Fichier |
Rôle |
src/services/groupService.ts |
API client — listMine, requestJoin, approveRequest, rejectRequest, invite, updateMemberRole |
src/components/social/groups/GroupsView.tsx |
Liste groupes, onglet « Mes groupes » |
src/components/social/groups/group-detail-view/useGroupDetailView.ts |
Logique détail groupe, demandes, invitations, rôles |
Lot N1
| Fichier |
Rôle |
src/features/settings/components/PushPreferencesSection.tsx |
Préférences push (follow, like, message) |
src/features/notifications/hooks/usePushSubscribe.ts |
Subscription Web Push via pushManager |
public/sw.ts |
Service Worker — gestion push events, badge |
Lot P2
| Fichier |
Rôle |
src/features/presence/hooks/usePresenceSync.ts |
Sync présence (status, track) vers API |
src/features/settings/components/PresenceInvisibleToggle.tsx |
Toggle mode invisible |
MSW handlers
| Fichier |
Routes mockées |
src/mocks/handlers-social.ts |
groups/mine, groups/:id/request, groups/:id/requests, approve, reject, invite |
src/mocks/handlers-misc.ts |
push/subscribe, preferences, users/me/presence |
5. Configuration
Variables d'environnement
| Composant |
Variable |
Obligatoire |
Description |
| Backend |
VAPID_PUBLIC_KEY |
Oui (pour push) |
Clé publique VAPID Web Push |
| Backend |
VAPID_PRIVATE_KEY |
Oui (pour push) |
Clé privée VAPID Web Push |
| Frontend |
VITE_FCM_VAPID_KEY |
Non |
Clé publique VAPID (même que backend) pour pushManager.subscribe |
Sans VAPID configuré, le backend accepte les requêtes mais les push ne seront pas envoyés.
6. Validation
Commandes
# Backend
cd veza-backend-api && go build ./...
# Frontend
cd apps/web && npm run build
Tests légers
# Backend
cd veza-backend-api && go test ./... -short
# Frontend
cd apps/web && npm test -- --run
Références