5.2 KiB
Story 7.3: Implémenter le programme de parrainage
Status: review
Story
As a utilisateur, I want inviter des amis et gagner des récompenses, So que je peux bénéficier d'avantages en partageant l'application.
Acceptance Criteria
Given je suis connecté When j'accède à la section Parrainage Then je vois mon lien de parrainage unique And je vois combien d'amis j'ai invités And je vois mes récompenses disponibles
Given 3 de mes amis s'inscrivent via mon lien When le 3ème ami s'inscrit Then je reçois 1 mois premium GRATUIT And une notification de succès est affichée And mon statut premium est activé automatiquement
Tasks / Subtasks
-
Créer la page de parrainage (AC: #1)
- Créer
src/app/(dashboard)/parrainage/page.tsx - Afficher le lien de parrainage unique
- Afficher le nombre d'amis invités
- Afficher les récompenses disponibles
- Utiliser shadcn/ui components
- Créer
-
Créer le système de parrainage (AC: #1, #2)
- Créer la table
referralsdans Drizzle - Ajouter colonnes: id, referrer_id, referred_id, status, created_at
- Créer la table
rewardsdans Drizzle - Ajouter colonnes: id, user_id, reward_type, value, used
- Générer et appliquer les migrations
- Créer la table
-
Créer le lien de parrainage unique (AC: #1)
- Créer
src/services/referralService.ts - Générer un code de parrainage unique par utilisateur
- Créer l'URL de parrainage:
https://chartbastan.com/signup?ref=CODE - Stocker le code dans la base de données
- Valider que le code est unique
- Créer
-
Implémenter le tracking des parrainages (AC: #1, #2)
- Créer l'endpoint
POST /api/v1/referrals/track - Tracker les inscriptions avec le code de parrainage
- Stocker la relation referrer/referred dans
referrals - Compter le nombre d'amis invités
- Gérer les erreurs de tracking
- Créer l'endpoint
-
Créer le composant de lien de parrainage (AC: #1)
- Créer
src/components/referral/ReferralLink.tsx - Afficher le lien de parrainage avec bouton "Copier"
- Ajouter bouton "Partager" (Twitter, Facebook, WhatsApp)
- Afficher le nombre d'amis invités
- Utiliser shadcn/ui components
- Créer
-
Créer le système de récompenses (AC: #2)
- Créer
src/services/rewardService.ts - Vérifier si l'utilisateur a invité 3 amis
- Activer 1 mois premium automatiquement
- Envoyer une notification de succès
- Créer l'endpoint
POST /api/v1/rewards/check
- Créer
-
Créer le composant de récompenses (AC: #1)
- Créer
src/components/referral/RewardsList.tsx - Afficher les récompenses disponibles
- Afficher les récompenses utilisées
- Afficher le nombre d'amis invités / 3 pour premium
- Utiliser shadcn/ui components
- Créer
-
Tester le programme de parrainage (Tous AC)
- Tester la génération du lien de parrainage
- Tester le tracking des parrainages
- Tester l'activation de premium après 3 amis
- Tester les notifications de succès
- Vérifier la comptabilité avec les limites de prédictions
Dev Notes
Stack Technique
- Database: Drizzle + SQLite
- State: Zustand
- UI: shadcn/ui + Tailwind CSS
File Structure
src/
├── app/
│ └── (dashboard)/
│ └── parrainage/page.tsx
├── components/
│ └── referral/
│ ├── ReferralLink.tsx
│ └── RewardsList.tsx
└── services/
├── referralService.ts
└── rewardService.ts
References
- [Source: _bmad-output/planning-artifacts/epics.md#Story-7.3]
Dev Agent Record
Agent Model Used
GLM-4.7
Completion Notes List
- Programme de parrainage implémenté avec succès
- Tables Drizzle créées: referrals et rewards avec colonne referralCode dans users
- Migrations générées et appliquées (0005 et 0006)
- Service referralService.ts complet avec génération de codes uniques, tracking, statistiques
- Service rewardService.ts complet avec vérification et activation automatique de premium
- API endpoints créés: /api/v1/referrals/referral-code, /api/v1/referrals/track, /api/v1/rewards/check
- Modification de /api/auth/register pour supporter les codes de parrainage
- Composants frontend ReferralLink.tsx et RewardsList.tsx avec interface complète
- Page de parrainage /src/app/(dashboard)/parrainage/page.tsx
- Tests créés et passants pour les services et APIs
- Linting vérifié, aucune erreur
- Tous les critères d'acceptation satisfaits
File List
src/db/schema.tsdrizzle/migrations/0005_tough_sinister_six.sqldrizzle/migrations/0006_friendly_the_spike.sqlsrc/services/referralService.tssrc/services/rewardService.tssrc/app/api/auth/register/route.tssrc/app/api/v1/referrals/referral-code/route.tssrc/app/api/v1/referrals/track/route.tssrc/app/api/v1/rewards/check/route.tssrc/components/referral/referralLink.tsxsrc/components/referral/rewardsList.tsxsrc/app/(dashboard)/parrainage/page.tsxsrc/tests/services/referralService.test.tssrc/tests/services/rewardService.test.tssrc/tests/api/referralApi.test.ts