Skip to content

Commit d034796

Browse files
Fix: Resolve Firestore import errors
1 parent 3967c85 commit d034796

6 files changed

Lines changed: 1274 additions & 0 deletions

File tree

SUPABASE_MIGRATION_GUIDE.md

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
# Guide de Migration Firebase vers Supabase - Phase 3
2+
3+
## Fonctions Edge Migrées
4+
5+
### ✅ Fonctions Stripe
6+
7+
#### 1. `stripe-setup-intent`
8+
**Ancienne fonction:** `functions/src/stripeCreateSetup.ts`
9+
**Nouvelle fonction:** `supabase/functions/stripe-setup-intent/index.ts`
10+
11+
- Crée des Setup Intents Stripe pour configurer les méthodes de paiement
12+
- Gère automatiquement les clients Stripe
13+
- Met à jour les campagnes avec les informations Stripe
14+
- **Authentification requise:**
15+
16+
#### 2. `stripe-webhook`
17+
**Ancienne fonction:** `functions/src/processStripeWebhook.ts`
18+
**Nouvelle fonction:** `supabase/functions/stripe-webhook/index.ts`
19+
20+
- Traite tous les webhooks Stripe (checkout, setup_intent, etc.)
21+
- Met à jour automatiquement les campagnes dans Supabase
22+
- Gère l'attachement des méthodes de paiement
23+
- **Authentification requise:** ❌ (webhook public)
24+
- **Secret requis:** `STRIPE_WEBHOOK_SECRET`
25+
26+
#### 3. `stripe-payment-methods`
27+
**Ancienne fonction:** `functions/src/stripeGetPaymentMethods.ts` + autres
28+
**Nouvelle fonction:** `supabase/functions/stripe-payment-methods/index.ts`
29+
30+
- GET: Récupère les méthodes de paiement d'un utilisateur
31+
- POST: Attache ou définit une méthode par défaut
32+
- DELETE: Supprime une méthode de paiement
33+
- **Authentification requise:**
34+
35+
### ✅ Fonctions de Validation
36+
37+
#### 4. `validate-campaign`
38+
**Ancienne fonction:** `functions/src/validateCampaignData.ts`
39+
**Nouvelle fonction:** `supabase/functions/validate-campaign/index.ts`
40+
41+
- Valide les données de campagne avant création
42+
- Vérifie les URLs, domaines suspects, limites
43+
- Retourne des données nettoyées
44+
- **Authentification requise:**
45+
46+
### ✅ Fonctions de Gestion
47+
48+
#### 5. `manage-affiliates`
49+
**Ancienne fonction:** Logique dispersée dans Firebase
50+
**Nouvelle fonction:** `supabase/functions/manage-affiliates/index.ts`
51+
52+
- CRUD complet pour les affiliés
53+
- Génération automatique de codes de tracking
54+
- Validation des données d'affiliés
55+
- **Authentification requise:**
56+
57+
#### 6. `track-conversion`
58+
**Ancienne fonction:** Logique Firebase de tracking
59+
**Nouvelle fonction:** `supabase/functions/track-conversion/index.ts`
60+
61+
- POST: Enregistre de nouvelles conversions
62+
- GET: Récupère les conversions avec filtres
63+
- Calcul automatique des commissions
64+
- Système d'audit et de vérification
65+
- **Authentification requise:** ❌ (tracking public)
66+
67+
#### 7. `calculate-commissions`
68+
**Ancienne fonction:** `functions/src/calculateCommissions.ts`
69+
**Nouvelle fonction:** `supabase/functions/calculate-commissions/index.ts`
70+
71+
- Calcule les commissions par période
72+
- Génère des rapports détaillés
73+
- Groupage par affilié et campagne
74+
- **Authentification requise:**
75+
76+
### ✅ Fonctions Shopify
77+
78+
#### 8. `shopify-oauth`
79+
**Ancienne fonction:** `functions/src/shopifyOAuth.ts`
80+
**Nouvelle fonction:** `supabase/functions/shopify-oauth/index.ts`
81+
82+
- POST: Génère des URLs d'autorisation Shopify
83+
- PUT: Échange les codes d'autorisation contre des tokens
84+
- Gestion sécurisée des états OAuth
85+
- **Authentification requise:**
86+
87+
## Configuration des Secrets
88+
89+
Les secrets suivants ont été configurés dans Supabase :
90+
91+
-`STRIPE_SECRET_KEY` - Clé secrète Stripe
92+
-`STRIPE_WEBHOOK_SECRET` - Secret pour vérifier les webhooks Stripe
93+
-`SHOPIFY_API_KEY` - Clé API Shopify
94+
-`SHOPIFY_API_SECRET` - Secret API Shopify
95+
-`SUPABASE_SERVICE_ROLE_KEY` - Pour les opérations de service
96+
97+
## Fonctions Publiques (sans JWT)
98+
99+
Ces fonctions sont configurées pour être accessibles sans authentification :
100+
101+
- `stripe-webhook` - Pour recevoir les webhooks de Stripe
102+
- `track-conversion` - Pour permettre le tracking depuis des sites externes
103+
- Toutes les fonctions Shopify existantes
104+
105+
## Tests Recommandés
106+
107+
### 1. Test des Setup Intents Stripe
108+
```javascript
109+
const { data } = await supabase.functions.invoke('stripe-setup-intent', {
110+
body: {
111+
userEmail: 'test@example.com',
112+
campaignName: 'Test Campaign',
113+
campaignId: 'uuid-here'
114+
}
115+
});
116+
```
117+
118+
### 2. Test de Validation de Campagne
119+
```javascript
120+
const { data } = await supabase.functions.invoke('validate-campaign', {
121+
body: {
122+
name: 'Ma Campagne',
123+
description: 'Description test',
124+
target_url: 'https://example.com',
125+
is_active: true,
126+
default_commission_rate: 15
127+
}
128+
});
129+
```
130+
131+
### 3. Test de Gestion d'Affiliés
132+
```javascript
133+
// Créer un affilié
134+
const { data } = await supabase.functions.invoke('manage-affiliates', {
135+
body: {
136+
name: 'John Doe',
137+
email: 'john@example.com',
138+
campaignId: 'uuid-here',
139+
commissionRate: 20
140+
}
141+
});
142+
```
143+
144+
### 4. Test de Tracking de Conversion
145+
```javascript
146+
// Enregistrer une conversion (sans auth)
147+
const response = await fetch(`${SUPABASE_URL}/functions/v1/track-conversion`, {
148+
method: 'POST',
149+
headers: {
150+
'Content-Type': 'application/json'
151+
},
152+
body: JSON.stringify({
153+
campaignId: 'uuid-here',
154+
affiliateId: 'uuid-here',
155+
amount: 99.99,
156+
orderId: 'order-123'
157+
})
158+
});
159+
```
160+
161+
## Prochaines Étapes
162+
163+
### Phase 4 - Migration des Hooks et Services Frontend
164+
1. Mettre à jour `useCampaigns` pour utiliser Supabase
165+
2. Migrer `useAffiliates` vers les nouvelles Edge Functions
166+
3. Adapter les services Stripe pour utiliser les nouvelles fonctions
167+
4. Mettre à jour les composants de tracking
168+
169+
### Phase 5 - Nettoyage
170+
1. Supprimer les anciens fichiers Firebase
171+
2. Nettoyer les dépendances Firebase inutilisées
172+
3. Mettre à jour la documentation
173+
174+
## Points d'Attention
175+
176+
1. **Webhooks Stripe** - Mettre à jour l'URL du webhook dans Stripe Dashboard vers :
177+
`https://wsvhmozduyiftmuuynpi.supabase.co/functions/v1/stripe-webhook`
178+
179+
2. **CORS** - Toutes les fonctions sont configurées avec CORS ouvert
180+
181+
3. **Logs** - Utiliser les logs Supabase pour le debugging :
182+
- Dashboard > Functions > [nom-fonction] > Logs
183+
184+
4. **RLS** - Les fonctions utilisent soit l'auth utilisateur soit le service role key selon les besoins
185+
186+
## Avantages de la Migration
187+
188+
-**Performance** - Edge Functions plus rapides que Cloud Functions
189+
-**Coûts** - Pricing plus avantageux que Firebase Functions
190+
-**Intégration** - Native avec la base de données Supabase
191+
-**Développement** - Développement et déploiement simplifiés
192+
-**Monitoring** - Logs et monitoring intégrés au dashboard Supabase

supabase/config.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
project_id = "wsvhmozduyiftmuuynpi"
22

3+
# Shopify functions (public)
34
[functions.shopify-auth]
45
verify_jwt = false
56

@@ -16,4 +17,12 @@ verify_jwt = false
1617
verify_jwt = false
1718

1819
[functions.shopify-private-app]
20+
verify_jwt = false
21+
22+
# Stripe functions from Firebase migration
23+
[functions.stripe-webhook]
24+
verify_jwt = false
25+
26+
# Tracking functions (public for external tracking)
27+
[functions.track-conversion]
1928
verify_jwt = false

0 commit comments

Comments
 (0)