# PLAN MAESTRO DE MIGRACIÓN Y CONSOLIDACIÓN - ERP GENÉRICO

**Proyecto:** ERP Genérico (Base Reutilizable Multi-Proyecto)
**Versión:** 2.0.0
**Fecha:** 2025-11-23
**Estado:** 📋 Listo para ejecución
**Coordinador:** Architecture-Analyst (con capacidades de orquestación)

---

## 🎯 OBJETIVO PRINCIPAL

Crear el **ERP Genérico** como base reutilizable para los 3 ERPs especializados mediante:

1. **Análisis profundo** de proyectos de referencia (Odoo + Gamilit)
2. **Migración y extracción** de componentes genéricos del ERP Construcción
3. **Validación cruzada** entre referencias, construcción y genérico
4. **Consolidación** en documentación completa del ERP Genérico
5. **Retroalimentación** al ERP Construcción con mejoras identificadas

### Resultado Final Esperado

```
ERP Genérico (100% documentado)
    ↓ Reutilización 60-70%
    ├─> ERP Construcción (especialización vivienda/INFONAVIT)
    ├─> ERP Vidrio Templado (especialización producción vidrio)
    └─> ERP Mecánicas Diesel (especialización laboratorios diesel)
```

---

## 📚 REFERENCIAS DISPONIBLES

### 1. Proyecto Odoo (Lógica de Negocio)
- **Ubicación:** `/shared/reference/ODOO-MODULES-ANALYSIS.md`
- **Qué aporta:** Lógica de negocio consolidada, patrones ERP probados
- **Módulos clave:** base, account, stock, purchase, sale, project, hr, crm
- **Uso:** Validar RF, identificar funcionalidades faltantes, patrones de datos

### 2. Proyecto Gamilit (Arquitectura Moderna)
- **Ubicación:** `/shared/reference/gamilit/`
- **Qué aporta:** Arquitectura moderna, patrones técnicos, mejores prácticas
- **Aspectos clave:** Multi-schema DB, constantes SSOT, path aliases, validaciones
- **Uso:** Definir arquitectura técnica, estructura de código, DevOps

### 3. ERP Construcción (Documentación Existente)
- **Ubicación:** `/projects/erp-construccion/docs/`
- **Qué aporta:** 18 módulos documentados (35% progreso), estructura completa
- **Estado:** Extensiva documentación de RF/ET/US para construcción
- **Uso:** Fuente de migración, identificar componentes genéricos vs específicos

---

## 🗺️ METODOLOGÍA: 4 FASES

### FASE 0: ANÁLISIS DE REFERENCIAS (NUEVA)
**Duración:** 2 semanas
**Responsable:** Architecture-Analyst (trabajo directo)
**Objetivo:** Análisis profundo de Odoo y Gamilit para fundamentar decisiones

### FASE 1: ANÁLISIS Y RETROALIMENTACIÓN
**Duración:** 2-3 semanas
**Responsable:** Architecture-Analyst (con delegaciones)
**Objetivo:** Migrar y validar componentes del ERP Construcción

### FASE 2: MODELADO DE REQUERIMIENTOS Y BD
**Duración:** 3-4 semanas
**Responsable:** Architecture-Analyst (con delegaciones extensivas)
**Objetivo:** Crear RF, ET, diseño de BD para ERP Genérico

### FASE 3: DOCUMENTACIÓN DETALLADA
**Duración:** 2-3 semanas
**Responsable:** Architecture-Analyst (con delegaciones)
**Objetivo:** US, planes de prueba, documentación transversal

**TOTAL:** 9-12 semanas

---

## 📋 FASE 0: ANÁLISIS DE REFERENCIAS (2 SEMANAS)

### Objetivo
Analizar proyectos de referencia para fundamentar todas las decisiones arquitectónicas del ERP Genérico.

### Actividades Principales

#### 1. Análisis Comparativo Odoo (1 semana)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Leer `/shared/reference/ODOO-MODULES-ANALYSIS.md` completo
- Para cada módulo Odoo relevante, documentar:
  - Modelos de datos principales (tablas, campos, relaciones)
  - Lógica de negocio clave (workflows, reglas, validaciones)
  - Patrones arquitectónicos observados
  - APIs y endpoints estándar
  - Integraciones entre módulos
  - Funcionalidades destacables

**Módulos Odoo a analizar:**

| Módulo Odoo | Aplicación en ERP Genérico | Prioridad | Mapeo a MGN |
|-------------|---------------------------|-----------|-------------|
| **base** | Sistema base, modelos fundamentales | P0 | MGN-001, MGN-002 |
| **auth_signup** | Autenticación y registro | P0 | MGN-001 |
| **account** | Módulo financiero básico | P0 | MGN-004 |
| **stock** | Inventario básico | P0 | MGN-005 |
| **purchase** | Compras básicas | P0 | MGN-006 |
| **sale** | Ventas básicas | P0 | MGN-007 |
| **analytic** | Contabilidad analítica | P0 | MGN-008 |
| **crm** | CRM básico | P1 | MGN-009 |
| **hr** | Recursos humanos básico | P1 | MGN-010 |
| **project** | Proyectos genéricos | P1 | MGN-011 |
| **mail** | Mensajería y notificaciones | P0 | MGN-014 |
| **portal** | Portal de usuarios externos | P1 | MGN-013 |

**Entregables:**
- `00-analisis-referencias/odoo/README.md` - Resumen ejecutivo
- `00-analisis-referencias/odoo/odoo-base-analysis.md`
- `00-analisis-referencias/odoo/odoo-auth-analysis.md`
- `00-analisis-referencias/odoo/odoo-account-analysis.md`
- `00-analisis-referencias/odoo/odoo-stock-analysis.md`
- `00-analisis-referencias/odoo/odoo-purchase-analysis.md`
- `00-analisis-referencias/odoo/odoo-sale-analysis.md`
- `00-analisis-referencias/odoo/odoo-analytic-analysis.md`
- `00-analisis-referencias/odoo/odoo-crm-analysis.md`
- `00-analisis-referencias/odoo/odoo-hr-analysis.md`
- `00-analisis-referencias/odoo/odoo-project-analysis.md`
- `00-analisis-referencias/odoo/odoo-mail-analysis.md`
- `00-analisis-referencias/odoo/odoo-portal-analysis.md`
- `00-analisis-referencias/odoo/MAPEO-ODOO-TO-MGN.md` - Tabla de mapeo completa

