michangarrito/docs/01-epicas/MCH-015-pedidos-whatsapp.md
rckrdmrd 3bba4ce6d7 feat: Add complete epic documentation and orchestration inventories
Sprint 3-4 deliverables:
- 28 epics documented (MCH-001 to MCH-028)
- 7 development phases fully documented
- DATABASE_INVENTORY.yml, BACKEND_INVENTORY.yml, FRONTEND_INVENTORY.yml
- Task traces for database and frontend

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:40:13 -06:00

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

  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

{
  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