# EPICA: EPIC-RT-009 - E-commerce

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-RT-009 |
| **Nombre** | E-commerce |
| **Modulo** | ecommerce |
| **Fase** | Fase 2 - Extensión |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 55 |
| **Sprint(s)** | Sprint 9-12 |

---

## Descripcion

Tienda online integrada con el sistema de retail. Catálogo de productos sincronizado, stock en tiempo real, carrito de compras, checkout con múltiples formas de pago, integración con programa de lealtad y opciones de entrega (envío o pickup en tienda).

---

## Objetivo de Negocio

- Canal de ventas adicional 24/7
- Experiencia omnicanal consistente
- Incrementar alcance geográfico
- Aprovechar inventario existente
- Programa de lealtad unificado

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-RT009-001 | Como cliente, quiero navegar catálogo de productos con filtros | P0 | 5 | Backlog |
| US-RT009-002 | Como cliente, quiero ver disponibilidad de stock en tiempo real | P0 | 5 | Backlog |
| US-RT009-003 | Como cliente, quiero agregar productos al carrito | P0 | 3 | Backlog |
| US-RT009-004 | Como cliente, quiero ingresar o crear cuenta para comprar | P0 | 5 | Backlog |
| US-RT009-005 | Como cliente, quiero pagar con tarjeta de crédito/débito | P0 | 8 | Backlog |
| US-RT009-006 | Como cliente, quiero elegir entre envío a domicilio o pickup en tienda | P0 | 5 | Backlog |
| US-RT009-007 | Como cliente, quiero usar mis puntos de lealtad como descuento | P1 | 5 | Backlog |
| US-RT009-008 | Como cliente, quiero ver historial de mis pedidos | P1 | 3 | Backlog |
| US-RT009-009 | Como admin, quiero gestionar pedidos online desde el backoffice | P0 | 5 | Backlog |
| US-RT009-010 | Como admin, quiero configurar zonas de envío y costos | P0 | 3 | Backlog |
| US-RT009-011 | Como marketing, quiero crear banners y promociones para la tienda | P1 | 3 | Backlog |
| US-RT009-012 | Como cliente, quiero recibir notificaciones del estado de mi pedido | P1 | 5 | Backlog |

**Total Story Points:** 55 SP

---

## Flujo de Compra

```
┌─────────────┐
│  CATÁLOGO   │  ← Cliente navega productos
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   CARRITO   │  ← Agrega productos
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   CUENTA    │  ← Login o registro
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   ENVÍO     │  ← Domicilio o pickup
└──────┬──────┘
       │
       ▼
┌─────────────┐
│    PAGO     │  ← Tarjeta + puntos
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ CONFIRMADO  │  ← Email de confirmación
└─────────────┘
```

---

## Estados de Pedido

```
┌─────────────┐
│  PENDIENTE  │  ← Pedido creado, pago pendiente
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   PAGADO    │  ← Pago confirmado
└──────┬──────┘
       │
       ├── Si envío ──────────────────┐
       │                              │
       ▼                              ▼
┌─────────────┐               ┌─────────────┐
│ PREPARANDO  │               │  EN_ENVÍO   │
│ (pickup)    │               │             │
└──────┬──────┘               └──────┬──────┘
       │                              │
       ▼                              ▼
┌─────────────┐               ┌─────────────┐
│LISTO_PICKUP │               │  ENTREGADO  │
└──────┬──────┘               └─────────────┘
       │
       ▼
┌─────────────┐
│  RECOGIDO   │
└─────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Catálogo de productos con búsqueda y filtros
- [ ] Stock en tiempo real desde inventario
- [ ] Carrito persistente
- [ ] Registro/login de clientes
- [ ] Checkout con tarjeta de crédito
- [ ] Envío a domicilio y pickup
- [ ] Integración con puntos de lealtad
- [ ] Gestión de pedidos en backoffice
- [ ] Notificaciones de estado

**No Funcionales:**
- [ ] Tiempo de carga < 3 segundos
- [ ] SEO optimizado
- [ ] Responsive (mobile-first)
- [ ] Pasarela de pago segura (PCI-DSS)

**Tecnicos:**
- [ ] Integración con inventario multi-sucursal
- [ ] Integración con programa de lealtad
- [ ] Pasarela de pago (Stripe/Conekta)
- [ ] Servicio de envíos (ej: Fedex, DHL API)

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-RT-001 Fundamentos | Backlog | Si |
| EPIC-RT-003 Inventario | Backlog | Si |
| EPIC-RT-005 Clientes | Backlog | Si |
| EPIC-RT-006 Precios | Backlog | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-RT-010 Facturacion | Requiere pedidos para facturar |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `ecommerce`
- [ ] Tablas: 10 (orders, order_items, carts, cart_items, shipping_zones, addresses, payments, banners, categories_web, product_images)
- [ ] Funciones: 3 (calculate_shipping, validate_stock, process_payment)
- [ ] Indices: Por cliente, estado, fecha

**Backend:**
- [ ] Modulo: `ecommerce`
- [ ] Entities: 8 (Order, OrderItem, Cart, CartItem, ShippingZone, Address, Payment, Banner)
- [ ] Endpoints: 25
- [ ] Tests: 45

**Frontend (Web):**
- [ ] Paginas: 10 (Home, Category, Product, Cart, Checkout, Account, Orders, etc.)
- [ ] Componentes: 25 (ProductCard, CartDrawer, CheckoutForm, OrderTracker, etc.)
- [ ] SEO: Meta tags, sitemap, schema.org
- [ ] Framework: Next.js recomendado

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/shop/products | Listar productos |
| GET | /api/shop/products/:id | Detalle de producto |
| GET | /api/shop/categories | Categorías |
| POST | /api/shop/cart | Crear/obtener carrito |
| POST | /api/shop/cart/items | Agregar al carrito |
| DELETE | /api/shop/cart/items/:id | Quitar del carrito |
| POST | /api/shop/checkout | Iniciar checkout |
| POST | /api/shop/orders | Crear pedido |
| GET | /api/shop/orders/:id | Detalle de pedido |
| POST | /api/shop/payments | Procesar pago |
| GET | /api/shop/shipping/zones | Zonas de envío |
| POST | /api/shop/shipping/calculate | Calcular envío |

---

## Integraciones Externas

| Servicio | Propósito | Notas |
|----------|-----------|-------|
| Stripe / Conekta | Pagos con tarjeta | PCI-DSS compliant |
| Fedex / DHL / Estafeta | Cálculo de envío | APIs de cotización |
| SendGrid / Mailgun | Emails transaccionales | Confirmación, tracking |
| Google Analytics | Tracking de conversión | E-commerce enhanced |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Stock desincronizado | Media | Alto | Eventos en tiempo real |
| Fraude con tarjetas | Media | Alto | 3DS + validaciones |
| Problemas de envío | Media | Medio | Múltiples proveedores |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Diseño de UI aprobado
- [ ] Pasarela de pago seleccionada
- [ ] Proveedores de envío definidos

## Definition of Done (DoD)

- [ ] Tienda online funcional
- [ ] Checkout completo con pago
- [ ] Integración con inventario
- [ ] Programa de lealtad integrado
- [ ] Tests E2E pasando
- [ ] SEO implementado
- [ ] Documentación de API

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-08 | Creacion de epica | Claude-Agent |

---

**Creada por:** Claude-Agent
**Fecha:** 2025-12-08
**Ultima actualizacion:** 2025-12-08