**Total:** 14 archivos

---

#### 2. Análisis Comparativo Gamilit (1 semana)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Leer `/shared/reference/gamilit/README.md` y `_MAP.md`
- Analizar arquitectura técnica:
  - Arquitectura multi-schema de PostgreSQL
  - Sistema de constantes SSOT (Single Source of Truth)
  - Path aliases y estructura de imports
  - Estructura modular del backend (11 módulos)
  - Feature-Sliced Design del frontend
  - Scripts de validación automática (sync-enums, validate-constants)
  - Sistema de testing
- Identificar patrones a **adoptar**, **adaptar** o **evitar**
- Documentar gaps y oportunidades vs ERP Construcción

**Entregables:**
- `00-analisis-referencias/gamilit/README.md` - Resumen ejecutivo
- `00-analisis-referencias/gamilit/database-architecture.md` - Análisis multi-schema
- `00-analisis-referencias/gamilit/backend-patterns.md` - Patrones de backend
- `00-analisis-referencias/gamilit/frontend-patterns.md` - Patrones de frontend
- `00-analisis-referencias/gamilit/ssot-system.md` - Sistema de constantes SSOT
- `00-analisis-referencias/gamilit/devops-automation.md` - Scripts y validaciones
- `00-analisis-referencias/gamilit/ADOPTAR-ADAPTAR-EVITAR.md` - Matriz de decisiones

**Total:** 7 archivos

---

#### 3. Validación Cruzada con ERP Construcción (paralelo)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Leer documentación de `/projects/erp-construccion/docs/`
- Comparar módulos de construcción con Odoo/Gamilit equivalentes
- Identificar:
  - Componentes que son genéricos (candidatos a migrar)
  - Componentes específicos de construcción (quedan en erp-construccion)
  - Mejoras arquitectónicas aplicables a construcción
  - Funcionalidades faltantes en construcción
  - Oportunidades de refactorización

**Entregables:**
- `00-analisis-referencias/construccion/COMPONENTES-GENERICOS.md` - Lista de componentes a migrar
- `00-analisis-referencias/construccion/COMPONENTES-ESPECIFICOS.md` - Lista que queda en construcción
- `00-analisis-referencias/construccion/MEJORAS-ARQUITECTONICAS.md` - Mejoras sugeridas
- `00-analisis-referencias/construccion/GAP-ANALYSIS.md` - Funcionalidades faltantes
- `00-analisis-referencias/construccion/RETROALIMENTACION.md` - Retroalimentación integral

**Total:** 5 archivos

---

#### 4. Creación de ADRs (Architecture Decision Records)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Basándose en análisis de Odoo, Gamilit y Construcción
- Crear ADRs para decisiones arquitectónicas clave

**ADRs a crear:**

1. **ADR-001-stack-tecnologico.md**
   - Stack: Node.js 20+ + Express + TypeScript / React 18 + Vite / PostgreSQL 15+
   - Justificación: Alineación con Gamilit, madurez, ecosistema

2. **ADR-002-arquitectura-modular.md**
   - Monorepo con apps/ (database, backend, frontend, mobile)
   - Justificación: Simplifica desarrollo, reutilización, Gamilit

3. **ADR-003-multi-tenancy.md**
   - Schema-level isolation (cada tenant un schema PostgreSQL)
   - Justificación: Seguridad, performance, Gamilit pattern, Odoo usa similar

4. **ADR-004-sistema-constantes-ssot.md**
   - Backend como SSOT, sincronización automática a Frontend
   - Justificación: Elimina duplicación, patrón Gamilit muy efectivo

5. **ADR-005-path-aliases.md**
   - Uso de @shared, @modules, @components, @services
   - Justificación: Imports limpios, refactoring fácil, Gamilit pattern

6. **ADR-006-rbac-sistema-permisos.md**
   - Role-Based Access Control granular
   - Justificación: Requerimiento multi-tenant, Odoo base.res.users pattern

7. **ADR-007-database-design.md**
   - Multi-schema: auth, core, financial, inventory, purchase, sales, analytics, etc.
   - RLS (Row Level Security) desde diseño
   - Justificación: Organización lógica, Gamilit pattern, seguridad

8. **ADR-008-api-design.md**
   - RESTful APIs con OpenAPI 3.0 (Swagger)
   - Versionado de APIs (/api/v1/)
   - Justificación: Estándar de la industria, documentación auto-generada

9. **ADR-009-frontend-architecture.md**
   - Feature-Sliced Design (shared, features, pages, app)
   - Justificación: Escalabilidad, Gamilit pattern

10. **ADR-010-testing-strategy.md**
    - Coverage objetivo: 80% (backend), 70% (frontend)
    - Unit + Integration + E2E
    - Justificación: Evitar deuda técnica de Gamilit (14% coverage)

**Ubicación:** `projects/erp-generic/docs/adr/`

**Total:** 10 archivos

---

#### 5. Mapeo de Componentes Genéricos

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Crear mapa exhaustivo de componentes genéricos vs específicos
- Definir qué va en `/shared/components/` vs qué va en cada proyecto

**Entregables:**
- `00-analisis-referencias/MAPA-COMPONENTES-GENERICOS.md`

**Estructura del mapa:**

