Add Release Scope, Implementation Plan, and Smoke Test for 7 versions: - v0.703: Go Live & Streaming Complet (Phase 7 Finale) - v0.801: UX/UI Polish, Accessibilite & PWA (Phase 8) - v0.802: Cloud Complet, Fichiers & Gear Avance (Phase 8) - v0.803: Securite, Compliance & Outillage Dev (Phase 8) - v0.901: Marketplace Complet & Analytics Avances (Phase 9) - v0.902: Social Complet, Chat & Notifications (Phase 9) - v0.903: Stabilisation v1.0 & Launch Readiness (Phase 9) 21 documents total (3 per version), covering all remaining features needed to reach v1.0 from v0.702.
164 lines
9 KiB
Markdown
164 lines
9 KiB
Markdown
# V0.902 Release Scope — Social Complet, Chat & Notifications
|
|
|
|
**Statut** : Planifié
|
|
**Phase** : 9 (v1.0 Launch — Lot 2)
|
|
**Prérequis** : v0.901 (taguée)
|
|
**Date cible** : TBD
|
|
**Estimation** : ~3 sprints (15 jours ouvrés)
|
|
**Précédente** : [v0.901](archive/V0_901_RELEASE_SCOPE.md)
|
|
|
|
---
|
|
|
|
## 1. Objectif
|
|
|
|
Deuxième version de la Phase 9. Complète les modules **Social** (hashtags trending, explore amélioré, QR code profil, referral, partage profil), **Chat** (envoi images, GIFs Giphy, partage tracks, pin/bookmark messages), **Notifications transactionnelles** (emails bienvenue, confirmation, reset, follower, achat/vente, newsletter), et **Profils** (URL personnalisée, badge vérifié, rôles artiste/producteur/label, suppression compte GDPR).
|
|
|
|
---
|
|
|
|
## 2. État actuel (post-v0.901)
|
|
|
|
| Composant | État | Détail |
|
|
|-----------|------|--------|
|
|
| **Social feed** | ✅ Livré v0.301 | Feed API, explore, filtres |
|
|
| **Groupes** | ✅ Livré v0.302 | Request join, invite, rôles |
|
|
| **Trending** | ✅ Livré v0.203 | GET /social/trending, cache Redis |
|
|
| **Hashtags dans posts** | ❌ Absent | Pas de parsing hashtag ni trending hashtags |
|
|
| **QR code profil** | ❌ Absent | Pas de génération QR |
|
|
| **Referral / invitations** | ❌ Absent | Pas de système d'invitation |
|
|
| **Partage profil lien** | ❌ Absent | Pas de lien public avec preview |
|
|
| **Chat WebSocket** | ✅ Livré v0.502 | Messages, typing, read receipts, reactions |
|
|
| **Envoi images chat** | ❌ Absent | Texte uniquement |
|
|
| **GIF (Giphy)** | ❌ Absent | Pas d'intégration Giphy |
|
|
| **Partage tracks chat** | ❌ Absent | Pas d'embed track dans le chat |
|
|
| **Pin messages** | ❌ Absent | Pas de messages épinglés |
|
|
| **Bookmark messages** | ❌ Absent | Pas de messages sauvegardés |
|
|
| **Notifications push** | ✅ Livré v0.302 | Web Push, préférences |
|
|
| **Emails transactionnels** | ❌ Absent | Pas d'emails automatisés (bienvenue, achat, etc.) |
|
|
| **Profils** | ✅ Livré v0.103 | Bannière, liens sociaux, privé |
|
|
| **URL personnalisée** | ❌ Absent | Pas de /u/username |
|
|
| **Badge vérifié** | ❌ Absent | Pas de système de vérification |
|
|
| **Rôles artiste/producteur** | ⚠️ Partiel | Rôle Artist existe, pas Producer/Label |
|
|
| **Suppression compte** | ✅ Livré v0.803 | DELETE /users/me |
|
|
|
|
---
|
|
|
|
## 3. Lots
|
|
|
|
### Lot SO1 — Social Complet
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| SO1-01 | Hashtags — parsing `#hashtag` dans posts, stockage dans `post_hashtags` table, `GET /social/hashtags/trending` (top 20) | Backend, migrations | M |
|
|
| SO1-02 | Hashtags frontend — lien cliquable dans les posts, page `/social/hashtags/:tag` filtrée | Frontend | M |
|
|
| SO1-03 | Explore amélioré — sections trending hashtags, recommended users, popular tracks, top groups | Frontend | M |
|
|
| SO1-04 | QR code profil — `GET /users/:id/qr` retourne PNG QR code (lien vers profil public), affichage dans profil | Backend (qrcode lib), frontend | M |
|
|
| SO1-05 | Referral / invitations — `POST /invitations` (email + lien unique), tracking inscrits via referral, bonus XP futur | Backend, migrations | M |
|
|
| SO1-06 | Partage profil — `/u/:username` route publique, Open Graph meta tags (titre, avatar, bio), bouton partage | Backend, frontend | M |
|
|
| SO1-07 | Tests — hashtag parsing, trending sort, QR generation, invitation flow | Tests | M |
|
|
|
|
### Lot CH1 — Chat Enrichi
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| CH1-01 | Envoi images — upload image dans conversation (S3 storage), affichage inline, preview thumbnail | WebSocket handlers, frontend chat | L |
|
|
| CH1-02 | GIF integration — recherche Giphy API (`GET /chat/gifs?q=...`), picker dans chat, envoi comme message type "gif" | Backend proxy, frontend | L |
|
|
| CH1-03 | Partage tracks — message type "track_share" avec track_id, embed player mini dans le chat | WebSocket handlers, frontend | M |
|
|
| CH1-04 | Pin messages — `PinMessage` / `UnpinMessage` WebSocket commands, affichage pinned en haut de conversation | WebSocket handlers, frontend | M |
|
|
| CH1-05 | Bookmark messages — `POST /chat/bookmarks/:messageId`, `GET /chat/bookmarks`, page bookmarks dans chat sidebar | Backend, frontend | M |
|
|
| CH1-06 | Tests — image upload, GIF fetch, track embed, pin/unpin, bookmark CRUD | Tests | M |
|
|
|
|
### Lot NF1 — Emails Transactionnels
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| NF1-01 | Email service — abstraction SMTP/SendGrid, templates HTML, queue (goroutine background) | `internal/services/email_service.go` (nouveau) | L |
|
|
| NF1-02 | Template bienvenue — envoyé après inscription validée | Templates | S |
|
|
| NF1-03 | Template confirmation email — envoyé sur demande changement email | Templates | S |
|
|
| NF1-04 | Template reset password — envoyé sur demande reset (remplacer le flow existant si besoin) | Templates | S |
|
|
| NF1-05 | Template nouveau follower — envoyé quand quelqu'un follow (si pref activée) | Templates | S |
|
|
| NF1-06 | Template achat/vente — envoyé au buyer (confirmation achat) et seller (notification vente) | Templates | S |
|
|
| NF1-07 | Newsletter opt-in — `PUT /users/me/preferences` avec `newsletter: true`, cron hebdomadaire avec résumé activité | Backend, templates | M |
|
|
| NF1-08 | Frontend — préférences email dans Settings (toggle par type), unsubscribe link dans chaque email | Frontend | M |
|
|
| NF1-09 | Tests — email service mock, template rendering, preferences respect | Tests | M |
|
|
|
|
### Lot PR1 — Profils Complets
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| PR1-01 | URL personnalisée — `/u/:username` route publique, résolution username → user ID | Backend routes, frontend | M |
|
|
| PR1-02 | Badge vérifié — migration ajout `is_verified` sur users, `POST /admin/users/:id/verify`, badge dans UI | Backend, frontend | M |
|
|
| PR1-03 | Rôles artiste/producteur/label — migration ajout rôles Producer et Label, sélection dans Settings, badge rôle dans profil | Backend, frontend | M |
|
|
| PR1-04 | Open Graph meta — serveur-side rendering des meta tags pour `/u/:username` (og:title, og:image, og:description) | Backend middleware | M |
|
|
| PR1-05 | Tests — username resolution, verification, role assignment | Tests | M |
|
|
|
|
### Lot QA1 — Tests & Release
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| QA1-01 | Smoke test v0.902 | `docs/SMOKE_TEST_V0902.md` | S |
|
|
| QA1-02 | Mise à jour docs | `docs/` | S |
|
|
| QA1-03 | Rétrospective, archivage, placeholder v0.903, tag | `docs/`, Git | S |
|
|
|
|
---
|
|
|
|
## 4. Hors scope v0.902
|
|
|
|
| Élément | Version cible |
|
|
|---------|---------------|
|
|
| Recherche phonétique / spell correction | v0.903 |
|
|
| Smart playlists | v0.903 |
|
|
| Session management (device list) | v0.903 |
|
|
| Load testing (k6) | v0.903 |
|
|
| Rapports mensuels email | v2.0 |
|
|
| Son notification personnalisable | v2.0 |
|
|
| Envoi de vidéos dans chat | v2.0 |
|
|
| Forums de discussion groupe | v2.0 |
|
|
| Événements de groupe | v2.0 |
|
|
| Markdown support chat | v2.0 |
|
|
|
|
---
|
|
|
|
## 5. Critères d'acceptation
|
|
|
|
- [ ] Hashtags : parsing dans posts, trending top 20, page filtrée par hashtag
|
|
- [ ] Explore : sections trending hashtags, recommended, popular, groups
|
|
- [ ] QR code : PNG généré pour chaque profil, affiché dans profil
|
|
- [ ] Referral : invitation par email, tracking inscriptions via referral
|
|
- [ ] Profil public : `/u/:username`, Open Graph meta tags
|
|
- [ ] Chat images : upload + affichage inline, preview thumbnail
|
|
- [ ] Chat GIFs : recherche Giphy, picker, envoi comme message
|
|
- [ ] Chat track share : embed player mini dans les messages
|
|
- [ ] Pin messages : épingler/désépingler, affichage en haut
|
|
- [ ] Bookmark messages : sauvegarder, page bookmarks
|
|
- [ ] Emails : bienvenue, confirmation, reset, follower, achat/vente
|
|
- [ ] Newsletter : opt-in, cron hebdomadaire, unsubscribe
|
|
- [ ] Badge vérifié : admin peut vérifier, badge affiché
|
|
- [ ] Rôles Producer/Label : assignation, badge
|
|
- [ ] Tag v0.902 créé
|
|
|
|
---
|
|
|
|
## 6. Risques
|
|
|
|
| Risque | Mitigation |
|
|
|--------|------------|
|
|
| Giphy API rate limiting | Cache réponses 5min, fallback si indisponible |
|
|
| Images chat storage coût | Compression + resize avant upload, limit 5MB |
|
|
| Email deliverability | SPF/DKIM/DMARC config, utiliser SendGrid en prod |
|
|
| QR code large (SVG) | Générer PNG server-side, cache 24h |
|
|
| Hashtag spam | Rate limit création posts, modération auto sur hashtags abusifs |
|
|
| Open Graph SSR | Middleware Go qui injecte les meta tags, pas de SSR React complet |
|
|
|
|
---
|
|
|
|
## 7. Références
|
|
|
|
- [V0_901_RELEASE_SCOPE.md](archive/V0_901_RELEASE_SCOPE.md)
|
|
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md)
|
|
- `veza-backend-api/internal/websocket/chat/` (WebSocket handlers)
|
|
- `veza-backend-api/internal/core/social/` (social service)
|
|
- `apps/web/src/features/chat/` (chat frontend)
|
|
- `apps/web/src/features/social/` (social frontend)
|
|
- `apps/web/src/components/settings/` (profile settings)
|
|
- [Giphy API](https://developers.giphy.com/docs/api/)
|
|
- [go-qrcode](https://github.com/skip2/go-qrcode)
|