# 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)