From 8644ed6d5e4b2709adda805e2987d13163e7afee Mon Sep 17 00:00:00 2001 From: senke Date: Sun, 22 Feb 2026 03:46:50 +0100 Subject: [PATCH] chore(docs): remove V0_302_IMPLEMENTATION, update V0_302_RELEASE_SCOPE --- docs/V0_302_IMPLEMENTATION.md | 150 ---------------------------------- docs/V0_302_RELEASE_SCOPE.md | 71 +++++----------- 2 files changed, 20 insertions(+), 201 deletions(-) delete mode 100644 docs/V0_302_IMPLEMENTATION.md diff --git a/docs/V0_302_IMPLEMENTATION.md b/docs/V0_302_IMPLEMENTATION.md deleted file mode 100644 index fb779da52..000000000 --- a/docs/V0_302_IMPLEMENTATION.md +++ /dev/null @@ -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 diff --git a/docs/V0_302_RELEASE_SCOPE.md b/docs/V0_302_RELEASE_SCOPE.md index 46db10747..82b5c3a79 100644 --- a/docs/V0_302_RELEASE_SCOPE.md +++ b/docs/V0_302_RELEASE_SCOPE.md @@ -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) ---