# EPICA: EPIC-RT-005 - Clientes y Programa de Lealtad

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-RT-005 |
| **Nombre** | Clientes y Programa de Lealtad |
| **Modulo** | clientes |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 34 |
| **Sprint(s)** | Sprint 4-5 |

---

## Descripcion

Gestión de clientes y programa de fidelización. Registro de clientes, acumulación y canje de puntos, niveles de membresía, historial de compras y comunicación personalizada. Integración con POS para experiencia fluida en punto de venta.

---

## Objetivo de Negocio

- Aumentar frecuencia de compra
- Incrementar ticket promedio
- Reducir rotación de clientes
- Conocer mejor al cliente
- Marketing personalizado

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-RT005-001 | Como cajero, quiero registrar cliente rápidamente con datos mínimos | P0 | 3 | Backlog |
| US-RT005-002 | Como cajero, quiero buscar cliente por teléfono o email para asociar venta | P0 | 3 | Backlog |
| US-RT005-003 | Como cliente, quiero acumular puntos automáticamente por mis compras | P0 | 5 | Backlog |
| US-RT005-004 | Como cajero, quiero consultar puntos del cliente en el POS | P0 | 2 | Backlog |
| US-RT005-005 | Como cajero, quiero aplicar canje de puntos como descuento en venta | P0 | 5 | Backlog |
| US-RT005-006 | Como cliente, quiero ver mi historial de compras y puntos en app/web | P1 | 5 | Backlog |
| US-RT005-007 | Como marketing, quiero segmentar clientes por nivel de compra | P1 | 3 | Backlog |
| US-RT005-008 | Como marketing, quiero enviar promociones por email a segmentos | P1 | 3 | Backlog |
| US-RT005-009 | Como admin, quiero configurar reglas de acumulación de puntos | P0 | 3 | Backlog |
| US-RT005-010 | Como admin, quiero configurar niveles de membresía con beneficios | P2 | 2 | Backlog |

**Total Story Points:** 34 SP

---

## Programa de Puntos

```
┌─────────────────────────────────────────────────────────┐
│              PROGRAMA DE LEALTAD                        │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ACUMULACIÓN                                            │
│  ├── 1 punto por cada $10 de compra (configurable)      │
│  ├── Puntos extra en productos promocionales            │
│  ├── Bonificación por cumpleaños                        │
│  └── Multiplicadores por nivel                          │
│                                                         │
│  CANJE                                                  │
│  ├── 100 puntos = $10 de descuento (configurable)       │
│  ├── Mínimo de puntos para canjear                      │
│  ├── Máximo de descuento por transacción                │
│  └── Productos excluidos de canje                       │
│                                                         │
│  NIVELES DE MEMBRESÍA                                   │
│  ├── BRONCE: 0-999 puntos/año     → 1x puntos           │
│  ├── PLATA:  1000-4999 puntos/año → 1.5x puntos         │
│  ├── ORO:    5000+ puntos/año     → 2x puntos           │
│  └── Beneficios adicionales por nivel                   │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---

## Flujo de Puntos en Venta

```
┌─────────────┐
│ BUSCAR CLI  │  ← Por teléfono o email
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ VER PUNTOS  │  ← Saldo disponible
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   VENTA     │  ← Agregar productos
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  ¿CANJEAR?  │ ─── Si ──► Aplicar descuento
└──────┬──────┘
       │ No
       ▼
┌─────────────┐
│    PAGO     │  ← Cerrar venta
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ + PUNTOS    │  ← Acumulación automática
└─────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Registro rápido de cliente
- [ ] Búsqueda por teléfono/email
- [ ] Acumulación automática de puntos
- [ ] Canje de puntos en POS
- [ ] Historial de cliente
- [ ] Niveles de membresía
- [ ] Segmentación de clientes
- [ ] Comunicación por email

**No Funcionales:**
- [ ] Búsqueda de cliente < 500ms
- [ ] Cálculo de puntos en tiempo real
- [ ] Historial de 3 años

**Tecnicos:**
- [ ] Integración con módulo POS
- [ ] Integración con e-commerce
- [ ] Servicio de email marketing
- [ ] API para app de cliente

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-RT-001 Fundamentos | Backlog | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-RT-002 POS | Integración de puntos |
| EPIC-RT-009 E-commerce | Cuenta de cliente |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `customers`
- [ ] Tablas: 7 (customers, points_transactions, membership_levels, segments, campaigns, communications, preferences)
- [ ] Funciones: 3 (calculate_points, apply_redemption, update_level)
- [ ] Indices: Por teléfono, email, nivel, puntos

**Backend:**
- [ ] Modulo: `customers`
- [ ] Entities: 6 (Customer, PointsTransaction, MembershipLevel, Segment, Campaign)
- [ ] Endpoints: 14
- [ ] Tests: 28

**Frontend:**
- [ ] Paginas: 5 (CustomerList, CustomerDetail, Segments, Campaigns, Config)
- [ ] Componentes: 12 (CustomerSearch, PointsDisplay, RedemptionModal, etc.)
- [ ] Stores: 1 (customersStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/customers | Crear cliente |
| GET | /api/customers/search | Buscar por teléfono/email |
| GET | /api/customers/:id | Detalle de cliente |
| GET | /api/customers/:id/points | Saldo de puntos |
| GET | /api/customers/:id/history | Historial de compras |
| POST | /api/customers/:id/earn | Acumular puntos |
| POST | /api/customers/:id/redeem | Canjear puntos |
| GET | /api/customers/segments | Listar segmentos |
| POST | /api/customers/campaigns | Crear campaña |
| POST | /api/customers/campaigns/:id/send | Enviar comunicación |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Fraude de puntos | Media | Alto | Auditoría + límites de canje |
| Clientes duplicados | Alta | Medio | Validación de teléfono/email |
| Baja adopción | Media | Medio | Capacitación a cajeros |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Reglas de puntos definidas
- [ ] Niveles de membresía aprobados

## Definition of Done (DoD)

- [ ] Programa de puntos funcionando
- [ ] Integración con POS operativa
- [ ] Niveles de membresía activos
- [ ] Segmentación de clientes
- [ ] Tests de integración pasando
- [ ] 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
