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
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
- 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
- go-qrcode