```markdown
# MAPA DE COMPONENTES GENÉRICOS VS ESPECÍFICOS

## 1. COMPONENTES DE BASE DE DATOS

### Genéricos (van en ERP Genérico)
| Componente | Tipo | Ubicación | Usado por |
|------------|------|-----------|-----------|
| auth schema | Schema | database/ddl/schemas/auth.sql | Todos |
| users table | Table | auth.users | Todos |
| roles table | Table | auth.roles | Todos |
| ... | ... | ... | ... |

### Específicos de Construcción
| Componente | Tipo | Ubicación | Razón |
|------------|------|-----------|-------|
| projects.lots | Table | construction/lots.sql | Lotes INFONAVIT |
| ... | ... | ... | ... |

## 2. COMPONENTES DE BACKEND

### Genéricos
| Módulo | Ubicación | Usado por |
|--------|-----------|-----------|
| auth module | backend/src/modules/auth/ | Todos |
| ... | ... | ... |

### Específicos de Construcción
| Módulo | Ubicación | Razón |
|--------|-----------|-------|
| estimations module | backend/src/modules/estimations/ | Estimaciones de obra |
| ... | ... | ... |

## 3. COMPONENTES DE FRONTEND

### Genéricos
| Componente | Tipo | Ubicación | Usado por |
|------------|------|-----------|-----------|
| LoginForm | Component | shared/components/auth/LoginForm.tsx | Todos |
| DataTable | Component | shared/components/table/DataTable.tsx | Todos |
| ... | ... | ... | ... |

### Específicos de Construcción
| Componente | Tipo | Ubicación | Razón |
|------------|------|-----------|-------|
| LotSelector | Component | features/construction/LotSelector.tsx | Selección de lotes |
| ... | ... | ... | ... |

## 4. RESUMEN CUANTITATIVO

| Categoría | Genéricos | Específicos Construcción | % Reutilización |
|-----------|-----------|--------------------------|-----------------|
| **Schemas DB** | 8 | 3 | 73% |
| **Tablas DB** | 45 | 28 | 62% |
| **Módulos Backend** | 10 | 8 | 56% |
| **Componentes Frontend** | 80 | 45 | 64% |
| **TOTAL** | 143 | 84 | **63%** |
```

**Total:** 1 archivo

---

### Resumen de Entregables Fase 0

| Categoría | Archivos | Ubicación |
|-----------|----------|-----------|
| Análisis Odoo | 14 | `00-analisis-referencias/odoo/` |
| Análisis Gamilit | 7 | `00-analisis-referencias/gamilit/` |
| Validación Construcción | 5 | `00-analisis-referencias/construccion/` |
| ADRs | 10 | `adr/` |
| Mapeo de componentes | 1 | `00-analisis-referencias/` |
| Resumen ejecutivo | 1 | `00-analisis-referencias/RESUMEN-FASE-0.md` |
| **TOTAL** | **38 archivos** | `projects/erp-generic/docs/` |

### Criterios de Completitud Fase 0

- [ ] Todos los módulos Odoo listados han sido analizados (12 módulos)
- [ ] Análisis de Gamilit cubre 6 áreas clave
- [ ] Validación con ERP Construcción identifica componentes genéricos/específicos
- [ ] 10 ADRs creados y aprobados
- [ ] Mapa de componentes genéricos completo con % de reutilización
- [ ] Resumen ejecutivo consolidado documenta hallazgos principales
- [ ] Retroalimentación específica a ERP Construcción generada

---

## 📋 FASE 1: ANÁLISIS Y RETROALIMENTACIÓN (2-3 SEMANAS)

### Objetivo
Migrar componentes genéricos del ERP Construcción al ERP Genérico, validando con referencias.

### Actividades con Delegación

#### 1. Definición de Módulos del ERP Genérico

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Basándose en Fase 0, definir lista final de módulos MGN-001 a MGN-014
- Establecer alcance de cada módulo (qué incluye, qué no)
- Definir prioridades (P0, P1, P2)
- Definir dependencias entre módulos

**Entregables:**
- `01-definicion-modulos/LISTA-MODULOS-ERP-GENERICO.md`
- `01-definicion-modulos/ALCANCE-POR-MODULO.md`
- `01-definicion-modulos/DEPENDENCIAS-MODULOS.md`

**Total:** 3 archivos

---

#### 2. Extracción de Componentes Genéricos del ERP Construcción

**Responsable:** Architecture-Analyst (coordina) + Requirements-Analyst (delegado)

**Delegación:**

```yaml
agent: Requirements-Analyst
task: "Extraer RF genéricos del ERP Construcción"
inputs:
  - projects/erp-construccion/docs/01-fase-alcance-inicial/
  - projects/erp-generic/docs/00-analisis-referencias/construccion/COMPONENTES-GENERICOS.md
output: projects/erp-generic/docs/01-definicion-modulos/RF-EXTRAIDOS/
instructions: |
  Para cada componente genérico identificado en Fase 0:
  1. Leer RF original en erp-construccion
  2. Adaptar para ser genérico (eliminar referencias específicas de construcción)
  3. Validar contra módulo Odoo equivalente
  4. Crear nuevo RF en formato MGN-XXX
  Estimar: 30-40 RF a extraer
```

**Entregables del agente:**
- 30-40 archivos `RF-XXX-NNN.md` en estructura temporal

**Validación del coordinador:**
- Revisar cada RF extraído
- Asegurar que son verdaderamente genéricos
- Validar coherencia con ADRs

---

#### 3. Análisis de Gaps por Módulo

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Para cada módulo MGN-001 a MGN-014:
  - Comparar RF extraídos con módulo Odoo equivalente
  - Identificar funcionalidades faltantes
  - Identificar funcionalidades sobrantes
  - Documentar gaps

**Entregables:**
- `01-definicion-modulos/gaps/GAP-ANALYSIS-MGN-001.md`
- `01-definicion-modulos/gaps/GAP-ANALYSIS-MGN-002.md`
- ... (14 archivos, uno por módulo)

**Total:** 14 archivos

---

#### 4. Retroalimentación a ERP Construcción

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Consolidar mejoras identificadas en Fase 0
- Proponer refactorizaciones específicas
- Documentar oportunidades de reutilización del ERP Genérico

**Entregables:**
- `01-definicion-modulos/RETROALIMENTACION-ERP-CONSTRUCCION.md`

**Estructura:**

