chartbastan/_bmad-output/implementation-artifacts/7-3-implémenter-le-programme-de-parrainage.md
2026-02-01 09:31:38 +01:00

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 le système de parrainage (AC: #1, #2)

    • Créer la table referrals dans Drizzle
    • Ajouter colonnes: id, referrer_id, referred_id, status, created_at
    • Créer la table rewards dans Drizzle
    • Ajouter colonnes: id, user_id, reward_type, value, used
    • Générer et appliquer les migrations
  • 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
  • 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 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 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 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
  • 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.ts
  • drizzle/migrations/0005_tough_sinister_six.sql
  • drizzle/migrations/0006_friendly_the_spike.sql
  • src/services/referralService.ts
  • src/services/rewardService.ts
  • src/app/api/auth/register/route.ts
  • src/app/api/v1/referrals/referral-code/route.ts
  • src/app/api/v1/referrals/track/route.ts
  • src/app/api/v1/rewards/check/route.ts
  • src/components/referral/referralLink.tsx
  • src/components/referral/rewardsList.tsx
  • src/app/(dashboard)/parrainage/page.tsx
  • src/tests/services/referralService.test.ts
  • src/tests/services/rewardService.test.ts
  • src/tests/api/referralApi.test.ts