feat: Add Formbricks integration, update forms with webhooks, enhance navigation

- Integrate @formbricks/js for future surveys (FormbricksProvider)
- Add WebhookForm component for unified form submission (contact/franchise/membership)
- Update contact form with reason dropdown field
- Update franchise form with new fields: estado, ciudad, socios checkbox
- Update franchise benefits: manuals, training platform, RH system, investment $100k
- Add Contacto link to desktop/mobile nav and footer
- Update membership form to use WebhookForm with membership_id select
- Update hero buttons to use #3E352E color consistently
- Refactor contact/franchise pages to use new hero layout and components
- Add webhook utility (lib/webhook.ts) for parallel submission to test+prod
- Add email receipt hooks to booking endpoints
- Update globals.css with new color variables and navigation styles
- Docker configuration for deployment
This commit is contained in:
Marco Gallegos
2026-01-17 22:54:20 -06:00
parent b7d6e51d67
commit 66e20d25a7
60 changed files with 4534 additions and 791 deletions

116
API_TESTING_GUIDE.md Normal file
View File

@@ -0,0 +1,116 @@
# AnchorOS API Testing Guide
## 📋 **Rutas a Probar - Testing Endpoints**
### **🔐 Autenticación**
- `POST /api/auth/login` - Login de usuario
- Body: `{ email, password }`
- Buscar: Token JWT en respuesta
- `POST /api/auth/register` - Registro de cliente
- Body: `{ first_name, last_name, email, phone, password }`
- Buscar: Usuario creado con ID
### **👥 Gestión de Clientes**
- `GET /api/customers` - Listar clientes
- Headers: Authorization Bearer token
- Buscar: Array de clientes con datos completos
- `POST /api/customers` - Crear cliente
- Headers: Authorization Bearer token
- Body: `{ first_name, last_name, email, phone }`
- Buscar: Cliente creado
- `GET /api/customers/[id]` - Detalles de cliente
- Buscar: Datos completos del cliente + bookings
### **💺 Reservas (Bookings)**
- `GET /api/bookings` - Listar reservas
- Query params: `?status=confirmed&date=2024-01-01`
- Buscar: Array de bookings con relaciones (customer, service, staff)
- `POST /api/bookings` - Crear reserva
- Body: `{ customer_id, service_id, staff_id, location_id, date, notes }`
- Buscar: Booking creado + email enviado automáticamente
- `PUT /api/bookings/[id]` - Actualizar reserva
- Body: `{ status: 'confirmed' }`
- Buscar: Status actualizado
- `DELETE /api/bookings/[id]` - Cancelar reserva
- Buscar: Status cambiado a 'cancelled'
### **🏢 Ubicaciones**
- `GET /api/locations` - Listar ubicaciones
- Buscar: Array de locations con servicios disponibles
### **👨‍💼 Staff**
- `GET /api/staff` - Listar personal
- Buscar: Array de staff con especialidades
### **💅 Servicios**
- `GET /api/services` - Listar servicios
- Buscar: 22 servicios de Anchor 23 con precios
### **📅 Disponibilidad**
- `GET /api/availability?service_id=1&date=2024-01-01&location_id=1`
- Buscar: Slots disponibles por staff
- `POST /api/availability/blocks` - Bloquear horario
- Body: `{ staff_id, start_time, end_time, reason }`
- Buscar: Bloqueo creado
### **🏪 Kiosk (Auto-servicio)**
- `GET /api/kiosk/locations` - Ubicaciones disponibles
- Buscar: Locations con servicios activos
- `POST /api/kiosk/bookings` - Reserva desde kiosk
- Body: `{ service_id, customer_data, date }`
- Buscar: Booking creado + email enviado
- `POST /api/kiosk/walkin` - Reserva inmediata
- Body: `{ service_id, customer_data }`
- Buscar: Booking inmediato confirmado
### **📊 Aperture (Dashboard Admin)**
- `GET /api/aperture/stats` - Estadísticas generales
- Buscar: Métricas de negocio (revenue, bookings, etc.)
- `GET /api/aperture/reports` - Reportes detallados
- Buscar: Datos para gráficos y análisis
- `GET /api/aperture/pos` - Sistema POS
- Buscar: Servicios disponibles para venta
### **🧾 Recibos**
- `GET /api/receipts/[bookingId]` - Descargar PDF
- Buscar: PDF generado con datos de reserva
- `POST /api/receipts/[bookingId]/email` - Enviar por email
- Buscar: Email enviado con PDF adjunto
### **⚙️ Sistema**
- `GET /api/health` - Health check
- Buscar: `{ status: 'ok' }`
- `POST /api/cron/reset-invitations` - Reset diario
- Buscar: Invitaciones expiradas reseteadas
## 🔍 **Qué Buscar en Cada Respuesta**
### **✅ Éxito**
- Status codes: 200, 201
- Estructura de datos correcta
- Relaciones cargadas (joins)
- Emails enviados (para bookings)
### **❌ Errores**
- Status codes: 400, 401, 403, 404, 500
- Mensajes de error descriptivos
- Validación de datos
- Autenticación requerida
### **🔄 Estados**
- Bookings: `pending``confirmed``completed`
- Pagos: `pending``paid`
- Recursos: `available``booked`
## 🧪 **Casos de Edge**
- **Autenticación**: Token expirado, permisos insuficientes
- **Reservas**: Doble booking, horarios conflictivos
- **Pagos**: Montos inválidos, métodos no soportados
- **Kiosk**: Datos faltantes, servicios no disponibles
## 📈 **Performance**
- Response time < 500ms para GET
- Response time < 2s para POST complejos
- Conexiones concurrentes soportadas