```markdown
# RETROALIMENTACIÓN AL ERP CONSTRUCCIÓN

## MEJORAS ARQUITECTÓNICAS RECOMENDADAS

### 1. Adoptar Multi-Schema Database
**Estado actual:** Single schema "public"
**Recomendación:** Migrar a multi-schema (auth, core, construction, etc.)
**Justificación:** ADR-007, patrón Gamilit, organización lógica
**Prioridad:** P1
**Esfuerzo:** 2-3 semanas
**Beneficio:** Mejor organización, permisos granulares, mantenibilidad

### 2. Implementar Sistema de Constantes SSOT
...

## COMPONENTES GENÉRICOS A REUTILIZAR

Una vez completado ERP Genérico, refactorizar construcción para usar:
- MGN-001: Fundamentos (auth, users, roles) → Eliminar MAI-001 duplicado
- MGN-004: Financiero Básico → Extender con contabilidad de obra
...

## OPORTUNIDADES DE REFACTORIZACIÓN

### Módulo MAI-004 (Compras e Inventarios)
**Oportunidad:** Separar compras genéricas de compras de materiales de obra
**Acción:** Usar MGN-006 (Compras Básico) + MAI-004 (Compras Especializadas)
...
```

**Total:** 1 archivo

---

### Resumen de Entregables Fase 1

| Categoría | Archivos | Ubicación |
|-----------|----------|-----------|
| Definición de módulos | 3 | `01-definicion-modulos/` |
| RF extraídos (delegado) | 30-40 | `01-definicion-modulos/RF-EXTRAIDOS/` |
| Gap analysis por módulo | 14 | `01-definicion-modulos/gaps/` |
| Retroalimentación construcción | 1 | `01-definicion-modulos/` |
| **TOTAL** | **48-58 archivos** | - |

### Criterios de Completitud Fase 1

- [ ] Lista definitiva de módulos MGN-001 a MGN-014 aprobada
- [ ] Alcance de cada módulo claramente definido
- [ ] RF genéricos extraídos y validados (30-40 RF)
- [ ] Gap analysis completado para todos los módulos
- [ ] Retroalimentación a ERP Construcción documentada

---

## 📋 FASE 2: MODELADO DE REQUERIMIENTOS Y BD (3-4 SEMANAS)

### Objetivo
Crear modelos de dominio, RF completos, ET, y diseño de BD para ERP Genérico.

### Actividades con Delegación Extensiva

#### 1. Modelado de Dominio (Semana 1)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Para cada área funcional, crear modelo de dominio
- Documentar entidades, atributos, relaciones
- Crear diagramas UML/ER

**Áreas funcionales:**
1. Autenticación y Autorización (MGN-001, MGN-002)
2. Financiero (MGN-004, MGN-008)
3. Inventario y Compras (MGN-005, MGN-006)
4. Ventas (MGN-007)
5. CRM (MGN-009)
6. RRHH (MGN-010)
7. Proyectos (MGN-011)
8. Reportes y Notificaciones (MGN-012, MGN-014)

**Entregables:**
- `02-modelado/domain-models/auth-domain.md`
- `02-modelado/domain-models/financial-domain.md`
- `02-modelado/domain-models/inventory-domain.md`
- `02-modelado/domain-models/sales-domain.md`
- `02-modelado/domain-models/crm-domain.md`
- `02-modelado/domain-models/hr-domain.md`
- `02-modelado/domain-models/projects-domain.md`
- `02-modelado/domain-models/reporting-domain.md`

**Total:** 8 archivos

---

#### 2. Creación de Requerimientos Funcionales (Semana 2-3)

**Responsable:** Architecture-Analyst (coordina) + Requirements-Analyst (delegado)

**Estrategia:** Delegar por módulo en paralelo

**Delegación (ejemplo para MGN-001):**

```yaml
agent: Requirements-Analyst
task: "Crear RF completos para MGN-001 Fundamentos"
inputs:
  - projects/erp-generic/docs/00-analisis-referencias/odoo/odoo-base-analysis.md
  - projects/erp-generic/docs/00-analisis-referencias/odoo/odoo-auth-analysis.md
  - projects/erp-generic/docs/01-definicion-modulos/ALCANCE-POR-MODULO.md
  - projects/erp-generic/docs/02-modelado/domain-models/auth-domain.md
  - projects/erp-construccion/docs/01-fase-alcance-inicial/MAI-001-fundamentos/requerimientos/
output: projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/requerimientos/
instructions: |
  Crear 5-7 RF para el módulo MGN-001 Fundamentos:
  - RF-AUTH-001: Autenticación JWT
  - RF-AUTH-002: Gestión de usuarios
  - RF-AUTH-003: Gestión de roles y permisos (RBAC)
  - RF-AUTH-004: Multi-tenancy (tenants/esquemas)
  - RF-COMP-001: Gestión de empresas/organizaciones
  - RF-COMP-002: Configuración de tenant

  Formato: Seguir estructura de erp-construccion
  Validar: Contra Odoo base + auth_signup
  Incluir: Flujos, reglas de negocio, validaciones, criterios de aceptación
```

**Repetir para los 14 módulos** (lanzar en paralelo donde sea posible)

**Entregables por módulo:** ~5 RF
**Total RF esperados:** 14 módulos × 5 RF = **70 RF**

---

#### 3. Diseño de Base de Datos (Semana 2-3, paralelo)

**Responsable:** Architecture-Analyst (coordina) + Database-Agent (delegado)

**Delegación:**

