# PLAN MAESTRO: Migracion, Integracion y Adaptacion ERP-Core a Retail

**Version:** 1.0.0
**Fecha:** 2025-12-18
**Autor:** Requirements-Analyst (Perfil NEXUS)
**Proyecto Base:** erp-core
**Proyecto Destino:** erp-suite/verticales/retail

---

## RESUMEN EJECUTIVO

Este documento define el plan maestro para la migracion, integracion y adaptacion del proyecto base `erp-core` hacia la vertical especializada `retail`. El proceso se divide en 5 fases con subagentes especializados para garantizar completitud y trazabilidad.

### Metricas del Proyecto

| Concepto | Valor |
|----------|-------|
| Tablas heredadas de core | 144 |
| Schemas heredados | 12 |
| Modulos retail | 10 |
| Story Points estimados | 353 |
| % Reutilizacion promedio | 45% |

---

## FASE 1: PLANEACION - ANALISIS DETALLADO

### Objetivo
Realizar un analisis exhaustivo del estado actual de erp-core y los requerimientos especificos de retail para identificar todos los componentes a migrar, extender o crear.

### Entregables

1. **ANALISIS-ERP-CORE-INVENTARIO.md**
   - Inventario completo de modulos del core
   - Estado de implementacion de cada modulo
   - Especificaciones tecnicas existentes
   - DDL implementados

2. **ANALISIS-RETAIL-REQUERIMIENTOS.md**
   - Requerimientos funcionales especificos de retail
   - Requerimientos no funcionales (offline, performance)
   - Hardware e integraciones requeridas

3. **MATRIZ-MAPEO-CORE-RETAIL.md**
   - Mapeo modulo-a-modulo entre core y retail
   - Identificacion de herencia directa (100%)
   - Identificacion de extensiones necesarias
   - Identificacion de componentes nuevos

4. **GAP-ANALYSIS-RETAIL.md**
   - Gaps funcionales por modulo
   - Gaps de especificaciones
   - Gaps de implementacion

### Subagente Especializado

```yaml
agente: Explore-Agent
tipo: subagent_type=Explore
nivel_exploracion: very thorough
prompt: |
  Realizar analisis exhaustivo del proyecto erp-core:
  1. Explorar todos los modulos en backend/src/modules/
  2. Documentar estado de cada servicio (.service.ts)
  3. Revisar DDL en database/ddl/
  4. Catalogar especificaciones en docs/
  5. Verificar inventarios existentes

  Contexto: Se migrara a vertical retail (punto de venta)
  Entregar: Inventario completo con estado de implementacion
```

### Archivos a Analizar

| Ruta | Proposito |
|------|-----------|
| `erp-core/backend/src/modules/` | Servicios backend |
| `erp-core/database/ddl/` | Esquemas DDL |
| `erp-core/docs/` | Documentacion y especificaciones |
| `retail/docs/` | Requerimientos retail |
| `retail/orchestration/inventarios/` | Inventarios actuales |

---

## FASE 2: EJECUCION DEL ANALISIS

### Objetivo
Ejecutar el analisis planificado modulo por modulo, generando documentacion detallada de cada componente.

### Entregables por Modulo

Para cada uno de los 10 modulos de retail (RT-001 a RT-010):

1. **ANALISIS-RT-{XXX}-{nombre}.md**
   - Componentes del core que hereda
   - Extensiones requeridas
   - Componentes nuevos a crear
   - Dependencias identificadas
   - Story points ajustados

### Matriz de Analisis

