242 lines
9.5 KiB
Markdown
242 lines
9.5 KiB
Markdown
# EPICA: EPIC-RT-006 - Precios y Promociones
|
|
|
|
## Metadata
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | EPIC-RT-006 |
|
|
| **Nombre** | Precios y Promociones |
|
|
| **Modulo** | precios |
|
|
| **Fase** | Fase 1 - MVP |
|
|
| **Prioridad** | P0 (Critico) |
|
|
| **Estado** | Backlog |
|
|
| **Story Points** | 36 |
|
|
| **Sprint(s)** | Sprint 3-4 |
|
|
|
|
---
|
|
|
|
## Descripcion
|
|
|
|
Gestión de precios y promociones para retail. Listas de precios por sucursal/canal, promociones temporales, descuentos por volumen, cupones y ofertas especiales. Motor de reglas para aplicación automática en POS y e-commerce.
|
|
|
|
---
|
|
|
|
## Objetivo de Negocio
|
|
|
|
- Flexibilidad en estrategia de precios
|
|
- Promociones efectivas y controladas
|
|
- Incrementar ventas con ofertas
|
|
- Competir en diferentes canales
|
|
- Medir ROI de promociones
|
|
|
|
---
|
|
|
|
## Historias de Usuario
|
|
|
|
| ID | Historia | Prioridad | SP | Estado |
|
|
|----|----------|-----------|-----|--------|
|
|
| US-RT006-001 | Como pricing, quiero definir precio base de producto para tener referencia | P0 | 2 | Backlog |
|
|
| US-RT006-002 | Como pricing, quiero crear listas de precios por canal (tienda, online) | P0 | 5 | Backlog |
|
|
| US-RT006-003 | Como pricing, quiero crear promoción de descuento porcentual temporal | P0 | 5 | Backlog |
|
|
| US-RT006-004 | Como pricing, quiero crear promoción 2x1 o 3x2 para productos seleccionados | P0 | 5 | Backlog |
|
|
| US-RT006-005 | Como pricing, quiero crear descuento por volumen (> 10 unidades = 15% off) | P0 | 3 | Backlog |
|
|
| US-RT006-006 | Como marketing, quiero generar cupones de descuento con código único | P0 | 5 | Backlog |
|
|
| US-RT006-007 | Como cajero, quiero que el POS aplique promociones automáticamente | P0 | 5 | Backlog |
|
|
| US-RT006-008 | Como cajero, quiero escanear cupón para aplicar descuento | P0 | 3 | Backlog |
|
|
| US-RT006-009 | Como gerente, quiero ver reportes de uso de promociones | P1 | 3 | Backlog |
|
|
|
|
**Total Story Points:** 36 SP
|
|
|
|
---
|
|
|
|
## Tipos de Promociones
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ TIPOS DE PROMOCIONES │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ DESCUENTO PORCENTUAL │
|
|
│ ├── Aplica X% de descuento │
|
|
│ ├── Sobre productos seleccionados o categoría │
|
|
│ └── Período de vigencia │
|
|
│ │
|
|
│ DESCUENTO MONTO FIJO │
|
|
│ ├── Aplica $X de descuento │
|
|
│ ├── Requiere mínimo de compra │
|
|
│ └── Por producto o total de venta │
|
|
│ │
|
|
│ NxM (ej: 3x2) │
|
|
│ ├── Compra N productos, paga M │
|
|
│ ├── Mismo producto o mezcla │
|
|
│ └── El más barato gratis o porcentaje │
|
|
│ │
|
|
│ DESCUENTO POR VOLUMEN │
|
|
│ ├── Escalas de cantidad │
|
|
│ ├── > 5 unidades = 5% off │
|
|
│ └── > 10 unidades = 10% off │
|
|
│ │
|
|
│ CUPÓN │
|
|
│ ├── Código único o genérico │
|
|
│ ├── Un uso o múltiples usos │
|
|
│ └── Límite de usos totales │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Motor de Reglas
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ EVALUACIÓN DE PRECIO │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ 1. Obtener precio base del producto │
|
|
│ │
|
|
│ 2. Aplicar lista de precios del canal │
|
|
│ └── Si existe precio específico, usarlo │
|
|
│ │
|
|
│ 3. Evaluar promociones activas │
|
|
│ ├── Ordenar por prioridad │
|
|
│ ├── Verificar condiciones (fechas, productos) │
|
|
│ └── Aplicar la mejor promoción (no acumulables) │
|
|
│ │
|
|
│ 4. Evaluar descuento por volumen │
|
|
│ └── Si cantidad supera umbral, aplicar │
|
|
│ │
|
|
│ 5. Evaluar cupón (si se proporciona) │
|
|
│ ├── Validar código │
|
|
│ ├── Verificar vigencia y usos │
|
|
│ └── Aplicar si es compatible │
|
|
│ │
|
|
│ 6. Retornar precio final con detalle de descuentos │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Criterios de Aceptacion de la Epica
|
|
|
|
**Funcionales:**
|
|
- [ ] Definir precio base de productos
|
|
- [ ] Crear listas de precios por canal
|
|
- [ ] Crear promociones temporales
|
|
- [ ] Promociones NxM
|
|
- [ ] Descuentos por volumen
|
|
- [ ] Generar y validar cupones
|
|
- [ ] Aplicación automática en POS
|
|
- [ ] Reportes de uso
|
|
|
|
**No Funcionales:**
|
|
- [ ] Cálculo de precio < 100ms
|
|
- [ ] Soporte para 100+ promociones activas
|
|
- [ ] Historial de 1 año de promociones
|
|
|
|
**Tecnicos:**
|
|
- [ ] Motor de reglas flexible
|
|
- [ ] Integración con POS
|
|
- [ ] Integración con e-commerce
|
|
- [ ] Cache de promociones activas
|
|
|
|
---
|
|
|
|
## 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 | Requiere precios para vender |
|
|
| EPIC-RT-009 E-commerce | Requiere precios online |
|
|
|
|
---
|
|
|
|
## Desglose Tecnico
|
|
|
|
**Database:**
|
|
- [ ] Schema: `pricing`
|
|
- [ ] Tablas: 8 (price_lists, prices, promotions, promotion_products, volume_discounts, coupons, coupon_usages, promo_logs)
|
|
- [ ] Funciones: 3 (calculate_price, validate_coupon, apply_promotion)
|
|
- [ ] Indices: Por producto, canal, fecha vigencia
|
|
|
|
**Backend:**
|
|
- [ ] Modulo: `pricing`
|
|
- [ ] Entities: 6 (PriceList, Price, Promotion, VolumeDiscount, Coupon, CouponUsage)
|
|
- [ ] Services: PricingEngine (motor de reglas)
|
|
- [ ] Endpoints: 15
|
|
- [ ] Tests: 35
|
|
|
|
**Frontend:**
|
|
- [ ] Paginas: 5 (PriceLists, Promotions, Coupons, Reports, Config)
|
|
- [ ] Componentes: 12 (PriceEditor, PromotionBuilder, CouponGenerator, etc.)
|
|
- [ ] Stores: 1 (pricingStore)
|
|
|
|
---
|
|
|
|
## Endpoints API
|
|
|
|
| Metodo | Endpoint | Descripcion |
|
|
|--------|----------|-------------|
|
|
| GET | /api/pricing/products/:id | Obtener precio de producto |
|
|
| POST | /api/pricing/calculate | Calcular precio con promociones |
|
|
| GET | /api/pricing/lists | Listar listas de precios |
|
|
| POST | /api/pricing/lists | Crear lista de precios |
|
|
| GET | /api/pricing/promotions | Listar promociones |
|
|
| POST | /api/pricing/promotions | Crear promoción |
|
|
| PATCH | /api/pricing/promotions/:id | Actualizar promoción |
|
|
| POST | /api/pricing/coupons | Generar cupón |
|
|
| POST | /api/pricing/coupons/validate | Validar cupón |
|
|
| POST | /api/pricing/coupons/redeem | Usar cupón |
|
|
| GET | /api/pricing/reports/usage | Reporte de uso |
|
|
|
|
---
|
|
|
|
## Riesgos
|
|
|
|
| Riesgo | Probabilidad | Impacto | Mitigacion |
|
|
|--------|--------------|---------|------------|
|
|
| Promociones conflictivas | Media | Alto | Prioridades + no acumulable |
|
|
| Cupones fraudulentos | Baja | Medio | Códigos únicos + límites |
|
|
| Precios incorrectos | Media | Alto | Validación antes de activar |
|
|
|
|
---
|
|
|
|
## Definition of Ready (DoR)
|
|
|
|
- [x] Historias de usuario definidas
|
|
- [x] Criterios de aceptacion claros
|
|
- [x] Dependencias identificadas
|
|
- [x] Estimacion completada
|
|
- [ ] Tipos de promociones definidos
|
|
- [ ] Reglas de compatibilidad claras
|
|
|
|
## Definition of Done (DoD)
|
|
|
|
- [ ] Motor de precios funcionando
|
|
- [ ] Promociones aplicándose en POS
|
|
- [ ] Cupones generándose y validándose
|
|
- [ ] Reportes de uso disponibles
|
|
- [ ] 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
|