```yaml
agent: Database-Agent
task: "Diseñar schemas PostgreSQL para ERP Genérico"
inputs:
  - projects/erp-generic/docs/adr/ADR-007-database-design.md
  - projects/erp-generic/docs/02-modelado/domain-models/
  - shared/reference/gamilit/database/ddl/schemas/
  - shared/reference/ODOO-MODULES-ANALYSIS.md
output: projects/erp-generic/docs/02-modelado/database-design/schemas/
instructions: |
  Crear DDL completos para todos los schemas del ERP Genérico:

  Schemas a crear:
  1. auth.sql - Autenticación (users, roles, permissions, sessions)
  2. core.sql - Core (tenants, companies, currencies, countries, uom)
  3. financial.sql - Financiero (accounts, journal_entries, fiscal_years)
  4. inventory.sql - Inventario (products, warehouses, stock_moves)
  5. purchase.sql - Compras (purchase_orders, vendors, receipts)
  6. sales.sql - Ventas (sales_orders, customers, invoices)
  7. analytics.sql - Analítico (analytic_accounts, cost_centers)
  8. crm.sql - CRM (leads, opportunities, pipeline)
  9. hr.sql - RRHH (employees, departments, contracts)
  10. projects.sql - Proyectos (projects, tasks, milestones)
  11. reporting.sql - Reportes (reports, dashboards)
  12. notifications.sql - Notificaciones (messages, notifications)

  Para cada schema:
  - CREATE SCHEMA
  - CREATE TYPE (enums)
  - CREATE TABLE con constraints, defaults, comentarios
  - CREATE INDEX (performance)
  - CREATE FUNCTION (helpers, triggers)
  - RLS policies (Row Level Security)

  Seguir:
  - ADR-007 (multi-schema, RLS)
  - Patrón Gamilit (organización, nomenclatura)
  - Modelos Odoo (relaciones, campos estándar)
```

**Entregables:** 12 archivos SQL

---

#### 4. Creación de Especificaciones Técnicas (Semana 3-4)

**Responsable:** Architecture-Analyst (coordina) + Backend-Agent + Frontend-Agent (delegados)

**Delegación Backend (ejemplo MGN-001):**

```yaml
agent: Backend-Agent
task: "Crear ET backend para MGN-001 Fundamentos"
inputs:
  - projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/requerimientos/
  - projects/erp-generic/docs/02-modelado/database-design/schemas/auth.sql
  - projects/erp-generic/docs/adr/ADR-008-api-design.md
output: projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/especificaciones/backend/
instructions: |
  Para cada RF de MGN-001, crear ET de backend:
  - ET-AUTH-001-backend: JWT implementation (endpoints, services, middleware)
  - ET-AUTH-002-backend: User management API
  - ET-AUTH-003-backend: RBAC API
  - ET-AUTH-004-backend: Multi-tenancy middleware
  - ET-COMP-001-backend: Companies API

  Incluir:
  - Diseño de API (endpoints, request/response schemas)
  - Servicios y lógica de negocio
  - Validaciones
  - Manejo de errores
  - Testing
```

**Delegación Frontend (ejemplo MGN-001):**

```yaml
agent: Frontend-Agent
task: "Crear ET frontend para MGN-001 Fundamentos"
inputs:
  - projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/requerimientos/
  - projects/erp-generic/docs/adr/ADR-009-frontend-architecture.md
output: projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/especificaciones/frontend/
instructions: |
  Para cada RF de MGN-001, crear ET de frontend:
  - ET-AUTH-001-frontend: Login/Logout UI
  - ET-AUTH-002-frontend: User management UI
  - ET-AUTH-003-frontend: Roles & permissions UI
  - ET-COMP-001-frontend: Company settings UI

  Incluir:
  - Componentes React a crear
  - Páginas/vistas
  - Stores (Zustand)
  - Integración con API
  - Validaciones frontend
```

**Repetir para 14 módulos**

**Entregables por módulo:** ~5 ET backend + ~5 ET frontend = ~10 ET
**Total ET esperados:** 14 módulos × 10 ET = **140 ET**

---

#### 5. Matriz de Trazabilidad (Semana 4)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Para cada módulo, crear matriz vinculando RF ↔ ET ↔ Objetos DB

**Entregables (ejemplo MGN-001):**

```yaml
# projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/implementacion/TRACEABILITY.yml

module: MGN-001-fundamentos
requirements:
  - id: RF-AUTH-001
    title: "Autenticación JWT"
    specifications:
      backend:
        - ET-AUTH-001-backend
      frontend:
        - ET-AUTH-001-frontend
    database:
      schemas:
        - auth
      tables:
        - auth.users
        - auth.sessions
      functions:
        - auth.generate_jwt()
        - auth.verify_jwt()

  - id: RF-AUTH-002
    title: "Gestión de usuarios"
    specifications:
      backend:
        - ET-AUTH-002-backend
      frontend:
        - ET-AUTH-002-frontend
    database:
      tables:
        - auth.users
        - auth.user_profiles
      functions:
        - auth.create_user()
        - auth.update_user()
```

**Total:** 14 archivos YAML (uno por módulo)

---

### Resumen de Entregables Fase 2

| Categoría | Archivos | Ubicación |
|-----------|----------|-----------|
| Modelos de dominio | 8 | `02-modelado/domain-models/` |
| Schemas de BD | 12 | `02-modelado/database-design/schemas/` |
| RF (delegado) | 70 | `02-fase-core/MGN-XXX-*/requerimientos/` |
| ET backend (delegado) | 70 | `02-fase-core/MGN-XXX-*/especificaciones/backend/` |
| ET frontend (delegado) | 70 | `02-fase-core/MGN-XXX-*/especificaciones/frontend/` |
| Matrices trazabilidad | 14 | `02-fase-core/MGN-XXX-*/implementacion/TRACEABILITY.yml` |
| **TOTAL** | **244 archivos** | - |

### Criterios de Completitud Fase 2

- [ ] Modelos de dominio completos para 8 áreas funcionales
- [ ] 12 schemas de BD diseñados con DDL completo
- [ ] 70 RF creados y validados contra Odoo
- [ ] 70 ET backend creados
- [ ] 70 ET frontend creados
- [ ] 14 matrices de trazabilidad vinculan RF ↔ ET ↔ DB

---

## 📋 FASE 3: DOCUMENTACIÓN DETALLADA (2-3 SEMANAS)

### Objetivo
Completar documentación con US, inventarios, planes de pruebas, y docs transversales.

### Actividades con Delegación

#### 1. Creación de Historias de Usuario (Semana 1-2)

**Responsable:** Architecture-Analyst (coordina) + Requirements-Analyst (delegado)

**Delegación (por módulo):**

