Table des matières
Sprint 8-A.1 — Marketing Core & Campaign Management
Objectif
Construire la plateforme marketing omnicanale Enterprise.
Cette couche permet :
Campagnes Segmentation Templates Automatisation Exécution Tracking
afin d'orchestrer les communications clients à grande échelle.
À l'issue de cette étape :
✓ Campaign ✓ CampaignAudience ✓ CampaignTemplate ✓ CampaignExecution ✓ CampaignTracking ✓ MarketingDashboard ✓ Marketing Platform Core
Architecture cible
CRM ↓ Marketing Platform ├── Campaign Management ├── Audience Engine ├── Template Engine ├── Campaign Execution ├── Tracking & Attribution └── Marketing Dashboard ↓ Email SMS WhatsApp Push In-App
Sprint 8-A.1-A
Extension Prisma
Étape 1 — Campaign
Ajouter dans schema.prisma
model Campaign {
id String
@id
@default(uuid())
tenantId String
name String
description String?
type CampaignType
status CampaignStatus
startDate DateTime?
endDate DateTime?
budget Decimal?
@db.Decimal(14,2)
createdBy String
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
audiences CampaignAudience[]
executions CampaignExecution[]
@@index([tenantId])
@@index([status])
@@index([type])
}
Étape 2 — CampaignAudience
Ajouter
model CampaignAudience {
id String
@id
@default(uuid())
campaignId String
name String
audienceType AudienceType
segmentQuery Json?
estimatedSize Int?
createdAt DateTime
@default(now())
campaign Campaign
@relation(
fields:[campaignId],
references:[id],
onDelete:Cascade
)
@@index([campaignId])
}
Étape 3 — CampaignTemplate
Ajouter
model CampaignTemplate {
id String
@id
@default(uuid())
tenantId String
name String
channel MarketingChannel
subject String?
content Json
active Boolean
@default(true)
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
@@index([tenantId])
@@index([channel])
}
Étape 4 — CampaignExecution
Ajouter
model CampaignExecution {
id String
@id
@default(uuid())
campaignId String
channel MarketingChannel
executionStatus ExecutionStatus
scheduledAt DateTime?
startedAt DateTime?
completedAt DateTime?
targetedRecipients Int
@default(0)
deliveredRecipients Int
@default(0)
failedRecipients Int
@default(0)
campaign Campaign
@relation(
fields:[campaignId],
references:[id],
onDelete:Cascade
)
@@index([campaignId])
@@index([executionStatus])
}
Étape 5 — CampaignTracking
Ajouter
model CampaignTracking {
id String
@id
@default(uuid())
campaignId String
customerId String?
channel MarketingChannel
eventType CampaignEventType
eventDate DateTime
@default(now())
metadata Json?
@@index([campaignId])
@@index([customerId])
@@index([eventType])
}
Étape 6 — MarketingDashboardSnapshot
Ajouter
model MarketingDashboardSnapshot {
id String
@id
@default(uuid())
tenantId String
snapshotDate DateTime
campaignsCount Int
deliveredCount Int
openedCount Int
clickedCount Int
conversionCount Int
revenueAttributed Decimal?
@db.Decimal(14,2)
createdAt DateTime
@default(now())
@@index([tenantId])
@@index([snapshotDate])
}
Étape 7 — Enums
Ajouter
enum CampaignType {
PROMOTIONAL
TRANSACTIONAL
LOYALTY
RETENTION
REACTIVATION
NEWSLETTER
}
enum CampaignStatus {
DRAFT
SCHEDULED
RUNNING
COMPLETED
CANCELLED
}
enum AudienceType {
STATIC
DYNAMIC
SMART_SEGMENT
}
enum MarketingChannel {
EMAIL
SMS
WHATSAPP
PUSH
IN_APP
}
enum ExecutionStatus {
PENDING
RUNNING
COMPLETED
FAILED
CANCELLED
}
enum CampaignEventType {
SENT
DELIVERED
OPENED
CLICKED
CONVERTED
UNSUBSCRIBED
}
Étape 8 — Migration
npx prisma migrate dev \
--name marketing_core
Sprint 8-A.1-B
Marketing Module
Étape 9 — Structure
src/modules/marketing ├── campaigns ├── audiences ├── templates ├── execution ├── tracking ├── dashboard └── marketing.module.ts
Étape 10 — Services
CampaignService CampaignAudienceService CampaignTemplateService CampaignExecutionService CampaignTrackingService MarketingDashboardService
Sprint 8-A.1-C
Gestion des Campagnes
Étape 11 — CampaignService
Créer
campaign.service.ts
Méthodes
createCampaign() updateCampaign() scheduleCampaign() cancelCampaign() duplicateCampaign()
Étape 12 — Types
Supporter
Promotion Newsletter Loyalty Retention Reactivation
Sprint 8-A.1-D
Gestion des Audiences
Étape 13 — CampaignAudienceService
Créer
campaign-audience.service.ts
Sources
CRM Segments Customer Tags Customer Scores Behavior Analytics Smart Segments
Étape 14 — Méthodes
createAudience() estimateAudienceSize() refreshAudience() previewAudience()
Sprint 8-A.1-E
Gestion des Templates
Étape 15 — CampaignTemplateService
Créer
campaign-template.service.ts
Supporter
Email HTML SMS WhatsApp Push In-App
Étape 16 — Variables
Autoriser
{{customer.firstName}}
{{property.name}}
{{reservation.checkIn}}
{{loyalty.points}}
Sprint 8-A.1-F
Moteur d'Exécution
Étape 17 — CampaignExecutionService
Créer
campaign-execution.service.ts
Workflow
Schedule ↓ Audience Build ↓ Send ↓ Track ↓ Analytics
Étape 18 — Méthodes
executeCampaign() pauseExecution() resumeExecution() retryFailedMessages()
Étape 19 — Intégrations
Connecter
Email Provider SMS Provider WhatsApp Provider Push Provider
Sprint 8-A.1-G
Tracking Marketing
Étape 20 — CampaignTrackingService
Créer
campaign-tracking.service.ts
Mesurer
Delivery Open Click Conversion Unsubscribe
Étape 21 — Attribution
Associer
Campaign ↓ Customer ↓ Reservation ↓ Revenue
Sprint 8-A.1-H
Marketing Dashboard
Étape 22 — MarketingDashboardService
Créer
marketing-dashboard.service.ts
Afficher
Campaigns Audience Reach Open Rate Click Rate Conversions Revenue Attribution
Étape 23 — KPIs
CTR Conversion Rate Revenue Per Campaign Cost Per Conversion Marketing ROI
Sprint 8-A.1-I
API Marketing
Étape 24 — Endpoints
GET /marketing/campaigns
POST /marketing/campaigns
PUT /marketing/campaigns/{id}
GET /marketing/audiences
POST /marketing/audiences
GET /marketing/templates
POST /marketing/templates
POST /marketing/executions
GET /marketing/dashboard
Étape 25 — Exemple
{
"campaign":"Summer Promotion",
"audienceSize":12500,
"deliveryRate":98.2,
"openRate":42.7,
"conversionRate":6.4
}
Sprint 8-A.1-J
Gouvernance
Étape 26 — Permissions
marketing.read marketing.create marketing.execute marketing.analytics marketing.templates marketing.admin
Étape 27 — Audit
CAMPAIGN_CREATED CAMPAIGN_SCHEDULED CAMPAIGN_EXECUTED AUDIENCE_GENERATED TEMPLATE_CREATED MARKETING_REPORT_VIEWED
Étape 28 — Jobs
Toutes les minutes Campaign Scheduler Toutes les 5 minutes Execution Queue Toutes les nuits Audience Refresh Dashboard Snapshot
Préparation Sprint 8-A.2
Compatible avec :
Marketing Automation Journey Builder Trigger Campaigns Behavior Campaigns AI Marketing
Définition de terminé
Le Sprint 8-A.1 est terminé lorsque :
✓ Campaign créé ✓ CampaignAudience créé ✓ CampaignTemplate créé ✓ CampaignExecution créé ✓ CampaignTracking créé ✓ MarketingDashboard créé ✓ Marketing Core opérationnel
Livrables
Campaign CampaignAudience CampaignTemplate CampaignExecution CampaignTracking MarketingDashboardSnapshot CampaignService CampaignAudienceService CampaignTemplateService CampaignExecutionService CampaignTrackingService MarketingDashboardService Marketing Platform Core
Sprint 8-A.2 — Marketing Automation & Customer Journeys
Objectif
Transformer la plateforme marketing en moteur d'automatisation omnicanal Enterprise.
Cette couche permet :
Customer Journeys Automation Rules Behavior Triggers Lifecycle Marketing Real-Time Engagement Journey Analytics
afin d'automatiser l'ensemble du cycle de vie client.
À l'issue de cette étape :
✓ Journey ✓ Automation Rule ✓ Trigger Engine ✓ Behavior Campaigns ✓ Lifecycle Marketing ✓ Journey Analytics ✓ Marketing Automation Platform
Architecture cible
CRM ↓ Behavior Engine ↓ Journey Automation Platform ├── Journeys ├── Triggers ├── Rules Engine ├── Lifecycle Campaigns ├── Real-Time Automation └── Journey Analytics ↓ Email SMS WhatsApp Push In-App
Sprint 8-A.2-A
Extension Prisma
Étape 1 — Journey
Ajouter dans schema.prisma
model Journey {
id String
@id
@default(uuid())
tenantId String
name String
description String?
status JourneyStatus
triggerType JourneyTriggerType
active Boolean
@default(true)
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
steps JourneyStep[]
@@index([tenantId])
@@index([status])
}
Étape 2 — JourneyStep
Ajouter
model JourneyStep {
id String
@id
@default(uuid())
journeyId String
stepOrder Int
stepType JourneyStepType
configuration Json
createdAt DateTime
@default(now())
journey Journey
@relation(
fields:[journeyId],
references:[id],
onDelete:Cascade
)
@@index([journeyId])
}
Étape 3 — AutomationRule
Ajouter
model AutomationRule {
id String
@id
@default(uuid())
tenantId String
name String
triggerEvent String
conditions Json
actions Json
enabled Boolean
@default(true)
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
@@index([tenantId])
@@index([enabled])
}
Étape 4 — JourneyExecution
Ajouter
model JourneyExecution {
id String
@id
@default(uuid())
journeyId String
customerId String
status JourneyExecutionStatus
currentStep Int
@default(0)
startedAt DateTime
@default(now())
completedAt DateTime?
@@index([journeyId])
@@index([customerId])
@@index([status])
}
Étape 5 — JourneyAnalytics
Ajouter
model JourneyAnalytics {
journeyId String
@id
enrolledCustomers Int
@default(0)
completedCustomers Int
@default(0)
conversionRate Float?
revenueAttributed Decimal?
@db.Decimal(14,2)
updatedAt DateTime
@updatedAt
}
Étape 6 — Enums
Ajouter
enum JourneyStatus {
DRAFT
ACTIVE
PAUSED
ARCHIVED
}
enum JourneyTriggerType {
CUSTOMER_CREATED
RESERVATION_CREATED
CHECKIN_COMPLETED
CHECKOUT_COMPLETED
TAG_ASSIGNED
BEHAVIOR_EVENT
}
enum JourneyStepType {
WAIT
EMAIL
SMS
WHATSAPP
PUSH
CONDITION
TAG
WEBHOOK
}
enum JourneyExecutionStatus {
ACTIVE
COMPLETED
FAILED
CANCELLED
}
Étape 7 — Migration
npx prisma migrate dev \
--name marketing_automation
Sprint 8-A.2-B
Marketing Automation Module
Étape 8 — Structure
src/modules/marketing-automation ├── journeys ├── rules ├── triggers ├── lifecycle ├── analytics └── marketing-automation.module.ts
Étape 9 — Services
JourneyService AutomationRuleService TriggerEngineService BehaviorCampaignService LifecycleMarketingService JourneyAnalyticsService
Sprint 8-A.2-C
Customer Journeys
Étape 10 — JourneyService
Créer
journey.service.ts
Méthodes
createJourney() publishJourney() pauseJourney() duplicateJourney() archiveJourney()
Étape 11 — Journey Builder
Supporter
Drag & Drop Conditions Delays Actions Branches
Étape 12 — Parcours standards
Welcome Journey Booking Journey Check-In Journey Post-Stay Journey Reactivation Journey
Sprint 8-A.2-D
Automation Rules
Étape 13 — AutomationRuleService
Créer
automation-rule.service.ts
Supporter
Triggers Conditions Actions Schedules
Étape 14 — Exemples
Tag VIP ajouté ↓ Envoyer email premium
Aucune réservation 180 jours ↓ Campagne réactivation
Sprint 8-A.2-E
Trigger Engine
Étape 15 — TriggerEngineService
Créer
trigger-engine.service.ts
Événements
Customer Reservation Payment Property Marketing Behavior
Étape 16 — Méthodes
processEvent() evaluateTriggers() executeActions() scheduleExecution()
Étape 17 — Temps réel
Utiliser
Event Bus Queue Worker
pour le traitement asynchrone.
Sprint 8-A.2-F
Behavior Campaigns
Étape 18 — BehaviorCampaignService
Créer
behavior-campaign.service.ts
Déclencher
Navigation Recherche Abandon réservation Ouverture email Clic campagne
Étape 19 — Exemples
Abandon réservation ↓ Relance 1h ↓ Relance 24h ↓ Offre promotionnelle
Sprint 8-A.2-G
Lifecycle Marketing
Étape 20 — LifecycleMarketingService
Créer
lifecycle-marketing.service.ts
Cycles
Prospect Client Voyageur VIP Inactif Perdu
Étape 21 — Automatisations
Onboarding Loyalty Upsell Cross-Sell Retention Win-Back
Étape 22 — Smart Segments
Réutiliser
CRM Scores Customer Segments Behavior Analytics Communication History
Sprint 8-A.2-H
Journey Analytics
Étape 23 — JourneyAnalyticsService
Créer
journey-analytics.service.ts
Mesurer
Enrollments Completion Rate Drop-Off Rate Conversion Rate Revenue Attribution
Étape 24 — KPIs
Journey ROI Automation Efficiency Customer Engagement Revenue Per Journey
Sprint 8-A.2-I
API Marketing Automation
Étape 25 — Endpoints
GET /marketing/journeys
POST /marketing/journeys
PUT /marketing/journeys/{id}
POST /marketing/journeys/{id}/publish
GET /marketing/automation-rules
POST /marketing/automation-rules
GET /marketing/journeys/analytics
Étape 26 — Exemple
{
"journey":"Welcome Journey",
"enrolled":12000,
"completed":10150,
"conversionRate":12.7,
"revenueAttributed":85000
}
Sprint 8-A.2-J
Gouvernance
Étape 27 — Permissions
marketing.journey.read marketing.journey.manage marketing.automation.manage marketing.behavior.manage marketing.analytics.read marketing.admin
Étape 28 — Audit
JOURNEY_CREATED JOURNEY_PUBLISHED AUTOMATION_RULE_CREATED TRIGGER_EXECUTED BEHAVIOR_CAMPAIGN_STARTED JOURNEY_ANALYTICS_VIEWED
Étape 29 — Jobs
Toutes les minutes Trigger Processing Journey Scheduler Toutes les 5 minutes Behavior Evaluation Toutes les nuits Journey Analytics Refresh
Préparation Sprint 8-B.1
Compatible avec :
Loyalty Program Rewards Points Engine Membership Tiers Customer Retention
Définition de terminé
Le Sprint 8-A.2 est terminé lorsque :
✓ Journey créé ✓ Automation Rule créée ✓ Trigger Engine créé ✓ Behavior Campaigns créées ✓ Lifecycle Marketing créé ✓ Journey Analytics créé ✓ Marketing Automation opérationnel
Livrables
Journey JourneyStep AutomationRule JourneyExecution JourneyAnalytics JourneyService AutomationRuleService TriggerEngineService BehaviorCampaignService LifecycleMarketingService JourneyAnalyticsService Marketing Automation Platform
Sprint 8-B.1 — Loyalty Program Core
Objectif
Construire le moteur de fidélisation client Enterprise.
Cette couche permet :
Comptes fidélité Points Récompenses Niveaux d'adhésion Transactions fidélité Tableaux de bord
afin d'augmenter :
Rétention Réachat Valeur vie client (LTV) Engagement Revenus récurrents
À l'issue de cette étape :
✓ LoyaltyAccount ✓ PointsLedger ✓ Reward ✓ MembershipTier ✓ LoyaltyTransaction ✓ LoyaltyDashboard ✓ Loyalty Platform Core
Architecture cible
Customer ↓ Loyalty Platform ├── Loyalty Accounts ├── Points Engine ├── Rewards Catalog ├── Membership Tiers ├── Loyalty Transactions └── Loyalty Dashboard ↓ Marketing Automation ↓ Reservations ↓ Revenue Growth
Sprint 8-B.1-A
Extension Prisma
Étape 1 — LoyaltyAccount
Ajouter dans schema.prisma
model LoyaltyAccount {
id String
@id
@default(uuid())
tenantId String
customerId String
@unique
membershipTierId String?
loyaltyNumber String
active Boolean
@default(true)
currentPoints Int
@default(0)
lifetimePoints Int
@default(0)
joinedAt DateTime
@default(now())
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
transactions LoyaltyTransaction[]
@@unique([tenantId, loyaltyNumber])
@@index([tenantId])
@@index([customerId])
}
Étape 2 — PointsLedger
Ajouter
model PointsLedger {
id String
@id
@default(uuid())
loyaltyAccountId String
transactionType PointsTransactionType
points Int
balanceAfter Int
sourceType LoyaltySourceType
sourceId String?
expiresAt DateTime?
createdAt DateTime
@default(now())
@@index([loyaltyAccountId])
@@index([transactionType])
@@index([expiresAt])
}
Étape 3 — Reward
Ajouter
model Reward {
id String
@id
@default(uuid())
tenantId String
code String
name String
description String?
rewardType RewardType
pointsRequired Int
quantityAvailable Int?
active Boolean
@default(true)
validFrom DateTime?
validUntil DateTime?
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
@@unique([tenantId, code])
@@index([tenantId])
@@index([rewardType])
@@index([active])
}
Étape 4 — MembershipTier
Ajouter
model MembershipTier {
id String
@id
@default(uuid())
tenantId String
code String
name String
level Int
pointsThreshold Int
benefits Json?
active Boolean
@default(true)
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
@@unique([tenantId, code])
@@index([tenantId])
@@index([level])
}
Étape 5 — LoyaltyTransaction
Ajouter
model LoyaltyTransaction {
id String
@id
@default(uuid())
loyaltyAccountId String
rewardId String?
transactionType LoyaltyTransactionType
points Int
monetaryValue Decimal?
@db.Decimal(14,2)
status LoyaltyTransactionStatus
createdAt DateTime
@default(now())
completedAt DateTime?
@@index([loyaltyAccountId])
@@index([transactionType])
@@index([status])
}
Étape 6 — LoyaltyDashboardSnapshot
Ajouter
model LoyaltyDashboardSnapshot {
id String
@id
@default(uuid())
tenantId String
snapshotDate DateTime
activeMembers Int
totalPointsIssued Int
totalPointsRedeemed Int
rewardsRedeemed Int
loyaltyRevenue Decimal?
@db.Decimal(14,2)
createdAt DateTime
@default(now())
@@index([tenantId])
@@index([snapshotDate])
}
Étape 7 — Enums
Ajouter
enum PointsTransactionType {
EARN
REDEEM
EXPIRE
ADJUSTMENT
BONUS
}
enum LoyaltySourceType {
RESERVATION
CAMPAIGN
REFERRAL
MANUAL
REWARD
}
enum RewardType {
DISCOUNT
FREE_NIGHT
UPGRADE
GIFT
VOUCHER
}
enum LoyaltyTransactionType {
EARN
REDEEM
TRANSFER
ADJUSTMENT
}
enum LoyaltyTransactionStatus {
PENDING
COMPLETED
CANCELLED
FAILED
}
Étape 8 — Migration
npx prisma migrate dev \
--name loyalty_program_core
Sprint 8-B.1-B
Loyalty Module
Étape 9 — Structure
src/modules/loyalty ├── accounts ├── points ├── rewards ├── tiers ├── transactions ├── dashboard └── loyalty.module.ts
Étape 10 — Services
LoyaltyAccountService PointsLedgerService RewardService MembershipTierService LoyaltyTransactionService LoyaltyDashboardService
Sprint 8-B.1-C
Comptes Fidélité
Étape 11 — LoyaltyAccountService
Créer
loyalty-account.service.ts
Méthodes
createAccount() getAccount() suspendAccount() reactivateAccount() calculateTier()
Étape 12 — Attribution
Créer automatiquement
lors de :
Création client Première réservation Programme invitation
Sprint 8-B.1-D
Moteur de Points
Étape 13 — PointsLedgerService
Créer
points-ledger.service.ts
Supporter
Earn Redeem Expire Bonus Adjustment
Étape 14 — Règles
Exemple
1 € dépensé ↓ 10 points
Séjour > 5 nuits ↓ Bonus 500 points
Étape 15 — Méthodes
earnPoints() redeemPoints() expirePoints() adjustPoints() calculateBalance()
Sprint 8-B.1-E
Catalogue Récompenses
Étape 16 — RewardService
Créer
reward.service.ts
Supporter
Réduction Nuit offerte Upgrade Cadeaux Coupons
Étape 17 — Méthodes
createReward() redeemReward() reserveRewardStock() expireReward()
Sprint 8-B.1-F
Membership Tiers
Étape 18 — MembershipTierService
Créer
membership-tier.service.ts
Niveaux
Bronze Silver Gold Platinum
Étape 19 — Avantages
Bonus Points Priority Support Late Checkout Free Upgrade Exclusive Offers
Étape 20 — Méthodes
assignTier() upgradeTier() downgradeTier() evaluateEligibility()
Sprint 8-B.1-G
Transactions Fidélité
Étape 21 — LoyaltyTransactionService
Créer
loyalty-transaction.service.ts
Historiser
Points Earned Points Redeemed Transfers Adjustments
Étape 22 — Méthodes
createTransaction() completeTransaction() cancelTransaction() getTransactionHistory()
Sprint 8-B.1-H
Loyalty Dashboard
Étape 23 — LoyaltyDashboardService
Créer
loyalty-dashboard.service.ts
Afficher
Members Points Issued Points Redeemed Rewards Tier Distribution
Étape 24 — KPIs
Retention Rate Redemption Rate Points Liability Loyalty Revenue Average Tier
Sprint 8-B.1-I
API Loyalty
Étape 25 — Endpoints
GET /loyalty/accounts
GET /loyalty/accounts/{id}
POST /loyalty/accounts
GET /loyalty/rewards
POST /loyalty/rewards
GET /loyalty/tiers
POST /loyalty/transactions
GET /loyalty/dashboard
Étape 26 — Exemple
{
"customer":"John Doe",
"tier":"Gold",
"points":18500,
"lifetimePoints":42300,
"availableRewards":17
}
Sprint 8-B.1-J
Gouvernance
Étape 27 — Permissions
loyalty.read loyalty.manage loyalty.points loyalty.rewards loyalty.analytics loyalty.admin
Étape 28 — Audit
LOYALTY_ACCOUNT_CREATED POINTS_EARNED POINTS_REDEEMED REWARD_REDEEMED TIER_UPGRADED LOYALTY_DASHBOARD_VIEWED
Étape 29 — Jobs
Toutes les nuits Points Expiration Tier Evaluation Dashboard Snapshot Reward Availability Refresh
Préparation Sprint 8-B.2
Compatible avec :
Loyalty Intelligence Reward Optimization Customer Lifetime Value Retention Prediction VIP Programs
Définition de terminé
Le Sprint 8-B.1 est terminé lorsque :
✓ LoyaltyAccount créé ✓ PointsLedger créé ✓ Reward créé ✓ MembershipTier créé ✓ LoyaltyTransaction créé ✓ LoyaltyDashboard créé ✓ Loyalty Program opérationnel
Livrables
LoyaltyAccount PointsLedger Reward MembershipTier LoyaltyTransaction LoyaltyDashboardSnapshot LoyaltyAccountService PointsLedgerService RewardService MembershipTierService LoyaltyTransactionService LoyaltyDashboardService Loyalty Platform Core
Sprint 8-B.2 — Loyalty Intelligence & Retention Platform
Objectif
Transformer le programme de fidélité en plateforme d'intelligence client Enterprise.
Cette couche permet :
Customer Lifetime Value Prévision de rétention Optimisation des récompenses Gestion VIP Analyse engagement Scoring fidélité
afin d'améliorer :
LTV Rétention Engagement Revenus récurrents Rentabilité client
À l'issue de cette étape :
✓ Customer Lifetime Value ✓ Retention Prediction ✓ Reward Optimization ✓ VIP Intelligence ✓ Loyalty Health Score ✓ Engagement Analytics ✓ Loyalty Intelligence Platform
Architecture cible
Loyalty Platform ↓ Loyalty Intelligence Engine ├── CLV Engine ├── Retention Engine ├── Reward Optimization ├── VIP Intelligence ├── Engagement Analytics ├── Loyalty Health Scoring └── AI Recommendations ↓ Marketing Automation ↓ CRM ↓ Revenue Growth
Sprint 8-B.2-A
Extension Prisma
Étape 1 — CustomerLifetimeValue
Ajouter dans schema.prisma
model CustomerLifetimeValue {
customerId String
@id
predictedLtv Decimal
@db.Decimal(14,2)
historicalRevenue Decimal
@db.Decimal(14,2)
projectedRevenue Decimal
@db.Decimal(14,2)
profitabilityScore Float?
calculatedAt DateTime
@updatedAt
}
Étape 2 — RetentionPrediction
Ajouter
model RetentionPrediction {
customerId String
@id
retentionProbability Float
churnProbability Float
riskLevel RetentionRiskLevel
nextReviewDate DateTime?
calculatedAt DateTime
@updatedAt
}
Étape 3 — LoyaltyInsight
Ajouter
model LoyaltyInsight {
id String
@id
@default(uuid())
customerId String
category LoyaltyInsightCategory
severity InsightSeverity
title String
description String
recommendation String?
impactScore Float?
createdAt DateTime
@default(now())
@@index([customerId])
@@index([category])
}
Étape 4 — RewardOptimization
Ajouter
model RewardOptimization {
id String
@id
@default(uuid())
rewardId String
currentCost Decimal
@db.Decimal(14,2)
suggestedCost Decimal
@db.Decimal(14,2)
expectedRedemption Float?
expectedRevenueImpact Decimal?
@db.Decimal(14,2)
implemented Boolean
@default(false)
createdAt DateTime
@default(now())
@@index([rewardId])
}
Étape 5 — LoyaltyHealthScore
Ajouter
model LoyaltyHealthScore {
customerId String
@id
overallScore Float
engagementScore Float
retentionScore Float
activityScore Float
valueScore Float
loyaltyScore Float
calculatedAt DateTime
@updatedAt
}
Étape 6 — Enums
Ajouter
enum RetentionRiskLevel {
LOW
MEDIUM
HIGH
CRITICAL
}
enum LoyaltyInsightCategory {
ENGAGEMENT
RETENTION
REWARD
VIP
REVENUE
}
Étape 7 — Migration
npx prisma migrate dev \
--name loyalty_intelligence
Sprint 8-B.2-B
Loyalty Intelligence Module
Étape 8 — Structure
src/modules/loyalty-intelligence ├── clv ├── retention ├── rewards ├── vip ├── analytics ├── health └── loyalty-intelligence.module.ts
Étape 9 — Services
CustomerLifetimeValueService RetentionPredictionService RewardOptimizationService VipIntelligenceService EngagementAnalyticsService LoyaltyHealthScoreService LoyaltyInsightService
Sprint 8-B.2-C
Customer Lifetime Value
Étape 10 — CustomerLifetimeValueService
Créer
customer-lifetime-value.service.ts
Calculer
Historical Revenue Reservation Frequency Average Basket Retention Rate Future Revenue
Étape 11 — Méthodes
calculateLtv() forecastLtv() segmentByLtv() rankCustomers()
Étape 12 — Segments
VIP High Value Standard Low Value
Sprint 8-B.2-D
Retention Prediction
Étape 13 — RetentionPredictionService
Créer
retention-prediction.service.ts
Évaluer
Recency Frequency Monetary Value Engagement Support History
Étape 14 — Méthodes
predictRetention() predictChurn() calculateRisk() generateRetentionActions()
Étape 15 — Exemple
Customer Risque churn 82% ↓ Campagne Win-Back
Sprint 8-B.2-E
Reward Optimization
Étape 16 — RewardOptimizationService
Créer
reward-optimization.service.ts
Optimiser
Reward Cost Redemption Rate Revenue Impact Customer Satisfaction
Étape 17 — Méthodes
analyzeRewards() optimizeRewardCost() forecastRedemption() recommendRewards()
Étape 18 — Exemple
Reward 5000 points ↓ 6500 points ↓ +18% marge
Sprint 8-B.2-F
VIP Intelligence
Étape 19 — VipIntelligenceService
Créer
vip-intelligence.service.ts
Identifier
Top Revenue Top LTV Top Loyalty Brand Advocates High Referral
Étape 20 — Programmes
VIP Gold VIP Platinum VIP Elite
Étape 21 — Méthodes
identifyVipCustomers() assignVipLevel() trackVipBenefits() generateVipInsights()
Sprint 8-B.2-G
Engagement Analytics
Étape 22 — EngagementAnalyticsService
Créer
engagement-analytics.service.ts
Mesurer
Campaign Activity Loyalty Activity Reservation Activity Reward Usage Portal Usage
Étape 23 — KPIs
Engagement Rate Active Members Reward Usage Rate Referral Rate Program Participation
Sprint 8-B.2-H
Loyalty Health Score
Étape 24 — LoyaltyHealthScoreService
Créer
loyalty-health-score.service.ts
Pondération
Engagement 25% Retention 25% Activity 20% LTV 20% Loyalty Usage 10%
Étape 25 — Classification
90-100 Excellent 75-89 Healthy 50-74 Warning 0-49 At Risk
Étape 26 — Exemple
Customer Health 91 Excellent
Sprint 8-B.2-I
Intelligence Executive
Étape 27 — LoyaltyInsightService
Créer
loyalty-insight.service.ts
Générer
Retention Alerts VIP Opportunities Reward Optimization Engagement Opportunities Revenue Growth Actions
Étape 28 — Exemples
Client Gold LTV prévu 12 500 € ↓ Passage VIP recommandé
Segment Standard Baisse engagement ↓ Campagne fidélisation recommandée
Sprint 8-B.2-J
Dashboard Intelligence
Étape 29 — Endpoints
GET /loyalty/intelligence GET /loyalty/ltv GET /loyalty/retention GET /loyalty/rewards/optimization GET /loyalty/vip GET /loyalty/health
Étape 30 — Exemple
{
"customerLtv":12500,
"retentionProbability":0.87,
"healthScore":91,
"vipEligible":true,
"recommendations":4
}
Étape 31 — Analytics
Mesurer
LTV Accuracy Retention Accuracy Reward ROI VIP Revenue Share Loyalty Health Trend
Gouvernance
Étape 32 — Permissions
loyalty.intelligence.read loyalty.retention.manage loyalty.vip.manage loyalty.analytics.read loyalty.executive
Étape 33 — Audit
LTV_CALCULATED RETENTION_PREDICTED VIP_ASSIGNED REWARD_OPTIMIZATION_CREATED LOYALTY_HEALTH_UPDATED LOYALTY_INSIGHT_GENERATED
Étape 34 — Jobs
Toutes les nuits LTV Refresh Retention Prediction VIP Evaluation Health Score Refresh Insight Generation
Clôture Domaine Loyalty
À la fin du Sprint 8-B.2 :
✓ Loyalty Program ✓ Loyalty Intelligence ✓ Retention Prediction ✓ VIP Intelligence ✓ Reward Optimization ✓ Engagement Analytics ✓ Customer Lifetime Value
sont entièrement opérationnels.
Préparation Sprint 8-C.1
Compatible avec :
Referral Program Advocacy Influencers Ambassadors Growth Engine
Définition de terminé
Le Sprint 8-B.2 est terminé lorsque :
✓ Customer Lifetime Value créé ✓ Retention Prediction créée ✓ Reward Optimization créée ✓ VIP Intelligence créée ✓ Loyalty Health Score créé ✓ Engagement Analytics créée ✓ Loyalty Intelligence finalisée
Livrables
CustomerLifetimeValue RetentionPrediction LoyaltyInsight RewardOptimization LoyaltyHealthScore CustomerLifetimeValueService RetentionPredictionService RewardOptimizationService VipIntelligenceService EngagementAnalyticsService LoyaltyHealthScoreService LoyaltyInsightService Loyalty Intelligence Platform
Sprint 8-C.1 — Referral Program & Advocacy Core
Objectif
Construire le moteur de croissance virale Enterprise.
Cette couche permet :
Parrainage Récompenses Ambassadeurs Advocacy Marketing Tracking viral Attribution
afin d'accélérer :
Acquisition clients Croissance organique Recommandations Rétention Revenus
À l'issue de cette étape :
✓ ReferralProgram ✓ ReferralCode ✓ ReferralReward ✓ ReferralTracking ✓ AdvocateProfile ✓ ReferralDashboard ✓ Referral Growth Platform
Architecture cible
Customer ↓ Referral Platform ├── Referral Programs ├── Referral Codes ├── Referral Rewards ├── Tracking Engine ├── Advocate Profiles └── Referral Dashboard ↓ Marketing Automation ↓ Loyalty Program ↓ Growth Engine
Sprint 8-C.1-A
Extension Prisma
Étape 1 — ReferralProgram
Ajouter dans schema.prisma
model ReferralProgram {
id String
@id
@default(uuid())
tenantId String
code String
name String
description String?
status ReferralProgramStatus
rewardType ReferralRewardType
rewardValue Decimal
@db.Decimal(14,2)
active Boolean
@default(true)
startDate DateTime?
endDate DateTime?
createdAt DateTime
@default(now())
updatedAt DateTime
@updatedAt
@@unique([tenantId, code])
@@index([tenantId])
@@index([status])
}
Étape 2 — ReferralCode
Ajouter
model ReferralCode {
id String
@id
@default(uuid())
tenantId String
customerId String
referralProgramId String
code String
usageCount Int
@default(0)
maxUsage Int?
active Boolean
@default(true)
expiresAt DateTime?
createdAt DateTime
@default(now())
@@unique([tenantId, code])
@@index([customerId])
@@index([referralProgramId])
}
Étape 3 — ReferralReward
Ajouter
model ReferralReward {
id String
@id
@default(uuid())
referralTrackingId String
customerId String
rewardType ReferralRewardType
rewardValue Decimal
@db.Decimal(14,2)
status ReferralRewardStatus
grantedAt DateTime?
createdAt DateTime
@default(now())
@@index([customerId])
@@index([status])
}
Étape 4 — ReferralTracking
Ajouter
model ReferralTracking {
id String
@id
@default(uuid())
tenantId String
referralCodeId String
referrerCustomerId String
referredCustomerId String?
status ReferralStatus
source ReferralSource?
firstVisitAt DateTime?
signupAt DateTime?
firstBookingAt DateTime?
conversionValue Decimal?
@db.Decimal(14,2)
createdAt DateTime
@default(now())
@@index([tenantId])
@@index([referrerCustomerId])
@@index([status])
}
Étape 5 — AdvocateProfile
Ajouter
model AdvocateProfile {
customerId String
@id
advocateScore Float
referralsCount Int
@default(0)
conversionsCount Int
@default(0)
generatedRevenue Decimal
@db.Decimal(14,2)
socialInfluenceScore Float?
advocateLevel AdvocateLevel
updatedAt DateTime
@updatedAt
}
Étape 6 — ReferralDashboardSnapshot
Ajouter
model ReferralDashboardSnapshot {
id String
@id
@default(uuid())
tenantId String
snapshotDate DateTime
referralsGenerated Int
conversions Int
rewardsGranted Int
revenueGenerated Decimal
@db.Decimal(14,2)
activeAdvocates Int
createdAt DateTime
@default(now())
@@index([tenantId])
@@index([snapshotDate])
}
Étape 7 — Enums
Ajouter
enum ReferralProgramStatus {
DRAFT
ACTIVE
PAUSED
ARCHIVED
}
enum ReferralRewardType {
POINTS
CREDIT
DISCOUNT
CASHBACK
FREE_NIGHT
}
enum ReferralRewardStatus {
PENDING
GRANTED
CANCELLED
EXPIRED
}
enum ReferralStatus {
INVITED
REGISTERED
CONVERTED
REWARDED
REJECTED
}
enum ReferralSource {
EMAIL
SMS
WHATSAPP
SOCIAL
DIRECT_LINK
}
enum AdvocateLevel {
BRONZE
SILVER
GOLD
PLATINUM
ELITE
}
Étape 8 — Migration
npx prisma migrate dev \
--name referral_program_core
Sprint 8-C.1-B
Referral Module
Étape 9 — Structure
src/modules/referrals ├── programs ├── codes ├── rewards ├── tracking ├── advocates ├── dashboard └── referrals.module.ts
Étape 10 — Services
ReferralProgramService ReferralCodeService ReferralRewardService ReferralTrackingService AdvocateProfileService ReferralDashboardService
Sprint 8-C.1-C
Programmes de Parrainage
Étape 11 — ReferralProgramService
Créer
referral-program.service.ts
Méthodes
createProgram() activateProgram() pauseProgram() archiveProgram() duplicateProgram()
Étape 12 — Types
Supporter
Double récompense Récompense unique Multi-niveaux Saisonnier VIP
Sprint 8-C.1-D
Codes de Parrainage
Étape 13 — ReferralCodeService
Créer
referral-code.service.ts
Générer
Code unique Lien court QR Code Deep Link
Étape 14 — Méthodes
generateCode() validateCode() expireCode() trackUsage()
Étape 15 — Exemple
JOHN-8X4P2 ↓ https://app/ref/JOHN-8X4P2
Sprint 8-C.1-E
Récompenses
Étape 16 — ReferralRewardService
Créer
referral-reward.service.ts
Supporter
Points fidélité Crédit portefeuille Réduction Cashback Nuit offerte
Étape 17 — Méthodes
grantReward() cancelReward() expireReward() synchronizeLoyaltyReward()
Sprint 8-C.1-F
Tracking
Étape 18 — ReferralTrackingService
Créer
referral-tracking.service.ts
Pipeline
Invitation ↓ Visite ↓ Inscription ↓ Réservation ↓ Récompense
Étape 19 — Méthodes
trackVisit() trackSignup() trackConversion() calculateAttribution()
Étape 20 — Attribution
Associer
Referral ↓ Customer ↓ Reservation ↓ Revenue
Sprint 8-C.1-G
Ambassadeurs
Étape 21 — AdvocateProfileService
Créer
advocate-profile.service.ts
Calculer
Referrals Conversions Revenue Influence Engagement
Étape 22 — Niveaux
Bronze Silver Gold Platinum Elite
Étape 23 — Méthodes
calculateAdvocateScore() assignAdvocateLevel() rankAdvocates() generateAdvocateInsights()
Sprint 8-C.1-H
Referral Dashboard
Étape 24 — ReferralDashboardService
Créer
referral-dashboard.service.ts
Afficher
Invitations Conversions Revenue Rewards Top Advocates
Étape 25 — KPIs
Referral Conversion Rate Cost Per Referral Revenue Per Advocate Referral ROI Advocate Growth
Sprint 8-C.1-I
API Referral
Étape 26 — Endpoints
GET /referrals/programs POST /referrals/programs GET /referrals/codes POST /referrals/codes GET /referrals/tracking GET /referrals/advocates GET /referrals/dashboard
Étape 27 — Exemple
{
"program":"Refer & Earn",
"referrals":1240,
"conversions":318,
"conversionRate":25.6,
"revenueGenerated":84200
}
Sprint 8-C.1-J
Gouvernance
Étape 28 — Permissions
referral.read referral.manage referral.rewards referral.analytics referral.advocates referral.admin
Étape 29 — Audit
REFERRAL_PROGRAM_CREATED REFERRAL_CODE_GENERATED REFERRAL_CONVERTED REWARD_GRANTED ADVOCATE_LEVEL_UPDATED REFERRAL_DASHBOARD_VIEWED
Étape 30 — Jobs
Toutes les heures Referral Attribution Toutes les nuits Reward Distribution Advocate Ranking Refresh Dashboard Snapshot
Préparation Sprint 8-C.2
Compatible avec :
Advocacy Intelligence Influencer Programs Ambassador Platform Referral Optimization Growth Intelligence
Définition de terminé
Le Sprint 8-C.1 est terminé lorsque :
✓ ReferralProgram créé ✓ ReferralCode créé ✓ ReferralReward créé ✓ ReferralTracking créé ✓ AdvocateProfile créé ✓ ReferralDashboard créé ✓ Referral Platform opérationnelle
Livrables
ReferralProgram ReferralCode ReferralReward ReferralTracking AdvocateProfile ReferralDashboardSnapshot ReferralProgramService ReferralCodeService ReferralRewardService ReferralTrackingService AdvocateProfileService ReferralDashboardService Referral Growth Platform
Sprint 8-C.2 — Advocacy Intelligence & Growth Engine
Objectif
Transformer la plateforme de parrainage en moteur de croissance prédictif Enterprise.
Cette couche permet :
Scoring ambassadeurs Prévision referrals Détection influenceurs Optimisation croissance Recommandations IA Pilotage acquisition organique
afin de maximiser :
Referral Revenue Acquisition organique Influence client Croissance virale ROI marketing
À l'issue de cette étape :
✓ Advocate Score ✓ Referral Forecasting ✓ Influencer Detection ✓ Growth Intelligence ✓ Referral Optimization ✓ Growth Health Score ✓ Growth Intelligence Platform
Architecture cible
Referral Platform ↓ Growth Intelligence Engine ├── Advocate Scoring ├── Referral Forecasting ├── Influencer Detection ├── Growth Analytics ├── Referral Optimization ├── Growth Health Scoring └── AI Recommendations ↓ Marketing Automation ↓ Loyalty Platform ↓ Revenue Growth
Sprint 8-C.2-A
Extension Prisma
Étape 1 — AdvocateScore
Ajouter dans schema.prisma
model AdvocateScore {
customerId String
@id
overallScore Float
referralScore Float
conversionScore Float
influenceScore Float
engagementScore Float
revenueScore Float
calculatedAt DateTime
@updatedAt
}
Étape 2 — ReferralForecast
Ajouter
model ReferralForecast {
id String
@id
@default(uuid())
customerId String?
forecastType ReferralForecastType
forecastDate DateTime
predictedValue Float
confidenceScore Float?
generatedAt DateTime
@default(now())
@@index([customerId])
@@index([forecastType])
@@index([forecastDate])
}
Étape 3 — InfluencerProfile
Ajouter
model InfluencerProfile {
customerId String
@id
influenceScore Float
audienceScore Float?
engagementScore Float?
referralReach Int
@default(0)
influencerTier InfluencerTier
updatedAt DateTime
@updatedAt
}
Étape 4 — GrowthInsight
Ajouter
model GrowthInsight {
id String
@id
@default(uuid())
tenantId String
category GrowthInsightCategory
severity InsightSeverity
title String
description String
recommendation String?
impactScore Float?
createdAt DateTime
@default(now())
@@index([tenantId])
@@index([category])
}
Étape 5 — GrowthHealthScore
Ajouter
model GrowthHealthScore {
tenantId String
@id
overallScore Float
acquisitionScore Float
referralScore Float
advocacyScore Float
conversionScore Float
retentionScore Float
calculatedAt DateTime
@updatedAt
}
Étape 6 — ReferralOptimization
Ajouter
model ReferralOptimization {
id String
@id
@default(uuid())
referralProgramId String
currentRewardValue Decimal
@db.Decimal(14,2)
suggestedRewardValue Decimal
@db.Decimal(14,2)
expectedConversionGain Float?
expectedRevenueGain Decimal?
@db.Decimal(14,2)
implemented Boolean
@default(false)
createdAt DateTime
@default(now())
@@index([referralProgramId])
}
Étape 7 — Enums
Ajouter
enum ReferralForecastType {
REFERRALS
CONVERSIONS
REVENUE
ADVOCATES
}
enum InfluencerTier {
MICRO
RISING
MACRO
ELITE
}
enum GrowthInsightCategory {
REFERRAL
ADVOCACY
ACQUISITION
CONVERSION
REVENUE
}
Étape 8 — Migration
npx prisma migrate dev \
--name advocacy_intelligence
Sprint 8-C.2-B
Growth Intelligence Module
Étape 9 — Structure
src/modules/growth-intelligence ├── advocates ├── forecasting ├── influencers ├── analytics ├── optimization ├── health └── growth-intelligence.module.ts
Étape 10 — Services
AdvocateScoreService ReferralForecastService InfluencerDetectionService GrowthAnalyticsService ReferralOptimizationService GrowthHealthScoreService GrowthInsightService
Sprint 8-C.2-C
Advocate Score
Étape 11 — AdvocateScoreService
Créer
advocate-score.service.ts
Calculer
Referrals Conversions Revenue Engagement Influence
Étape 12 — Pondération
Referrals 30% Conversions 25% Revenue 20% Influence 15% Engagement 10%
Étape 13 — Classification
90-100 Elite Advocate 75-89 Premium Advocate 50-74 Active Advocate 0-49 Emerging Advocate
Sprint 8-C.2-D
Referral Forecasting
Étape 14 — ReferralForecastService
Créer
referral-forecast.service.ts
Prévoir
Referrals Conversions Revenue Growth
Étape 15 — Horizons
30 jours 90 jours 12 mois
Étape 16 — Méthodes
forecastReferrals() forecastConversions() forecastRevenue() forecastAdvocateGrowth()
Sprint 8-C.2-E
Influencer Detection
Étape 17 — InfluencerDetectionService
Créer
influencer-detection.service.ts
Identifier
Top Advocates Brand Ambassadors High Reach Customers Community Leaders VIP Influencers
Étape 18 — Méthodes
detectInfluencers() calculateInfluenceScore() assignInfluencerTier() generateInfluencerInsights()
Étape 19 — Tiers
Micro Rising Macro Elite
Sprint 8-C.2-F
Growth Intelligence
Étape 20 — GrowthAnalyticsService
Créer
growth-analytics.service.ts
Mesurer
Referral Funnel Acquisition Funnel Conversion Funnel Advocate Funnel Revenue Funnel
Étape 21 — KPIs
Referral Conversion Rate Advocate Activation Rate Revenue Per Referral Customer Acquisition Cost Viral Coefficient
Étape 22 — Classements
Produire
Top Advocates Top Influencers Top Revenue Contributors Fastest Growing Segments
Sprint 8-C.2-G
Referral Optimization
Étape 23 — ReferralOptimizationService
Créer
referral-optimization.service.ts
Optimiser
Reward Value Referral Funnel Conversion Rate Program Profitability
Étape 24 — Méthodes
analyzeProgram() optimizeRewardValue() forecastRewardImpact() recommendReferralChanges()
Étape 25 — Exemple
Reward 20€ ↓ 25€ ↓ +18% conversions ↓ +11% revenu net
Sprint 8-C.2-H
Growth Health Score
Étape 26 — GrowthHealthScoreService
Créer
growth-health-score.service.ts
Pondération
Referral Growth 25% Conversion 25% Advocacy 20% Revenue 20% Retention 10%
Étape 27 — Classification
90-100 Excellent 75-89 Healthy 50-74 Warning 0-49 Critical
Étape 28 — Exemple
Growth Health 94 Excellent
Sprint 8-C.2-I
Executive Growth Intelligence
Étape 29 — GrowthInsightService
Créer
growth-insight.service.ts
Générer
Advocate Opportunities Influencer Opportunities Referral Optimization Acquisition Improvements Growth Risks
Étape 30 — Exemples
Top 5 advocates ↓ 34% du revenu referral ↓ Programme ambassadeur recommandé
Programme A Conversion 7% ↓ Sous moyenne ↓ Récompense à optimiser
Sprint 8-C.2-J
Dashboard Intelligence
Étape 31 — Endpoints
GET /referrals/intelligence GET /referrals/forecasting GET /referrals/influencers GET /referrals/optimization GET /referrals/health GET /referrals/leaderboard
Étape 32 — Exemple
{
"advocateScore":96,
"influencerTier":"ELITE",
"forecastRevenue":125000,
"growthHealth":94,
"recommendations":6
}
Étape 33 — Analytics
Mesurer
Forecast Accuracy Influencer Impact Referral ROI Viral Coefficient Growth Health Trend
Gouvernance
Étape 34 — Permissions
growth.read growth.analytics growth.forecasting growth.optimization growth.executive
Étape 35 — Audit
ADVOCATE_SCORE_UPDATED FORECAST_GENERATED INFLUENCER_DETECTED REFERRAL_OPTIMIZATION_CREATED GROWTH_HEALTH_UPDATED GROWTH_INSIGHT_CREATED
Étape 36 — Jobs
Toutes les nuits Advocate Score Refresh Forecast Generation Influencer Detection Optimization Analysis Growth Health Refresh
Clôture Domaine Growth
À la fin du Sprint 8-C.2 :
✓ Referral Platform ✓ Advocacy Intelligence ✓ Influencer Detection ✓ Growth Analytics ✓ Referral Optimization ✓ Growth Health Score ✓ Growth Engine
sont entièrement opérationnels.
Préparation Sprint 9
Compatible avec :
Business Intelligence Data Warehouse KPIs Reporting Executive Cockpit Enterprise Analytics
Définition de terminé
Le Sprint 8-C.2 est terminé lorsque :
✓ Advocate Score créé ✓ Referral Forecasting créé ✓ Influencer Detection créé ✓ Growth Intelligence créée ✓ Referral Optimization créée ✓ Growth Health Score créé ✓ Growth Engine finalisé
Livrables
AdvocateScore ReferralForecast InfluencerProfile GrowthInsight GrowthHealthScore ReferralOptimization AdvocateScoreService ReferralForecastService InfluencerDetectionService GrowthAnalyticsService ReferralOptimizationService GrowthHealthScoreService GrowthInsightService Growth Intelligence Platform