File size: 3,725 Bytes
f1a06cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Plan d'Implémentation Production
*Priorité : du plus bloquant au moins urgent*

---

## Phase 1 — Déploiement Railway opérationnel (immediat)

> Objectif : Railway répond, webhook Meta validé, premiers messages reçoivent une réponse.

### Étape 1.1 — Variables Railway (manuel, 5 min)
1. **Supprimer** `DISABLE_WHATSAPP_SEND`
2. **Ajouter** `WHATSAPP_APP_SECRET` (Meta App → Basic Settings → App Secret)
3. Vérifier que `API_URL` = `https://whatsapp-worker-production-0bc0.up.railway.app`

### Étape 1.2 — Valider le webhook Meta (manuel, 2 min)
1. Attendre fin du redéploiement Railway (logs : `Server listening on http://0.0.0.0:3001`)
2. Tester : `curl https://whatsapp-worker-production-0bc0.up.railway.app/``{"ok":true}`
3. Meta Developers → WhatsApp → Configuration → Webhook → Retenter la validation

### Étape 1.3 — Créer le contenu pédagogique (base de données)
Le flow complet nécessite au moins **1 Track avec 3+ TrackDays**. À insérer via l'endpoint seed existant (`SEED_DATA`) ou directement en base :
- Envoyer `SEED_DATA` depuis WhatsApp (déclencheur existant dans `whatsapp.ts`)

---

## Phase 2 — Corriger les bugs d'interface (1-2 jours)

### Étape 2.1 — Fix Admin App : champ `whatsappId` → `phone`
**Fichier** : `apps/admin/src/App.tsx` lignes 164, 237

```diff
- env.user?.whatsappId || 'Unknown'
+ env.user?.phone || 'Unknown'
```

### Étape 2.2 — Fix Web App : portail étudiant factice
**Fichier** : `apps/web/src/App.tsx` — fonction `handleLogin`

Implémenter l'authentification réelle :
- Appel API avec le numéro de téléphone
- Retour des documents générés (OnePager, PitchDeck) via liens R2

### Étape 2.3 — Page de succès Stripe
Créer une page `/payment/success` dans `apps/web` qui :
- Confirme le paiement à l'utilisateur
- Affiche un lien vers WhatsApp pour commencer

---

## Phase 3 — Gestion de contenu admin (3-5 jours)

### Étape 3.1 — API backend : routes Track/TrackDay
**Fichier** : `apps/api/src/routes/admin.ts`

Ajouter :
```typescript
POST /v1/admin/tracks          // Créer un track
PUT  /v1/admin/tracks/:id      // Modifier
POST /v1/admin/tracks/:id/days // Ajouter un TrackDay
PUT  /v1/admin/tracks/:id/days/:dayId
DELETE /v1/admin/tracks/:id
```

### Étape 3.2 — Interface admin : Content Manager
**Fichier** : `apps/admin/src/App.tsx`

Ajouter une vue "Content" dans le sidebar :
- Liste des Tracks avec bouton Créer/Modifier
- Pour chaque Track : liste des jours avec éditeur de texte + upload audio

---

## Phase 4 — Améliorations qualité (optionnel)

### Étape 4.1 — Unifier Enrollment / UserProgress
Les deux tables doublonnent `currentDay`. Migrer vers `UserProgress` uniquement et retirer `currentDay` de `Enrollment`.

### Étape 4.2 — Logger les messages entrants (modèle Message)
Le modèle `Message` en base n'est jamais rempli. Ajouter un `prisma.message.create()` dans `handleIncomingMessage`.

### Étape 4.3 — Scheduler : vérification état avant envoi
Dans `scheduler.ts`, avant d'envoyer la leçon du jour, vérifier que l'enrollment est `ACTIVE` et que le `currentDay` correspond.

### Étape 4.4 — Variables VITE_API_URL dans les apps frontend
S'assurer que `VITE_API_URL` est configuré dans les `.env` de production de `apps/admin` et `apps/web`.

---

## Résumé des priorités

```
✅ FAIT        → API + Worker Railway, todos les bugs WhatsApp fixés
🔴 CRITIQUE    → Supprimer DISABLE_WHATSAPP_SEND, ajouter WHATSAPP_APP_SECRET
🟠 IMPORTANT   → Valider webhook Meta, créer contenu (SEED_DATA)
🟡 SOON        → Fix admin phone field, portail étudiant réel
🟢 OPTIONNEL   → Stripe live, content manager admin, Message logging
```