```yaml
agent: Requirements-Analyst
task: "Crear US para MGN-001 Fundamentos"
inputs:
  - projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/requerimientos/
  - projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/especificaciones/
output: projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/historias-usuario/
instructions: |
  Para cada RF/ET del módulo, crear historias de usuario:

  Formato:
  - Como [rol] quiero [funcionalidad] para [beneficio]
  - Criterios de aceptación (Given/When/Then)
  - Requerimientos relacionados (RF-XXX-NNN)
  - Especificaciones relacionadas (ET-XXX-NNN)
  - Story Points (Fibonacci: 1,2,3,5,8,13)
  - Prioridad (P0/P1/P2)

  Estimar: ~10 US por módulo
```

**Repetir para 14 módulos**

**Entregables por módulo:** ~10 US
**Total US esperados:** 14 módulos × 10 US = **140 US**

---

#### 2. Documentación de Módulos (Semana 2)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Para cada módulo crear README.md y _MAP.md

**Entregables (ejemplo MGN-001):**

`projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/README.md`:
```markdown
# MGN-001: Fundamentos

## Descripción
Módulo core que proporciona autenticación, gestión de usuarios, roles y permisos (RBAC), multi-tenancy, y gestión de empresas/organizaciones.

## Alcance
- Autenticación JWT
- Registro de usuarios
- Gestión de usuarios y perfiles
- Sistema de roles y permisos (RBAC)
- Multi-tenancy (schema-level isolation)
- Gestión de empresas/organizaciones
- Configuración de tenant

## Referencia Odoo
- base (res.users, res.groups, res.company)
- auth_signup

## Story Points
50 SP

## Prioridad
P0 (Crítico - Requerido para todos los demás módulos)

## Dependencias
- Ninguna (módulo base)

## Módulos dependientes
- Todos los demás módulos del ERP Genérico
```

`projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/_MAP.md`:
```markdown
# MAPA DEL MÓDULO MGN-001: Fundamentos

## Documentación

- [README.md](README.md) - Descripción del módulo
- [TRACEABILITY.yml](implementacion/TRACEABILITY.yml) - Matriz de trazabilidad

## Requerimientos Funcionales (6 archivos)

- [RF-AUTH-001](requerimientos/RF-AUTH-001-autenticacion-jwt.md) - Autenticación JWT
- [RF-AUTH-002](requerimientos/RF-AUTH-002-gestion-usuarios.md) - Gestión de usuarios
- [RF-AUTH-003](requerimientos/RF-AUTH-003-rbac.md) - RBAC
- [RF-AUTH-004](requerimientos/RF-AUTH-004-multi-tenancy.md) - Multi-tenancy
- [RF-COMP-001](requerimientos/RF-COMP-001-gestion-empresas.md) - Empresas
- [RF-COMP-002](requerimientos/RF-COMP-002-configuracion-tenant.md) - Config tenant

## Especificaciones Técnicas (12 archivos)

### Backend (6 archivos)
- [ET-AUTH-001-backend](especificaciones/backend/ET-AUTH-001-backend-jwt.md)
- [ET-AUTH-002-backend](especificaciones/backend/ET-AUTH-002-backend-users.md)
- ...

### Frontend (6 archivos)
- [ET-AUTH-001-frontend](especificaciones/frontend/ET-AUTH-001-frontend-login.md)
- [ET-AUTH-002-frontend](especificaciones/frontend/ET-AUTH-002-frontend-users.md)
- ...

## Historias de Usuario (10 archivos)

- [US-FUND-001](historias-usuario/US-FUND-001-login.md) - Login de usuario
- [US-FUND-002](historias-usuario/US-FUND-002-registro.md) - Registro de usuario
- ...

## Implementación

- [DATABASE.yml](implementacion/DATABASE.yml) - Inventario de objetos de BD
- [BACKEND.yml](implementacion/BACKEND.yml) - Inventario de módulos backend
- [FRONTEND.yml](implementacion/FRONTEND.yml) - Inventario de componentes frontend

## Pruebas

- [TEST-PLAN.md](pruebas/TEST-PLAN.md) - Plan de pruebas
- [TEST-CASES.md](pruebas/TEST-CASES.md) - Casos de prueba
```

**Total:** 14 × 2 = **28 archivos** (README + _MAP por módulo)

---

#### 3. Inventarios de Implementación (Semana 2)

**Responsable:** Architecture-Analyst (coordina) + agentes especializados (delegados)

**Delegación Database (ejemplo MGN-001):**

```yaml
agent: Database-Agent
task: "Crear inventario de objetos de BD para MGN-001"
inputs:
  - projects/erp-generic/docs/02-modelado/database-design/schemas/auth.sql
  - projects/erp-generic/docs/02-modelado/database-design/schemas/core.sql
output: projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/implementacion/DATABASE.yml
instructions: |
  Listar todos los objetos de BD que serán creados para MGN-001:

  schemas:
    - auth
    - core (parcial)

  tables:
    - auth.users
    - auth.roles
    - auth.permissions
    - auth.user_roles
    - auth.sessions
    - core.tenants
    - core.companies

  types:
    - auth.user_status
    - auth.session_status

  functions:
    - auth.generate_jwt()
    - auth.verify_jwt()
    - auth.create_user()

  indexes:
    - auth.users_email_idx
    - auth.users_tenant_id_idx

  policies_rls:
    - auth.users_tenant_isolation
```

**Delegación Backend:**

```yaml
agent: Backend-Agent
task: "Crear inventario backend para MGN-001"
output: projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/implementacion/BACKEND.yml
instructions: |
  Listar módulos/servicios/controladores a implementar:

  modules:
    - src/modules/auth/
    - src/modules/company/

  services:
    - auth.service.ts
    - user.service.ts
    - role.service.ts
    - company.service.ts

  controllers:
    - auth.controller.ts
    - user.controller.ts
    - role.controller.ts
    - company.controller.ts

  middleware:
    - jwt.middleware.ts
    - rbac.middleware.ts
    - tenant.middleware.ts

  dtos:
    - login.dto.ts
    - register.dto.ts
    - create-user.dto.ts

  entities:
    - user.entity.ts
    - role.entity.ts
    - company.entity.ts
```

