1.6 KiB
1.6 KiB
Spec d'integration lead — Site Public -> Frappe CRM
Date: 2026-03-19
Objectif
Acheminer les soumissions du formulaire contact en production directement vers Frappe CRM Lead, tout en gardant un fallback sécurisé vers l'ancien CRM custom tant que la bascule n'est pas totalement close.
Flux cible
- Visiteur remplit
src/components/sections/Contact.astro. - Clic sur
Envoienvoie unPOST /api/submit-lead(JSON). src/pages/api/submit-lead.ts:- valide champs (
name,email,consent). - mappe vers payload Frappe.
- tente
POST ${FRAPPE_URL}/api/resource/CRM Lead. - fallback vers
${CRM_FALLBACK_URL}/api/intake/leadsi Frappe indisponible.
- valide champs (
- Réponse UI:
- succès: écran de succès local
- échec: message d’erreur + trace de tracking
Contrats techniques
- Environnement requis (runtime Docker):
FRAPPE_URLFRAPPE_API_KEYFRAPPE_API_SECRETCRM_FALLBACK_URL(optionnel)
- Endpoint front:
CONTACT_FORM_ENDPOINTimport.meta.env.PUBLIC_API_URL+/api/submit-lead(prod)- fallback
'/api/submit-lead'
Risques connus
- Si la vérification CORS doit couvrir un nouveau hostname, ajouter l’origine dans
ALLOWED_ORIGINS. - Les erreurs côté lead peuvent remonter sans détail JSON détaillé dans le client (redondance volontaire pour éviter fuite de secrets).
Critères d’acceptation
- Un
POST /api/submit-leadvalide crée un lead dans Frappe. - En cas de KO Frappe, fallback custom répond
2xxsi activé. - Logs applicatifs montrent un parcours traceable sans fuite de secret.