chore(docs): remove V0_302_IMPLEMENTATION, update V0_302_RELEASE_SCOPE
This commit is contained in:
parent
f48a910d5d
commit
8644ed6d5e
2 changed files with 20 additions and 201 deletions
|
|
@ -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
|
||||
|
|
@ -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)
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue