- Prefijo v2: MCH - TRACEABILITY-MASTER.yml creado - Listo para integracion como submodulo Workspace: v2.0.0 | SIMCO: v4.0.0
4.5 KiB
4.5 KiB
MCH-015: Pedidos via WhatsApp
Metadata
- Codigo: MCH-015
- Fase: 4 - Pedidos y Clientes
- Prioridad: P1
- Estado: Pendiente
- Fecha estimada: Sprint 9-10
Descripcion
Sistema completo de pedidos via WhatsApp: clientes pueden hacer pedidos conversando con el bot, el negocio recibe notificaciones, procesa el pedido, y confirma al cliente.
Objetivos
- Recepcion de pedidos via chat
- Confirmacion automatica o manual
- Notificacion al negocio
- Estado del pedido en tiempo real
- Historial de pedidos por cliente
Alcance
Incluido
- Pedidos via chat natural (NLU)
- Carrito conversacional
- Confirmacion de pedido
- Notificacion push/WhatsApp al dueno
- Estados: recibido, preparando, listo, entregado
- Cancelacion de pedido
Excluido
- Pagos en linea dentro de WhatsApp
- Integracion con delivery apps (Rappi, Uber)
- Pedidos programados
Flujo de Pedido
Cliente Hace Pedido
Cliente: "Quiero pedir 2 Cocas y unas Sabritas"
Bot: "Perfecto! Tu pedido:
- 2x Coca-Cola 600ml = $36
- 1x Sabritas Original = $18
Total: $54
¿Lo confirmas?
[Confirmar] [Agregar mas] [Cancelar]"
Cliente: [Confirmar]
Bot: "¡Pedido #456 confirmado! 🎉
Te avisamos cuando este listo.
Tiempo estimado: 10-15 min"
Negocio Recibe Notificacion
[Push + WhatsApp al dueno]
"🛒 Nuevo Pedido #456
Cliente: Juan Perez (5512345678)
- 2x Coca-Cola 600ml
- 1x Sabritas Original
Total: $54
[Ver pedido] [Aceptar] [Rechazar]"
Actualizacion de Estado
[Dueno marca como "Listo"]
Bot -> Cliente:
"Tu pedido #456 esta listo! 📦
Puedes pasar a recogerlo.
Direccion: Calle Principal #123
Horario: Abierto hasta 10pm"
Modelo de Datos
Tablas (schema: orders)
orders
- id, tenant_id, customer_id, channel
- status (pending/confirmed/preparing/ready/delivered/cancelled)
- subtotal, delivery_fee, total
- delivery_type (pickup/delivery)
- delivery_address, scheduled_at
- notes, created_at, updated_at
order_items
- id, order_id, product_id
- quantity, unit_price, notes, total
order_status_history
- id, order_id, status, changed_by
- notes, created_at
Endpoints API
| Metodo | Endpoint | Descripcion |
|---|---|---|
| GET | /orders | Listar pedidos |
| GET | /orders/:id | Obtener pedido |
| POST | /orders | Crear pedido |
| PUT | /orders/:id/status | Cambiar estado |
| POST | /orders/:id/cancel | Cancelar pedido |
| GET | /orders/pending | Pedidos pendientes |
| GET | /customers/:id/orders | Pedidos de cliente |
Estados del Pedido
pending ──► confirmed ──► preparing ──► ready ──► delivered
│ │ │ │
└───────────┴─────────────┴───────────┴──► cancelled
| Estado | Descripcion | Notifica Cliente |
|---|---|---|
| pending | Pedido recibido | Si |
| confirmed | Aceptado por negocio | Si |
| preparing | En preparacion | No |
| ready | Listo para recoger/enviar | Si |
| delivered | Entregado | Si |
| cancelled | Cancelado | Si |
UI Components
OrderList (Dashboard)
- Tabla de pedidos del dia
- Filtros por estado
- Acciones rapidas
OrderDetail
- Info del cliente
- Items del pedido
- Cambio de estado
- Historial de estados
OrderNotification (Mobile)
- Push notification
- Sonido distintivo
- Accion rapida: Aceptar/Rechazar
Entregables
| Entregable | Estado | Archivo |
|---|---|---|
| orders.module | Completado | modules/orders/ |
| WhatsApp order flow | Pendiente | whatsapp-service/flows/order.flow.ts |
| Order notifications | Pendiente | services/order-notification.service.ts |
| Orders dashboard | Pendiente | pages/Orders.tsx |
Dependencias
Depende de
- MCH-011 (WhatsApp Service)
- MCH-013 (Chat cliente)
- MCH-014 (Gestion clientes)
Bloquea a
- MCH-016 (Entregas a domicilio)
Criterios de Aceptacion
- Pedidos se crean via WhatsApp
- Dueno recibe notificacion inmediata
- Estados se actualizan correctamente
- Cliente recibe confirmaciones
- Historial de pedidos funciona
Configuracion por Tenant
{
orders: {
enabled: true,
auto_confirm: false, // o true para confirmar automaticamente
estimated_time_minutes: 15,
channels: ['whatsapp', 'web'],
notifications: {
push: true,
whatsapp: true,
sound: 'order_received'
}
}
}
Ultima actualizacion: 2026-01-07