| Modulo Retail | Modulos Core Relacionados | % Herencia | Analisis |
|---------------|---------------------------|------------|----------|
| RT-001 Fundamentos | MGN-001, MGN-002, MGN-003, MGN-004 | 100% | PENDIENTE |
| RT-002 POS | MGN-013 Sales | 20% | PENDIENTE |
| RT-003 Inventario | MGN-011 Inventory | 60% | PENDIENTE |
| RT-004 Compras | MGN-012 Purchase | 80% | PENDIENTE |
| RT-005 Clientes | MGN-014 CRM | 40% | PENDIENTE |
| RT-006 Precios | MGN-013 Sales (pricing) | 30% | PENDIENTE |
| RT-007 Caja | - | 10% | PENDIENTE |
| RT-008 Reportes | MGN-009 Reports | 70% | PENDIENTE |
| RT-009 E-commerce | MGN-013 Sales | 20% | PENDIENTE |
| RT-010 Facturacion | MGN-010 Financial | 60% | PENDIENTE |

### Subagentes Especializados

```yaml
# Para cada modulo ejecutar:
agente: Plan-Agent
tipo: subagent_type=Plan
prompt: |
  Analizar modulo RT-{XXX} {nombre}:

  1. HERENCIA DEL CORE:
     - Listar servicios de erp-core/{modulo_core} que aplican
     - Identificar tablas DDL que se reutilizan
     - Revisar specs transversales aplicables

  2. EXTENSIONES:
     - Campos adicionales requeridos
     - Logica de negocio adicional
     - Nuevos endpoints necesarios

  3. COMPONENTES NUEVOS:
     - Entidades especificas de retail
     - Servicios nuevos
     - Controladores nuevos

  4. DEPENDENCIAS:
     - Modulos core requeridos
     - Otros modulos retail requeridos
     - Servicios externos (PAC, hardware)

  Contexto: [Incluir documentacion del modulo retail]
  Entregar: Documento ANALISIS-RT-{XXX}.md
```

---

## FASE 3: PLANEACION DE IMPLEMENTACIONES

### Objetivo
Crear planes de implementacion detallados para cada componente identificado en la Fase 2.

### Entregables

1. **PLAN-IMPL-DATABASE.md**
   - Orden de creacion de tablas
   - Migraciones de core requeridas
   - DDL especificos de retail
   - Indices y optimizaciones

2. **PLAN-IMPL-BACKEND.md**
   - Servicios a heredar (import directo)
   - Servicios a extender (class extends)
   - Servicios a crear (nuevos)
   - Controladores y rutas
   - Middlewares especificos

3. **PLAN-IMPL-FRONTEND.md**
   - Componentes reutilizables del core
   - Componentes especificos POS
   - PWA y modo offline
   - Integracion hardware

4. **ROADMAP-SPRINTS.md**
   - Sprints por prioridad (P0, P1, P2)
   - Dependencias entre sprints
   - Criterios de completitud

### Estructura del Plan por Capa

```yaml
database:
  sprint_1:
    - Crear schema retail
    - Crear tablas pos_sessions, pos_orders, pos_order_lines
    - Crear tablas cash_registers, cash_movements
    - Configurar RLS policies
  sprint_2:
    - Tablas branches, branch_stock
    - Tablas loyalty_cards, loyalty_transactions
    - Tablas promotions

backend:
  sprint_1:
    - Heredar AuthModule de @erp-core/auth
    - Heredar UsersModule de @erp-core/users
    - Crear POSModule
    - Crear CashModule
  sprint_2:
    - Extender InventoryModule
    - Crear LoyaltyModule
    - Crear PromotionsModule

frontend:
  sprint_1:
    - Dashboard principal
    - Pantalla POS
    - Gestion de caja
  sprint_2:
    - Inventario por sucursal
    - Clientes y fidelizacion
```

### Subagente Especializado

```yaml
agente: Plan-Agent
tipo: subagent_type=Plan
prompt: |
  Con base en los analisis de Fase 2, crear plan de implementacion:

  INPUT:
  - ANALISIS-RT-001 a RT-010
  - GAP-ANALYSIS-RETAIL
  - MATRIZ-MAPEO-CORE-RETAIL

  OUTPUT:
  - Plan de base de datos (orden DDL)
  - Plan de backend (herencia vs extension vs nuevo)
  - Plan de frontend (componentes)
  - Sprints priorizados

  Considerar:
  - Dependencias entre modulos
  - Prioridad P0 primero
  - Modo offline del POS
  - CFDI 4.0 en tiempo real
```

