chore(docs): remove V0_302_IMPLEMENTATION, update V0_302_RELEASE_SCOPE

This commit is contained in:
senke 2026-02-22 03:46:50 +01:00
parent f48a910d5d
commit 8644ed6d5e
2 changed files with 20 additions and 201 deletions

View file

@ -1,150 +0,0 @@
# Guide d'implémentation v0.302
**Version** : v0.302
**Date** : 21 février 2026
**Référence** : [V0_302_RELEASE_SCOPE.md](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
```bash
# Backend
cd veza-backend-api && go build ./...
# Frontend
cd apps/web && npm run build
```
### Tests légers
```bash
# Backend
cd veza-backend-api && go test ./... -short
# Frontend
cd apps/web && npm test -- --run
```
---
## Références
- [V0_302_RELEASE_SCOPE.md](V0_302_RELEASE_SCOPE.md) — Scope et critères
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md) — Processus anti-scope-creep
- [FEATURE_STATUS.md](FEATURE_STATUS.md) — Statut des features

View file

@ -3,7 +3,7 @@
**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** : 21 février 2026 — Implémentation livrée
**Dernière mise à jour** : 20 février 2026
**Effort estimé** : 6-8 semaines de développement
---
@ -159,37 +159,33 @@
## 6. Migrations et schémas
| Migration | Fichier | Description |
|-----------|---------|-------------|
| 069 | `069_groups_and_members.sql` | groups, group_members (prérequis S2) |
| 089 | `089_group_join_requests.sql` | group_join_requests (group_id, user_id, status, created_at) |
| 090 | `090_push_subscriptions.sql` | push_subscriptions (user_id, endpoint, p256dh, auth, created_at) |
| 091 | `091_user_presence_invisible.sql` | user_presence.invisible (BOOLEAN DEFAULT false) |
| 092 | `092_group_invitations.sql` | group_invitations (S2.2) |
| 093 | `093_notification_preferences.sql` | notification_preferences (push_follow, push_like, etc.) |
| 094 | `094_user_presence_rich.sql` | user_presence (track_id, track_title) |
| 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
- [x] Lot S2 : Demander à rejoindre, inviter, rôles, feed groupes, mes groupes
- [x] Lot N1 : Web Push subscription, envoi sur événement, préférences, badge
- [x] Lot C2 : Reporté en v0.303 (ticket V0_303_RELEASE_SCOPE.md)
- [x] Lot P2 : Rich presence (track), mode invisible
- [x] Tests : `go build ./...` OK, `npm run build` OK
- [x] Documentation : FEATURE_STATUS, PROJECT_STATE, CHANGELOG mis à jour
- [ ] 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
- [x] Tous les lots IN SCOPE terminés ou reportés (avec ticket)
- [x] Pas de régression sur v0.301
- [x] SCOPE_CONTROL.md référence V0_302_RELEASE_SCOPE.md
- [x] FEATURE_STATUS.md mis à jour
- [x] CHANGELOG v0.302
- [x] MSW handlers pour nouvelles routes
- [ ] 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
---
@ -197,35 +193,8 @@
À l'issue de v0.302 :
- Phase 3 Social avancée (~400 / 600 features)
- Prochaine version : **v0.303** — Lot C2 (appels WebRTC), autres lots à définir
- Document de scope : `V0_303_RELEASE_SCOPE.md` (créé)
---
## 10. Implémentation réalisée
Référence rapide pour les développeurs. Voir [V0_302_IMPLEMENTATION.md](V0_302_IMPLEMENTATION.md) pour le détail.
### Routes API ajoutées
| Lot | Méthode | Route |
|-----|---------|-------|
| S2 | POST | `/social/groups/:id/request` |
| S2 | GET | `/social/groups/:id/requests` |
| S2 | POST | `/social/groups/:id/requests/:request_id/approve`, `.../reject` |
| S2 | POST | `/social/groups/:id/invite` |
| S2 | PUT | `/social/groups/:id/members/:user_id/role` |
| S2 | GET | `/social/groups/mine` |
| N1 | POST | `/notifications/push/subscribe` |
| N1 | GET, PUT | `/notifications/preferences` |
| P2 | PUT | `/users/me/presence` |
### Variables d'environnement
| Composant | Variable | Description |
|-----------|----------|-------------|
| Backend | `VAPID_PUBLIC_KEY`, `VAPID_PRIVATE_KEY` | Web Push VAPID (obligatoire pour push) |
| Frontend | `VITE_FCM_VAPID_KEY` | Clé publique VAPID pour pushManager.subscribe |
- 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)
---