erp-retail/orchestration/planes/fase-3-implementacion/ROADMAP-SPRINTS.md

578 lines
20 KiB
Markdown

# ROADMAP DE SPRINTS - RETAIL
**Fecha:** 2025-12-18
**Fase:** 3 - Plan de Implementaciones
**Metodologia:** Sprints de 1 semana
**Total Story Points:** 353 SP
---
## 1. RESUMEN EJECUTIVO
### 1.1 Distribucion de Esfuerzo
| Modulo | SP | % del Total | Prioridad |
|--------|----|-----------:|-----------|
| RT-001 Fundamentos | 0* | 0% | P0 |
| RT-002 POS | 55 | 15.6% | P0 |
| RT-003 Inventario | 42 | 11.9% | P0 |
| RT-004 Compras | 38 | 10.8% | P1 |
| RT-005 Clientes | 34 | 9.6% | P1 |
| RT-006 Precios | 36 | 10.2% | P0 |
| RT-007 Caja | 28 | 7.9% | P0 |
| RT-008 Reportes | 30 | 8.5% | P1 |
| RT-009 E-commerce | 55 | 15.6% | P2 |
| RT-010 Facturacion | 35 | 9.9% | P0 |
| **TOTAL** | **353** | **100%** | |
*RT-001 hereda 100% del core
### 1.2 Prerrequisitos Core (Bloqueadores)
Antes de iniciar retail, se deben completar estos modulos del core:
| Modulo Core | Estado Actual | Requerido | Gap |
|-------------|---------------|-----------|-----|
| MGN-001 Auth | 40% | 100% | 60% |
| MGN-005 Catalogs | 0% | 100% | 100% |
| MGN-010 Financial | 70% | 90% | 20% |
| MGN-011 Inventory | 60% | 80% | 20% |
| MGN-013 Sales | 50% | 70% | 20% |
**Estimacion prerrequisitos:** 3-4 sprints
---
## 2. FASES DE IMPLEMENTACION
### 2.1 Vision General
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ROADMAP RETAIL - 20 SPRINTS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ FASE 0: PRERREQUISITOS CORE (Sprints 1-4) │
│ ├── S1-S2: Auth + Catalogs │
│ └── S3-S4: Financial + Inventory + Sales │
│ │
│ FASE 1: FUNDAMENTOS RETAIL (Sprints 5-7) │
│ ├── S5: Database retail + RT-001 Fundamentos │
│ ├── S6: RT-006 Motor de Precios │
│ └── S7: RT-003 Inventario Multi-sucursal │
│ │
│ FASE 2: POS MVP (Sprints 8-11) │
│ ├── S8-S9: RT-002 POS Backend + Frontend │
│ ├── S10: RT-007 Caja │
│ └── S11: PWA + Offline │
│ │
│ FASE 3: FACTURACION + CLIENTES (Sprints 12-14) │
│ ├── S12: RT-010 CFDI Backend │
│ ├── S13: RT-010 CFDI Frontend + Autofactura │
│ └── S14: RT-005 Clientes + Lealtad │
│ │
│ FASE 4: COMPRAS + REPORTES (Sprints 15-16) │
│ ├── S15: RT-004 Compras │
│ └── S16: RT-008 Reportes + Dashboard │
│ │
│ FASE 5: E-COMMERCE (Sprints 17-20) │
│ ├── S17-S18: RT-009 Backend + Integraciones │
│ └── S19-S20: RT-009 Storefront │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
---
## 3. DETALLE POR SPRINT
### FASE 0: PRERREQUISITOS CORE
#### Sprint 1: Auth + Catalogs (Parte 1)
**Objetivo:** Completar autenticacion y catalogos base
| Tarea | Capa | SP |
|-------|------|---:|
| Completar entities User, Role, Permission | Backend | 3 |
| Completar AuthService con JWT | Backend | 3 |
| Implementar middleware de autenticacion | Backend | 2 |
| Crear tablas core.countries, currencies | Database | 2 |
| Implementar CountriesService, CurrenciesService | Backend | 2 |
| **Total Sprint 1** | | **12** |
#### Sprint 2: Catalogs (Parte 2)
**Objetivo:** Completar catalogos y UoM
| Tarea | Capa | SP |
|-------|------|---:|
| Crear tablas core.uom_categories, uom | Database | 2 |
| Implementar UoMService | Backend | 2 |
| Crear core.sequences | Database | 1 |
| Implementar SequencesService | Backend | 2 |
| Crear tablas core.partners | Database | 2 |
| Implementar PartnersService | Backend | 3 |
| **Total Sprint 2** | | **12** |
#### Sprint 3: Financial
**Objetivo:** Completar modulo financiero base
| Tarea | Capa | SP |
|-------|------|---:|
| Migrar financial.taxes a TypeORM | Backend | 3 |
| Migrar financial.accounts a TypeORM | Backend | 3 |
| Migrar financial.journals a TypeORM | Backend | 2 |
| Implementar payment_methods | Backend | 2 |
| Tests unitarios financial | Backend | 2 |
| **Total Sprint 3** | | **12** |
#### Sprint 4: Inventory + Sales
**Objetivo:** Completar inventario y ventas base
| Tarea | Capa | SP |
|-------|------|---:|
| Completar inventory.products con TypeORM | Backend | 3 |
| Completar inventory.warehouses | Backend | 2 |
| Completar inventory.stock_quants | Backend | 3 |
| Implementar sales.pricelists | Backend | 3 |
| Implementar sales.pricelist_items | Backend | 2 |
| **Total Sprint 4** | | **13** |
---
### FASE 1: FUNDAMENTOS RETAIL
#### Sprint 5: Database Retail + Fundamentos
**Objetivo:** Crear schema retail y tablas fundacionales
| Tarea | Capa | SP |
|-------|------|---:|
| Crear schema retail | Database | 1 |
| Crear retail.branches | Database | 2 |
| Crear retail.cash_registers | Database | 1 |
| Crear retail.branch_users | Database | 1 |
| BranchesService | Backend | 3 |
| CashRegistersService | Backend | 2 |
| BranchesController | Backend | 2 |
| **Total Sprint 5** | | **12** |
#### Sprint 6: Motor de Precios
**Objetivo:** RT-006 - Sistema de precios y promociones
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.promotions, promotion_products | Database | 2 |
| Crear retail.coupons, coupon_redemptions | Database | 2 |
| PriceEngineService (core) | Backend | 8 |
| PromotionsService | Backend | 5 |
| CouponsService | Backend | 5 |
| PricingController | Backend | 3 |
| **Total Sprint 6** | | **25** |
*Nota: Este sprint tiene mas SP porque el motor de precios es critico*
#### Sprint 7: Inventario Multi-sucursal
**Objetivo:** RT-003 - Gestion de inventario por sucursal
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.stock_transfers | Database | 2 |
| Crear retail.stock_adjustments | Database | 2 |
| RetailStockService (extiende core) | Backend | 5 |
| TransfersService | Backend | 5 |
| AdjustmentsService | Backend | 3 |
| InventoryController | Backend | 3 |
| **Total Sprint 7** | | **20** |
---
### FASE 2: POS MVP
#### Sprint 8: POS Backend
**Objetivo:** RT-002 - Backend del punto de venta
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.pos_sessions | Database | 2 |
| Crear retail.pos_orders, pos_order_lines | Database | 3 |
| Crear retail.pos_payments | Database | 2 |
| POSSessionService | Backend | 5 |
| POSOrderService | Backend | 8 |
| POSPaymentService | Backend | 3 |
| POSController | Backend | 3 |
| **Total Sprint 8** | | **26** |
#### Sprint 9: POS Frontend
**Objetivo:** UI del punto de venta
| Tarea | Capa | SP |
|-------|------|---:|
| Layout POS | Frontend | 2 |
| Pagina Login + Seleccion Caja | Frontend | 2 |
| Pantalla de Ventas | Frontend | 8 |
| Pantalla de Cobro | Frontend | 5 |
| Componente ProductGrid | Frontend | 3 |
| Componente OrderLines | Frontend | 2 |
| Componente PaymentMethods | Frontend | 3 |
| **Total Sprint 9** | | **25** |
#### Sprint 10: Caja
**Objetivo:** RT-007 - Arqueos y cortes de caja
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.cash_movements | Database | 1 |
| Crear retail.cash_closings | Database | 2 |
| Crear retail.cash_counts | Database | 1 |
| CashSessionService | Backend | 5 |
| CashMovementService | Backend | 3 |
| CashClosingService | Backend | 5 |
| CashController | Backend | 3 |
| UI Apertura Caja | Frontend | 2 |
| UI Movimientos | Frontend | 2 |
| UI Cierre con Denominaciones | Frontend | 3 |
| **Total Sprint 10** | | **27** |
#### Sprint 11: PWA + Offline
**Objetivo:** Soporte offline para POS
| Tarea | Capa | SP |
|-------|------|---:|
| Configurar Service Worker | Frontend | 3 |
| IndexedDB con Dexie | Frontend | 3 |
| Cola de sincronizacion | Frontend | 5 |
| POSSyncService | Backend | 5 |
| WebSocket Gateway | Backend | 3 |
| Tests de offline | Frontend | 2 |
| Indicadores de estado | Frontend | 2 |
| **Total Sprint 11** | | **23** |
---
### FASE 3: FACTURACION + CLIENTES
#### Sprint 12: CFDI Backend
**Objetivo:** RT-010 - Backend de facturacion CFDI 4.0
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.cfdi_config | Database | 1 |
| Crear retail.cfdis | Database | 2 |
| CFDIService | Backend | 5 |
| CFDIBuilderService | Backend | 5 |
| XMLService | Backend | 3 |
| PACService (Finkok) | Backend | 5 |
| CFDIController | Backend | 3 |
| **Total Sprint 12** | | **24** |
#### Sprint 13: CFDI Frontend + Autofactura
**Objetivo:** UI de facturacion y portal autofactura
| Tarea | Capa | SP |
|-------|------|---:|
| PDFService | Backend | 2 |
| AutofacturaService | Backend | 3 |
| AutofacturaController | Backend | 2 |
| Modal Facturacion en POS | Frontend | 3 |
| Portal Autofactura (publico) | Frontend | 4 |
| Configuracion CFDI (backoffice) | Frontend | 2 |
| Lista de Facturas | Frontend | 2 |
| **Total Sprint 13** | | **18** |
#### Sprint 14: Clientes + Lealtad
**Objetivo:** RT-005 - Gestion de clientes y programa de lealtad
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.loyalty_programs | Database | 1 |
| Crear retail.membership_levels | Database | 1 |
| Crear retail.loyalty_transactions | Database | 1 |
| Crear retail.customer_memberships | Database | 1 |
| RetailCustomersService | Backend | 3 |
| LoyaltyService | Backend | 8 |
| CustomersController | Backend | 3 |
| Lista Clientes (backoffice) | Frontend | 3 |
| Detalle Cliente con Membresia | Frontend | 3 |
| Config Programa Lealtad | Frontend | 2 |
| Widget Puntos en POS | Frontend | 2 |
| **Total Sprint 14** | | **28** |
---
### FASE 4: COMPRAS + REPORTES
#### Sprint 15: Compras
**Objetivo:** RT-004 - Gestion de compras y reabastecimiento
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.purchase_suggestions | Database | 2 |
| Crear retail.supplier_orders | Database | 2 |
| Crear retail.goods_receipts | Database | 2 |
| RetailPurchaseService | Backend | 5 |
| PurchaseSuggestionsService | Backend | 5 |
| GoodsReceiptService | Backend | 3 |
| PurchaseController | Backend | 3 |
| Lista Sugerencias (backoffice) | Frontend | 3 |
| Nueva Orden Proveedor | Frontend | 4 |
| Recepcion de Mercancia | Frontend | 3 |
| **Total Sprint 15** | | **32** |
#### Sprint 16: Reportes + Dashboard
**Objetivo:** RT-008 - Dashboard y reportes
| Tarea | Capa | SP |
|-------|------|---:|
| Crear vistas materializadas | Database | 2 |
| DashboardService | Backend | 3 |
| SalesReportService | Backend | 3 |
| ProductReportService | Backend | 2 |
| CashReportService | Backend | 2 |
| ExportService (Excel/PDF) | Backend | 3 |
| ReportsController | Backend | 3 |
| Dashboard Principal | Frontend | 8 |
| Paginas de Reportes | Frontend | 3 |
| Componentes de Graficos | Frontend | 3 |
| **Total Sprint 16** | | **32** |
---
### FASE 5: E-COMMERCE
#### Sprint 17: E-commerce Backend (Parte 1)
**Objetivo:** RT-009 - Backend de tienda online
| Tarea | Capa | SP |
|-------|------|---:|
| Crear retail.carts, cart_items | Database | 2 |
| Crear retail.ecommerce_orders | Database | 2 |
| Crear retail.shipping_rates | Database | 1 |
| CatalogService | Backend | 3 |
| CartService | Backend | 5 |
| CheckoutService | Backend | 5 |
| EcommerceOrderService | Backend | 5 |
| **Total Sprint 17** | | **23** |
#### Sprint 18: E-commerce Backend (Parte 2) + Integraciones
**Objetivo:** Pasarelas de pago y envio
| Tarea | Capa | SP |
|-------|------|---:|
| PaymentGatewayService | Backend | 8 |
| Stripe/Conekta Provider | Backend | 5 |
| ShippingService | Backend | 5 |
| StorefrontController | Backend | 3 |
| EcommerceAdminController | Backend | 3 |
| **Total Sprint 18** | | **24** |
#### Sprint 19: Storefront (Parte 1)
**Objetivo:** UI de tienda online - Catalogo y Carrito
| Tarea | Capa | SP |
|-------|------|---:|
| Layout Storefront | Frontend | 2 |
| Home y navegacion | Frontend | 3 |
| Catalogo de Productos | Frontend | 5 |
| Detalle de Producto | Frontend | 4 |
| Busqueda de Productos | Frontend | 3 |
| Carrito (drawer) | Frontend | 3 |
| **Total Sprint 19** | | **20** |
#### Sprint 20: Storefront (Parte 2)
**Objetivo:** UI de tienda - Checkout y Area Cliente
| Tarea | Capa | SP |
|-------|------|---:|
| Checkout Flow completo | Frontend | 8 |
| Integracion Stripe/Conekta | Frontend | 5 |
| Area de Cliente | Frontend | 4 |
| Mis Pedidos | Frontend | 3 |
| Gestion Pedidos (backoffice) | Frontend | 4 |
| **Total Sprint 20** | | **24** |
---
## 4. RESUMEN DE SPRINTS
| Sprint | Fase | Enfoque | SP Total | SP Acumulados |
|--------|------|---------|----------|---------------|
| 1 | 0 | Auth + Catalogs P1 | 12 | 12 |
| 2 | 0 | Catalogs P2 | 12 | 24 |
| 3 | 0 | Financial | 12 | 36 |
| 4 | 0 | Inventory + Sales | 13 | 49 |
| 5 | 1 | DB Retail + Fundamentos | 12 | 61 |
| 6 | 1 | Motor de Precios | 25 | 86 |
| 7 | 1 | Inventario Multi-sucursal | 20 | 106 |
| 8 | 2 | POS Backend | 26 | 132 |
| 9 | 2 | POS Frontend | 25 | 157 |
| 10 | 2 | Caja | 27 | 184 |
| 11 | 2 | PWA + Offline | 23 | 207 |
| 12 | 3 | CFDI Backend | 24 | 231 |
| 13 | 3 | CFDI Frontend | 18 | 249 |
| 14 | 3 | Clientes + Lealtad | 28 | 277 |
| 15 | 4 | Compras | 32 | 309 |
| 16 | 4 | Reportes + Dashboard | 32 | 341 |
| 17 | 5 | E-commerce Backend P1 | 23 | 364 |
| 18 | 5 | E-commerce Backend P2 | 24 | 388 |
| 19 | 5 | Storefront P1 | 20 | 408 |
| 20 | 5 | Storefront P2 | 24 | 432 |
**Total Story Points:** 432 SP (incluye 49 SP de prerrequisitos core + 383 SP retail)
---
## 5. HITOS (MILESTONES)
### M1: Core Ready
**Sprint:** 4
**Criterio:** Modulos core completados para soportar retail
- [ ] Auth funcional con JWT
- [ ] Catalogos cargados
- [ ] Financial con TypeORM
- [ ] Inventory y Sales base
### M2: Retail Foundation
**Sprint:** 7
**Criterio:** Base de retail lista
- [ ] Schema retail creado
- [ ] Sucursales configurables
- [ ] Motor de precios funcionando
- [ ] Inventario multi-sucursal
### M3: POS MVP
**Sprint:** 11
**Criterio:** POS operativo con offline
- [ ] Ventas en POS
- [ ] Multiples formas de pago
- [ ] Caja con arqueos/cortes
- [ ] Modo offline funcional
- [ ] Impresion de tickets
### M4: Facturacion Completa
**Sprint:** 13
**Criterio:** CFDI 4.0 operativo
- [ ] Emision de facturas
- [ ] Cancelacion
- [ ] Autofactura publica
- [ ] Generacion PDF
### M5: Retail Completo
**Sprint:** 16
**Criterio:** Retail 100% funcional (sin e-commerce)
- [ ] Programa de lealtad
- [ ] Gestion de compras
- [ ] Dashboard y reportes
### M6: E-commerce Live
**Sprint:** 20
**Criterio:** Tienda online operativa
- [ ] Catalogo publico
- [ ] Carrito y checkout
- [ ] Pagos online
- [ ] Area de cliente
---
## 6. DEPENDENCIAS CRITICAS
### Grafico de Dependencias
```
┌─────────────┐
│ MGN-001 │
│ Auth │
└──────┬──────┘
┌─────────────────┼─────────────────┐
│ │ │
v v v
┌────────────────┐ ┌──────────────┐ ┌──────────────┐
│ MGN-005 │ │ MGN-010 │ │ MGN-011 │
│ Catalogs │ │ Financial │ │ Inventory │
└───────┬────────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────┬────────┴────────┬───────┘
│ │
v v
┌──────────────┐ ┌──────────────┐
│ RT-001 │ │ MGN-013 │
│ Fundamentos │ │ Sales │
└──────┬───────┘ └──────┬───────┘
│ │
┌───────────┼───────────┬────┘
│ │ │
v v v
┌────────┐ ┌────────┐ ┌────────┐
│ RT-006 │ │ RT-003 │ │ RT-005 │
│ Precios│ │ Invent.│ │ Client │
└───┬────┘ └───┬────┘ └───┬────┘
│ │ │
└──────────┼──────────┘
v
┌──────────────┐
│ RT-002 │
│ POS │
└──────┬───────┘
┌──────────┼──────────┐
│ │ │
v v v
┌────────┐ ┌────────┐ ┌────────┐
│ RT-007 │ │ RT-010 │ │ RT-008 │
│ Caja │ │ CFDI │ │ Report │
└────────┘ └────────┘ └────────┘
v
┌──────────────┐
│ RT-009 │
│ E-commerce │
└──────────────┘
v
┌──────────────┐
│ RT-004 │
│ Compras │
└──────────────┘
```
### Camino Critico
1. **Auth** -> Fundamentos -> POS -> Caja
2. **Financial** -> CFDI
3. **Inventory** -> Stock Multi-sucursal -> POS
4. **Sales/Precios** -> POS -> E-commerce
---
## 7. RIESGOS Y MITIGACIONES
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Core no completo a tiempo | Alta | Critico | Priorizar gaps bloqueantes |
| Integracion PAC compleja | Media | Alto | Iniciar con sandbox temprano |
| PWA offline bugs | Media | Alto | Tests exhaustivos de sync |
| Pasarelas de pago | Media | Alto | Usar SDK oficiales |
| Performance reportes | Media | Medio | Vistas materializadas desde inicio |
---
## 8. EQUIPO SUGERIDO
| Rol | Cantidad | Responsabilidades |
|-----|----------|-------------------|
| Tech Lead | 1 | Arquitectura, code review |
| Backend Sr | 2 | Servicios core, integraciones |
| Backend Jr | 1 | Servicios auxiliares, tests |
| Frontend Sr | 2 | POS, Backoffice, E-commerce |
| Frontend Jr | 1 | Componentes, estilos |
| QA | 1 | Testing E2E, integracion |
| DevOps | 0.5 | CI/CD, infraestructura |
**Velocidad estimada:** 25-30 SP/semana con equipo completo
---
**Estado:** ROADMAP COMPLETO
**Sprints totales:** 20
**Duracion estimada:** 20 semanas (5 meses)