---

## FASE 4: VALIDACION DE PLANEACION

### Objetivo
Validar que el plan de implementacion cubre todos los componentes identificados y que no faltan dependencias.

### Entregables

1. **VALIDACION-COMPLETITUD.md**
   - Checklist de todos los objetos a implementar
   - Verificacion de dependencias cruzadas
   - Objetos faltantes identificados

2. **DEPENDENCY-GRAPH-VALIDADO.yml**
   - Grafo de dependencias actualizado
   - Orden de implementacion validado
   - Ciclos detectados (si existen)

3. **IMPACTO-CAMBIOS.md**
   - Componentes impactados por cada cambio
   - Propagacion de cambios en cascada
   - Riesgos identificados

### Checklist de Validacion

```yaml
validacion_database:
  - [ ] Todas las tablas de ANALISIS tienen DDL en PLAN-IMPL
  - [ ] FK apuntan a tablas existentes o en plan
  - [ ] RLS policies definidas para todas las tablas
  - [ ] Indices de rendimiento para POS (<100ms)

validacion_backend:
  - [ ] Cada servicio tiene su controlador
  - [ ] Cada endpoint tiene ruta definida
  - [ ] Imports de core son resolubles
  - [ ] No hay dependencias circulares

validacion_frontend:
  - [ ] Cada pantalla tiene componentes definidos
  - [ ] PWA manifest configurado
  - [ ] Service workers para offline
  - [ ] Integracion hardware documentada

validacion_herencia:
  - [ ] Modulos 100% herencia no duplican codigo
  - [ ] Extensiones usan 'extends' correctamente
  - [ ] Specs transversales aplicadas
```

### Subagente Especializado

```yaml
agente: General-Purpose-Agent
tipo: subagent_type=general-purpose
prompt: |
  Validar completitud del plan de implementacion:

  1. VERIFICAR OBJETOS:
     - Leer ANALISIS-RT-* (todos los modulos)
     - Leer PLAN-IMPL-* (todos los planes)
     - Cruzar: cada objeto analizado tiene plan

  2. VERIFICAR DEPENDENCIAS:
     - Construir grafo de dependencias
     - Detectar objetos huerfanos
     - Detectar ciclos

  3. VERIFICAR IMPACTO:
     - Para cada cambio en core, que retail impacta
     - Para cada nuevo en retail, que core requiere

  4. GENERAR REPORTE:
     - Lista de gaps encontrados
     - Recomendaciones de ajuste
     - Plan de correccion

  Entregar: VALIDACION-COMPLETITUD.md
```

---

## FASE 5: EJECUCION DE IMPLEMENTACIONES

### Objetivo
Ejecutar las implementaciones segun el plan validado, usando subagentes especializados por capa.

### Subagentes por Dominio

#### Database-Agent

```yaml
agente: Database-Agent
prompt: |
  Implementar DDL para retail segun PLAN-IMPL-DATABASE:

  CONTEXTO:
  - Schema: retail
  - Herencia: schemas auth, core, inventory, sales de erp-core
  - Variable RLS: app.current_tenant_id

  ARCHIVOS A CREAR/MODIFICAR:
  - database/init/03-retail-tables.sql (completar)
  - database/init/04-retail-functions.sql
  - database/init/05-retail-triggers.sql

  VALIDAR:
  - FK validas a tablas de core
  - RLS en todas las tablas
  - Indices para performance POS
```

#### Backend-Agent

```yaml
agente: Backend-Agent
prompt: |
  Implementar backend segun PLAN-IMPL-BACKEND:

  MODULOS A CREAR:
  - src/modules/pos/
  - src/modules/cash/
  - src/modules/loyalty/
  - src/modules/promotions/

  MODULOS A HEREDAR:
  - Importar @erp-core/auth
  - Importar @erp-core/users
  - Importar @erp-core/inventory (extender)

  PATRON:
  - NestJS con TypeORM
  - Controllers + Services + Entities
  - DTOs para validacion
```

