# 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 1. Recepcion de pedidos via chat 2. Confirmacion automatica o manual 3. Notificacion al negocio 4. Estado del pedido en tiempo real 5. 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 ```typescript { 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