**Delegación Frontend:**

```yaml
agent: Frontend-Agent
task: "Crear inventario frontend para MGN-001"
output: projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/implementacion/FRONTEND.yml
instructions: |
  Listar componentes/páginas/stores a implementar:

  pages:
    - src/pages/auth/LoginPage.tsx
    - src/pages/auth/RegisterPage.tsx
    - src/pages/users/UsersListPage.tsx
    - src/pages/users/UserDetailPage.tsx

  components:
    - src/shared/components/auth/LoginForm.tsx
    - src/shared/components/auth/RegisterForm.tsx
    - src/shared/components/users/UserTable.tsx
    - src/shared/components/users/UserForm.tsx

  stores:
    - src/stores/authStore.ts
    - src/stores/userStore.ts

  services:
    - src/services/api/authApi.ts
    - src/services/api/userApi.ts

  hooks:
    - src/shared/hooks/useAuth.ts
    - src/shared/hooks/useUser.ts
```

**Repetir para 14 módulos**

**Total:** 14 × 3 = **42 inventarios YAML**

---

#### 4. Planes de Pruebas (Semana 2)

**Responsable:** Architecture-Analyst (coordina) + Code-Reviewer (delegado)

**Delegación (por módulo):**

```yaml
agent: Code-Reviewer
task: "Crear plan de pruebas para MGN-001"
inputs:
  - projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/requerimientos/
  - projects/erp-generic/docs/adr/ADR-010-testing-strategy.md
output:
  - projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/pruebas/TEST-PLAN.md
  - projects/erp-generic/docs/02-fase-core/MGN-001-fundamentos/pruebas/TEST-CASES.md
instructions: |
  Crear plan de pruebas y casos de prueba:

  TEST-PLAN.md:
  - Estrategia de testing (Unit, Integration, E2E)
  - Alcance de testing
  - Criterios de aceptación
  - Coverage objetivo (80% backend, 70% frontend)
  - Herramientas (Jest, Vitest, Playwright)

  TEST-CASES.md:
  - Casos de prueba por RF
  - Casos de prueba de integración
  - Casos de prueba E2E
  - Casos de prueba de seguridad
  - Casos de prueba de performance
```

**Repetir para 14 módulos**

**Total:** 14 × 2 = **28 archivos** (TEST-PLAN + TEST-CASES)

---

#### 5. Documentación Transversal (Semana 3)

**Responsable:** Architecture-Analyst (trabajo directo)

**Tareas:**
- Crear documentación de alto nivel

**Entregables:**

1. **ESTRUCTURA-COMPLETA.md**
   - Resumen ejecutivo del ERP Genérico
   - Distribución por fase (Core vs Complementaria)
   - Estructura de directorios completa
   - Métricas consolidadas
   - Convenciones de nomenclatura

2. **ROADMAP-DETALLADO.md**
   - Roadmap de desarrollo (sprints, hitos)
   - Dependencias entre módulos
   - Timeline estimado
   - Recursos necesarios

3. **GUIA-REUTILIZACION.md**
   - Cómo usar el ERP Genérico en proyectos especializados
   - Qué extender vs qué reutilizar
   - Patrones de especialización
   - Ejemplos de uso en ERP Construcción/Vidrio/Mecánicas

4. **GUIA-USO-REFERENCIAS.md**
   - Cómo usar análisis de Odoo durante desarrollo
   - Cómo aplicar patrones de Gamilit
   - Cuándo consultar referencias

5. **02-fase-core/README.md**
   - Descripción de Fase Core (8 módulos)
   - Objetivos y alcance
   - Dependencias entre módulos

6. **02-fase-core/_MAP.md**
   - Índice maestro de todos los módulos Core

7. **03-fase-complementaria/README.md**
   - Descripción de Fase Complementaria (6 módulos)

8. **03-fase-complementaria/_MAP.md**
   - Índice maestro de todos los módulos Complementarios

**Total:** 8 archivos

---

### Resumen de Entregables Fase 3

| Categoría | Archivos | Ubicación |
|-----------|----------|-----------|
| US (delegado) | 140 | `02-fase-core/MGN-XXX-*/historias-usuario/` + `03-fase-complementaria/` |
| README + _MAP por módulo | 28 | Cada módulo |
| Inventarios YAML (delegado) | 42 | `implementacion/` en cada módulo |
| Planes de pruebas (delegado) | 28 | `pruebas/` en cada módulo |
| Documentación transversal | 8 | Raíz de `docs/` |
| **TOTAL** | **246 archivos** | - |

### Criterios de Completitud Fase 3

- [ ] 140 US creadas (10 por módulo)
- [ ] Todos los módulos tienen README.md y _MAP.md
- [ ] Todos los módulos tienen inventarios (DATABASE, BACKEND, FRONTEND)
- [ ] Todos los módulos tienen planes de pruebas
- [ ] Documentación transversal completa (8 archivos)

---

## 📊 RESUMEN EJECUTIVO DEL PLAN MAESTRO

### Fases y Duración

| Fase | Duración | Responsable | Delegaciones |
|------|----------|-------------|--------------|
| **Fase 0** | 2 semanas | Architecture-Analyst | 0 (trabajo directo) |
| **Fase 1** | 2-3 semanas | Architecture-Analyst | 1 agente (Requirements-Analyst) |
| **Fase 2** | 3-4 semanas | Architecture-Analyst | 3 agentes (Requirements, Database, Backend, Frontend) |
| **Fase 3** | 2-3 semanas | Architecture-Analyst | 3 agentes (Requirements, Database, Backend, Frontend, Code-Reviewer) |
| **TOTAL** | **9-12 semanas** | - | - |

### Archivos a Crear

| Fase | Archivos | Responsable Directo | Delegado |
|------|----------|---------------------|----------|
| Fase 0 | 38 | 38 | 0 |
| Fase 1 | 48-58 | 18 | 30-40 |
| Fase 2 | 244 | 22 | 222 |
| Fase 3 | 246 | 36 | 210 |
| **TOTAL** | **576-586** | **114** | **462-472** |