#### Frontend-Agent

```yaml
agente: Frontend-Agent
prompt: |
  Implementar frontend segun PLAN-IMPL-FRONTEND:

  STACK:
  - React 18 + TypeScript
  - Vite + PWA plugin
  - Tailwind CSS
  - Zustand para estado

  PANTALLAS PRIORITARIAS:
  1. POS (punto de venta) - offline-first
  2. Dashboard de ventas
  3. Gestion de caja
  4. Inventario por sucursal

  CONSIDERACIONES:
  - Service workers para offline
  - IndexedDB para cache local
  - Sincronizacion con backend
```

### Control de Progreso

| Sprint | Modulos | Estado | % |
|--------|---------|--------|---|
| Sprint 1 | RT-001, RT-002, RT-007 | PENDIENTE | 0% |
| Sprint 2 | RT-003, RT-004, RT-010 | PENDIENTE | 0% |
| Sprint 3 | RT-005, RT-006 | PENDIENTE | 0% |
| Sprint 4 | RT-008, RT-009 | PENDIENTE | 0% |

---

## CRONOGRAMA DE FASES

| Fase | Descripcion | Estado | Dependencias |
|------|-------------|--------|--------------|
| F1 | Planeacion - Analisis Detallado | **SIGUIENTE** | - |
| F2 | Ejecucion del Analisis | PENDIENTE | F1 |
| F3 | Plan de Implementaciones | PENDIENTE | F2 |
| F4 | Validacion de Plan | PENDIENTE | F3 |
| F5 | Ejecucion de Implementaciones | PENDIENTE | F4 |

---

## ARCHIVOS DE SOPORTE

### Estructura de Carpetas para Entregables

```
retail/orchestration/planes/
├── PLAN-MAESTRO-MIGRACION-RETAIL.md  (este documento)
├── fase-1-analisis/
│   ├── ANALISIS-ERP-CORE-INVENTARIO.md
│   ├── ANALISIS-RETAIL-REQUERIMIENTOS.md
│   ├── MATRIZ-MAPEO-CORE-RETAIL.md
│   └── GAP-ANALYSIS-RETAIL.md
├── fase-2-analisis-modulos/
│   ├── ANALISIS-RT-001-fundamentos.md
│   ├── ANALISIS-RT-002-pos.md
│   ├── ANALISIS-RT-003-inventario.md
│   ├── ANALISIS-RT-004-compras.md
│   ├── ANALISIS-RT-005-clientes.md
│   ├── ANALISIS-RT-006-precios.md
│   ├── ANALISIS-RT-007-caja.md
│   ├── ANALISIS-RT-008-reportes.md
│   ├── ANALISIS-RT-009-ecommerce.md
│   └── ANALISIS-RT-010-facturacion.md
├── fase-3-implementacion/
│   ├── PLAN-IMPL-DATABASE.md
│   ├── PLAN-IMPL-BACKEND.md
│   ├── PLAN-IMPL-FRONTEND.md
│   └── ROADMAP-SPRINTS.md
├── fase-4-validacion/
│   ├── VALIDACION-COMPLETITUD.md
│   ├── DEPENDENCY-GRAPH-VALIDADO.yml
│   └── IMPACTO-CAMBIOS.md
└── fase-5-ejecucion/
    └── TRAZA-EJECUCION.md
```

---

## PROXIMA ACCION

**Fase Actual:** FASE 1 - Planeacion
**Accion Inmediata:** Ejecutar analisis exhaustivo de erp-core con Explore-Agent

```bash
# Comando para iniciar Fase 1:
# Usar subagente Explore con nivel "very thorough"
# Target: /projects/erp-suite/apps/erp-core/
```

---

**Documento creado:** 2025-12-18
**Sistema:** NEXUS + SIMCO v2.2.0
**Perfil:** Requirements-Analyst