### Distribución de Trabajo

```
Architecture-Analyst (Coordinador): 19% del trabajo directo
    - Análisis de referencias (Fase 0): 100%
    - Decisiones arquitectónicas: 100%
    - ADRs: 100%
    - Gap analysis: 100%
    - Validaciones: 100%
    - Consolidación: 100%

Agentes Delegados: 81% del trabajo
    - Requirements-Analyst: ~180 archivos (RF + US)
    - Database-Agent: ~26 archivos (schemas + inventarios)
    - Backend-Agent: ~84 archivos (ET + inventarios)
    - Frontend-Agent: ~84 archivos (ET + inventarios)
    - Code-Reviewer: ~28 archivos (planes de pruebas)
```

---

## ✅ CRITERIOS DE COMPLETITUD GLOBAL

### Al Completar Todas las Fases

- [ ] Fase 0 completada (38 archivos, 10 ADRs, análisis de referencias)
- [ ] Fase 1 completada (48-58 archivos, definición de módulos)
- [ ] Fase 2 completada (244 archivos, RF/ET/DB completos)
- [ ] Fase 3 completada (246 archivos, US/inventarios/planes)
- [ ] Total: **576-586 archivos** creados
- [ ] Estructura sigue formato de erp-construccion
- [ ] Documentación validada contra Odoo y Gamilit
- [ ] Retroalimentación a erp-construccion generada
- [ ] ERP Genérico listo para desarrollo
- [ ] Componentes genéricos identificados para reutilización

### Estructura Final Esperada

```
projects/erp-generic/docs/
├── 00-analisis-referencias/                # Fase 0
│   ├── odoo/                               # 14 archivos
│   ├── gamilit/                            # 7 archivos
│   ├── construccion/                       # 5 archivos
│   ├── MAPA-COMPONENTES-GENERICOS.md
│   └── RESUMEN-FASE-0.md
│
├── 01-definicion-modulos/                  # Fase 1
│   ├── gaps/                               # 14 archivos
│   ├── RF-EXTRAIDOS/                       # 30-40 archivos
│   └── [3 archivos de definición]
│
├── 02-modelado/                            # Fase 2
│   ├── domain-models/                      # 8 archivos
│   └── database-design/schemas/            # 12 archivos SQL
│
├── 02-fase-core/                           # 8 módulos (MGN-001 a MGN-008)
│   ├── MGN-001-fundamentos/
│   │   ├── README.md
│   │   ├── _MAP.md
│   │   ├── requerimientos/                 # ~5 RF
│   │   ├── especificaciones/
│   │   │   ├── backend/                    # ~5 ET
│   │   │   └── frontend/                   # ~5 ET
│   │   ├── historias-usuario/              # ~10 US
│   │   ├── implementacion/
│   │   │   ├── TRACEABILITY.yml
│   │   │   ├── DATABASE.yml
│   │   │   ├── BACKEND.yml
│   │   │   └── FRONTEND.yml
│   │   └── pruebas/
│   │       ├── TEST-PLAN.md
│   │       └── TEST-CASES.md
│   ├── MGN-002-empresas-organizaciones/
│   ├── MGN-003-catalogos-maestros/
│   ├── MGN-004-financiero-basico/
│   ├── MGN-005-inventario-basico/
│   ├── MGN-006-compras-basico/
│   ├── MGN-007-ventas-basico/
│   └── MGN-008-contabilidad-analitica/
│
├── 03-fase-complementaria/                 # 6 módulos (MGN-009 a MGN-014)
│   ├── MGN-009-crm-basico/
│   ├── MGN-010-rrhh-basico/
│   ├── MGN-011-proyectos-genericos/
│   ├── MGN-012-reportes-analytics/
│   ├── MGN-013-portal-usuarios/
│   └── MGN-014-mensajeria-notificaciones/
│
├── adr/                                    # 10 ADRs
│   ├── ADR-001-stack-tecnologico.md
│   ├── ADR-002-arquitectura-modular.md
│   └── ...
│
├── ESTRUCTURA-COMPLETA.md
├── ROADMAP-DETALLADO.md
├── GUIA-REUTILIZACION.md
└── GUIA-USO-REFERENCIAS.md

Total estimado: 576-586 archivos
```

---

## 🎯 PRÓXIMOS PASOS INMEDIATOS

### 1. Validación del Plan
- [ ] Revisar este plan maestro
- [ ] Aprobar alcance y metodología
- [ ] Confirmar disponibilidad de referencias (Odoo, Gamilit)

### 2. Preparación
- [ ] Crear estructura base de carpetas en `erp-generic/docs/`
- [ ] Configurar prompt extendido del Architecture-Analyst
- [ ] Verificar acceso a referencias

### 3. Lanzamiento Fase 0
- [ ] Lanzar Architecture-Analyst para Fase 0
- [ ] Monitorear progreso
- [ ] Revisar entregables de Fase 0
- [ ] Aprobar antes de pasar a Fase 1

---

## 📚 REFERENCIAS Y RECURSOS

### Documentación Base
- [Plan Original ERP Genérico](PLAN-DOCUMENTACION-ERP-GENERICO.md)
- [Instrucciones Agente Arquitectura](INSTRUCCIONES-AGENTE-ARQUITECTURA.md)
- [Prompt Architecture-Analyst Extendido](/shared/orchestration/prompts/PROMPT-ARCHITECTURE-ANALYST-EXTENDED.md)

### Referencias Externas
- [Análisis Módulos Odoo](/shared/reference/ODOO-MODULES-ANALYSIS.md)
- [Proyecto Gamilit](/shared/reference/gamilit/)
- [ERP Construcción](/projects/erp-construccion/docs/)

### Estándares y Directivas
- [Directivas de Orquestación](/shared/orchestration/directivas/)
- [Prompts de Agentes](/shared/orchestration/prompts/)

---

**Creado:** 2025-11-23
**Versión:** 2.0.0
**Autor:** Architecture-Analyst (coordinador)
**Estado:** ✅ Plan maestro completo - Listo para ejecución
**Aprobación requerida:** Usuario
