# LISTA DE MÓDULOS DEL ERP GENÉRICO

**Fecha:** 2025-11-23
**Última actualización:** 2025-12-06
**Basado en:** Análisis Fase 0 (Odoo, Gamilit, Construcción)
**Total módulos:** 15 módulos
**Versión:** 1.1

---

## Introducción

Este documento define la lista completa de módulos que conformarán el ERP Genérico (MGN). Cada módulo está identificado con un código MGN-XXX y ha sido diseñado basándose en:

1. **Análisis de Odoo:** Patrones de negocio universales probados en miles de empresas
2. **Arquitectura Gamilit:** Patrones técnicos modernos validados en producción
3. **Validación ERP Construcción:** 61% de componentes genéricos identificados

**Objetivo:** Crear una plataforma base reutilizable que permita:
- 70% reutilización en ERP Vidrio
- 81% reutilización en ERP Mecánicas
- 49% reducción de código duplicado
- 36% aceleración en desarrollo de nuevos proyectos

---

## Distribución por Fase

### Fase Core (8 módulos - P0)
Módulos críticos que deben implementarse primero. Constituyen la base funcional mínima del ERP.

**Módulos:**
- MGN-001: Fundamentos
- MGN-002: Empresas y Organizaciones
- MGN-003: Catálogos Maestros
- MGN-004: Financiero Básico
- MGN-005: Inventario Básico
- MGN-006: Compras Básico
- MGN-007: Ventas Básico
- MGN-008: Contabilidad Analítica

**Total Story Points:** 430 SP
**Timeline Estimado:** 11 sprints (22 semanas / 5.5 meses)

### Fase Complementaria (7 módulos - P1/P2)
Módulos que agregan funcionalidad adicional y mejoran la experiencia de usuario.

**Módulos:**
- MGN-009: CRM Básico
- MGN-010: RRHH Básico
- MGN-011: Proyectos Genéricos
- MGN-012: Reportes y Analytics
- MGN-013: Portal de Usuarios
- MGN-014: Mensajería y Notificaciones
- MGN-015: Billing y Suscripciones SaaS

**Total Story Points:** 360 SP
**Timeline Estimado:** 9 sprints (18 semanas / 4.5 meses)

---

## Módulos Detallados

### MGN-001: Fundamentos

**Nombre:** Fundamentos (Auth, Users, Roles, Multi-Tenancy)
**Fase:** Core
**Prioridad:** P0 - Crítico
**Story Points:** 50 SP
**Referencia Odoo:** base, auth_signup
**Referencia Gamilit:** auth_management schema
**% Reutilización:** 90%

**Componentes principales:**
- Autenticación JWT
- Gestión de usuarios (CRUD, perfiles)
- Roles y permisos (RBAC)
- Multi-tenancy (schema-level isolation)
- Sesiones y tokens
- Registro de usuarios (signup)
- Reset password
- Verificación de email
- RLS Policies (Row Level Security)

**Dependencias:** Ninguna (módulo base)
**Módulos que dependen:** Todos los demás

**Justificación P0:**
Sin autenticación y autorización, ningún otro módulo puede funcionar. Es la base de seguridad del sistema completo.

**Alcance técnico:**
- Database: Schema `auth_management` (10 tablas)
- Backend: Módulo auth completo con JWT
- Frontend: Componentes de login, signup, forgot password

---

### MGN-002: Empresas y Organizaciones

**Nombre:** Empresas y Organizaciones
**Fase:** Core
**Prioridad:** P0 - Crítico
**Story Points:** 30 SP
**Referencia Odoo:** base (res.company, res.partner)
**Referencia Gamilit:** core schema (companies table)
**% Reutilización:** 90%

**Componentes principales:**
- Gestión de empresas/organizaciones (CRUD)
- Configuración multi-empresa (usuario accede a múltiples empresas)
- Datos maestros de empresa (nombre, RFC/NIT, logo, moneda principal)
- Jerarquías organizacionales (holdings, parent_id)
- Empresa vinculada a partner (patrón Odoo)

**Dependencias:** MGN-001
**Módulos que dependen:** Todos los transaccionales (MGN-004 a MGN-014)

**Justificación P0:**
Requisito fundamental para multi-empresa. Todos los documentos (facturas, órdenes, etc.) deben pertenecer a una empresa.

**Alcance técnico:**
- Database: core.companies, core.company_user_assignments
- Backend: Módulo companies con context switching
- Frontend: Selector de empresa en navbar, configuración empresa

---

### MGN-003: Catálogos Maestros

**Nombre:** Catálogos Maestros
**Fase:** Core
**Prioridad:** P0 - Crítico
**Story Points:** 35 SP
**Referencia Odoo:** base (res.country, res.currency, uom)
**% Reutilización:** 95%

**Componentes principales:**
- Países y regiones (ISO 3166-1, estados/provincias)
- Monedas y tipos de cambio (ISO 4217, conversión automática)
- Unidades de medida (UoM) - Categorías, conversiones
- Categorías de productos (jerárquicas)
- Partners universales (clientes, proveedores, contactos, empleados)

**Dependencias:** MGN-001, MGN-002
**Módulos que dependen:** Todos los transaccionales (MGN-004 a MGN-014)

**Justificación P0:**
Datos maestros esenciales. Productos, facturas, órdenes de compra necesitan UoM, monedas, partners, etc.

**Alcance técnico:**
- Database: core.partners, core.currencies, core.countries, core.states, core.uom, core.uom_categories, core.product_categories
- Backend: Módulo catalogs con endpoints CRUD
- Frontend: Catálogos con búsqueda, paginación, filtros

**Patrones clave:**
- Partner universal (is_customer, is_supplier, is_employee) → Odoo res.partner
- Conversiones UoM (kg → g, m → cm, etc.)
- Tasas de cambio con vigencia temporal

---

### MGN-004: Financiero Básico

**Nombre:** Módulo Financiero Básico
**Fase:** Core
**Prioridad:** P0 - Crítico
**Story Points:** 80 SP
**Referencia Odoo:** account
**% Reutilización:** 70%

**Componentes principales:**
- Plan de cuentas (chart of accounts, tipos de cuenta: activo, pasivo, capital, ingresos, egresos)
- Asientos contables (journal entries, débito/crédito, validación débito=crédito)
- Facturas (clientes y proveedores, estados: draft → open → paid)
- Pagos y conciliación (payment reconciliation)
- Reportes financieros básicos (Balance General, Estado de Resultados/P&L)
- Multi-moneda (tasas de cambio, gain/loss por diferencia cambiaria)
- Journals (diario de ventas, compras, banco, etc.)

**Dependencias:** MGN-001, MGN-002, MGN-003
**Módulos que dependen:** MGN-008 (Analítica), todos los transaccionales

**Justificación P0:**
Contabilidad es requerimiento legal en cualquier empresa. Todas las transacciones (compras, ventas) deben generar asientos contables.

**Alcance técnico:**
- Database: Schema `financial_management` (12 tablas: accounts, journal_entries, journal_entry_lines, journals, payments, invoices, invoice_lines, etc.)
- Backend: Módulo financial con lógica contable completa
- Frontend: Plan de cuentas, formularios de asientos, conciliación bancaria

**Patrones clave:**
- Doble entrada (débito = crédito siempre)
- Estados de documentos: draft → posted → reconciled
- Conciliación bancaria automática

---

### MGN-005: Inventario Básico

**Nombre:** Gestión de Inventario Básico
**Fase:** Core
**Prioridad:** P0 - Crítico
**Story Points:** 70 SP
**Referencia Odoo:** stock
**% Reutilización:** 80%

**Componentes principales:**
- Productos y variantes (productos con múltiples atributos: talla, color, etc.)
- Almacenes y ubicaciones (estructura jerárquica: almacén → zona → pasillo → rack → nivel)
- Movimientos de inventario (stock moves: origen → destino)
- Picking/Albaranes (agrupación de movimientos: picking de recepción, entrega, interno)
- Trazabilidad (lotes y números de serie)
- Valoración de inventario (FIFO, LIFO, Costo Promedio)
- Ubicaciones virtuales (proveedores, clientes, pérdidas)
- Inventario físico (ajustes, conteos cíclicos)

**Dependencias:** MGN-001, MGN-002, MGN-003
**Módulos que dependen:** MGN-006 (Compras), MGN-007 (Ventas)

**Justificación P0:**
Gestión de stock es fundamental para empresas que manejan productos físicos (construcción, vidrio, mecánicas).

**Alcance técnico:**
- Database: Schema `inventory_management` (10 tablas: products, product_variants, warehouses, locations, stock_moves, pickings, stock_quants, lots, serial_numbers)
- Backend: Módulo inventory con lógica de movimientos
- Frontend: Vista de stock, movimientos, inventario físico

**Patrones clave:**
- Doble movimiento (origen → tránsito → destino) → Odoo stock.move
- Ubicaciones virtuales (proveedores, clientes, producción)
- Quants (paquetes de stock en ubicación específica)

---

### MGN-006: Compras Básico

**Nombre:** Gestión de Compras Básico
**Fase:** Core
**Prioridad:** P0 - Crítico
**Story Points:** 60 SP
**Referencia Odoo:** purchase
**% Reutilización:** 85%

**Componentes principales:**
- Órdenes de compra (purchase orders, estados: draft → sent → confirmed → received → billed)
- Solicitudes de cotización (RFQ - Request for Quotation)
- Gestión de proveedores (catálogo, condiciones de pago, lead time)
- Recepción de productos (integración automática con inventario)
- Facturas de proveedor (integración con contabilidad)
- Control cantidades (recibidas vs facturadas vs pedidas)
- Aprobaciones (workflow de aprobación por monto)

**Dependencias:** MGN-001, MGN-003, MGN-004, MGN-005
**Módulos que dependen:** MGN-008 (Analítica)

**Justificación P0:**
Compras es proceso crítico de negocio. Sin compras, no hay inventario ni producción.

**Alcance técnico:**
- Database: Schema `purchasing_management` (7 tablas: purchase_orders, purchase_order_lines, rfqs, supplier_pricelists)
- Backend: Módulo purchasing con workflow
- Frontend: Formulario órdenes de compra, RFQ, recepciones

**Patrones clave:**
- Workflow: RFQ → PO → Recepción → Factura → Odoo purchase
- Integración automática con stock (crear stock move al confirmar PO)
- Control 3-way match (PO vs Recepción vs Factura)

---

### MGN-007: Ventas Básico

**Nombre:** Gestión de Ventas Básico
**Fase:** Core
**Prioridad:** P0 - Crítico
**Story Points:** 60 SP
**Referencia Odoo:** sale
**% Reutilización:** 85%

**Componentes principales:**
- Cotizaciones (quotations, envío a cliente por email/PDF)
- Órdenes de venta (sales orders, estados: quotation → sale → delivery → invoice)
- Gestión de clientes (catálogo, condiciones de pago)
- Entrega de productos (integración automática con inventario)
- Facturación a cliente (integración con contabilidad)
- Portal de clientes básico (aprobación online de cotizaciones)
- Descuentos y promociones
- Términos de pago

**Dependencias:** MGN-001, MGN-003, MGN-004, MGN-005
**Módulos que dependen:** MGN-008 (Analítica), MGN-009 (CRM)

**Justificación P0:**
Ventas es el motor de ingresos de cualquier empresa. Proceso crítico de negocio.

**Alcance técnico:**
- Database: Schema `sales_management` (8 tablas: sales_orders, sales_order_lines, quotations, customer_pricelists)
- Backend: Módulo sales con workflow
- Frontend: Formulario órdenes de venta, cotizaciones, entregas

**Patrones clave:**
- Workflow: Cotización → Venta → Entrega → Factura → Odoo sale
- Portal de aprobación (cliente firma online)
- Integración automática con stock (crear picking al confirmar SO)

---

### MGN-008: Contabilidad Analítica

**Nombre:** Contabilidad Analítica
**Fase:** Core
**Prioridad:** P0 - Crítico (ESENCIAL para construcción)
**Story Points:** 45 SP
**Referencia Odoo:** analytic
**% Reutilización:** 95%

**Componentes principales:**
- Cuentas analíticas (por proyecto/departamento/centro de costos)
- Líneas analíticas (registro de costos/ingresos en transacciones)
- Distribución analítica (una transacción puede distribuirse a múltiples proyectos)
- Reportes de rentabilidad por proyecto (P&L por cuenta analítica)
- Integración con módulos transaccionales (compras, ventas, nómina, facturas)
- Tags analíticos (etiquetas adicionales: obra, torre, etapa)

**Dependencias:** MGN-001, MGN-004, MGN-006, MGN-007
**Módulos que dependen:** MGN-011 (Proyectos), MGN-012 (Reportes)

**Justificación P0:**
**CRÍTICO** para ERPs de proyectos (construcción, consultoría, etc.). Permite tracking de costos/ingresos por proyecto automáticamente.

**Impacto:**
- Reporte P&L por proyecto sin queries complejos
- Consolidación automática de costos
- Visibilidad de rentabilidad en tiempo real
- Ahorro: 80 horas/mes en reportes manuales

**Alcance técnico:**
- Database: Schema `analytics_management` (4 tablas: analytic_accounts, analytic_lines, analytic_distributions, analytic_tags)
- Backend: Módulo analytics con consolidación
- Frontend: Reportes por proyecto, distribución analítica

**Patrones clave:**
- Campo `analytic_account_id` en **TODAS** las transacciones → Odoo analytic pattern
- Consolidación automática de líneas
- Plan de cuentas analítico (paralelo al plan de cuentas contable)

**Aplicabilidad:** ⭐⭐⭐⭐⭐ CRÍTICO para ERP de proyectos

---

### MGN-009: CRM Básico

**Nombre:** CRM Básico
**Fase:** Complementaria
**Prioridad:** P1 - Alta
**Story Points:** 50 SP
**Referencia Odoo:** crm
**% Reutilización:** 75%

**Componentes principales:**
- Gestión de leads/oportunidades (leads con scoring automático)
- Pipeline de ventas (stages, probabilidad de cierre, revenue estimado)
- Actividades y seguimiento (llamadas, reuniones, emails)
- Conversión a cotización (lead → quotation automático)
- Reportes de rendimiento (embudo de ventas, conversión rate)
- Teams de ventas (territorios, objetivos)
- Lead scoring automático

**Dependencias:** MGN-001, MGN-003, MGN-007
**Módulos que dependen:** Ninguno

**Justificación P1:**
Mejora significativa en gestión comercial, pero NO bloquea operación básica del ERP.

**Alcance técnico:**
- Database: Schema `crm_management` (6 tablas: leads, opportunities, stages, teams, activities)
- Backend: Módulo crm con scoring
- Frontend: Pipeline kanban, formulario de leads

**Patrones clave:**
- Pipeline kanban drag-and-drop → Odoo crm.lead
- Lead scoring (valoración automática)
- Conversión automática lead → opportunity → quotation

---

### MGN-010: RRHH Básico

**Nombre:** Recursos Humanos Básico
**Fase:** Complementaria
**Prioridad:** P1 - Alta
**Story Points:** 55 SP
**Referencia Odoo:** hr, hr_contract, hr_attendance
**% Reutilización:** 70%

**Componentes principales:**
- Gestión de empleados (datos personales, puestos, departamentos)
- Departamentos y puestos (estructura jerárquica, organigrama)
- Contratos laborales (tipo, salario, fechas inicio/fin)
- Asistencias (check-in/out, cálculo horas trabajadas)
- Ausencias y permisos (vacaciones, incapacidades, permisos)
- Organigrama (visualización jerárquica)
- Timesheet básico (registro de horas)

**Dependencias:** MGN-001, MGN-002, MGN-003
**Módulos que dependen:** MGN-011 (Proyectos - para timesheet)

**Justificación P1:**
Importante para gestión de personal, pero NO bloquea operación básica del ERP. Puede implementarse después de módulos core.

**Alcance técnico:**
- Database: Schema `hr_management` (9 tablas: employees, departments, contracts, attendances, leaves, timesheet)
- Backend: Módulo hr completo
- Frontend: Organigrama, formularios empleados, timesheet

**Patrones clave:**
- Empleado vinculado a partner y user → Odoo hr.employee
- Departamentos jerárquicos (parent_id)
- Integración timesheet → analytic accounts

---

### MGN-011: Proyectos Genéricos

**Nombre:** Gestión de Proyectos Genéricos
**Fase:** Complementaria
**Prioridad:** P1 - Alta
**Story Points:** 65 SP
**Referencia Odoo:** project
**% Reutilización:** 80%

**Componentes principales:**
- Proyectos y tareas (proyectos con manager, tareas asignadas)
- Milestones (hitos importantes)
- Timesheet (registro de horas trabajadas por tarea)
- Integración con contabilidad analítica (proyecto → cuenta analítica)
- Kanban de tareas (drag-and-drop)
- Gantt (vista de timeline)
- Subtareas (jerarquía de tareas)
- Portal de proyectos (cliente ve avances)

**Dependencias:** MGN-001, MGN-008, MGN-010 (opcional para timesheet)
**Módulos que dependen:** Ninguno

**Justificación P1:**
Muy importante para empresas de proyectos (construcción, consultoría), pero NO bloquea operación contable/inventario básica.

**Alcance técnico:**
- Database: Schema `projects_management` (7 tablas: projects, tasks, task_stages, milestones, task_dependencies)
- Backend: Módulo projects
- Frontend: Kanban de tareas, Gantt, formulario proyectos

**Patrones clave:**
- Vista kanban de tareas → Odoo project.task
- Integración con analytic accounts (1 proyecto = 1 cuenta analítica)
- Portal de clientes (vista read-only de tareas)

**Diferencia con construcción:**
Este es genérico (cualquier proyecto). Construcción extiende con: manzanas, lotes, prototipos, curva S, APUs.

---

### MGN-012: Reportes y Analytics

**Nombre:** Reportes y Analytics
**Fase:** Complementaria
**Prioridad:** P2 - Media
**Story Points:** 40 SP
**Referencia Odoo:** Reportes de múltiples módulos
**Referencia Gamilit:** analytics module
**% Reutilización:** 60%

**Componentes principales:**
- Dashboard genérico (widgets configurables, KPIs)
- Reportes configurables (query builder visual)
- Exportación de datos (PDF, Excel, CSV)
- Gráficos y visualizaciones (Chart.js, Recharts)
- KPIs genéricos (ventas, compras, inventario, finanzas)
- Reportes financieros estándar (Balance, P&L, Flujo de caja)
- Filtros dinámicos (por fecha, empresa, proyecto, etc.)

**Dependencias:** MGN-001, MGN-004, MGN-008
**Módulos que dependen:** Ninguno

**Justificación P2:**
Importante para análisis de negocio, pero puede implementarse con reportes básicos inicialmente y mejorar iterativamente.

**Alcance técnico:**
- Database: Schema `reports_management` (5 tablas: report_definitions, report_schedules, saved_filters)
- Backend: Módulo reports con query builder
- Frontend: Dashboard con widgets, reportes interactivos

**Patrones clave:**
- Reportes con filtros dinámicos
- Caching de reportes pesados (Redis)
- Exportación multi-formato

---

### MGN-013: Portal de Usuarios

**Nombre:** Portal de Usuarios Externos
**Fase:** Complementaria
**Prioridad:** P1 - Alta (ESENCIAL para INFONAVIT)
**Story Points:** 50 SP
**Referencia Odoo:** portal
**% Reutilización:** 80%

**Componentes principales:**
- Acceso limitado para usuarios externos (clientes, proveedores)
- Vista de documentos (cotizaciones, facturas, proyectos)
- Aprobación de documentos (firma electrónica de cotizaciones)
- Firma electrónica (canvas HTML5, almacenamiento seguro)
- Mensajería (comunicación cliente-empresa)
- Notificaciones (email, in-app)
- Dashboard personalizado por rol

**Dependencias:** MGN-001, MGN-007, MGN-014
**Módulos que dependen:** Ninguno

**Justificación P1:**
**ESENCIAL** para portal de derechohabientes INFONAVIT (construcción). Alta prioridad para mejorar experiencia de cliente.

**Impacto:**
- Clientes aprueban cotizaciones online
- Reducción 40% llamadas al call center
- Firma electrónica válida legalmente
- Visibilidad de proyectos en tiempo real

**Alcance técnico:**
- Database: Usuarios con `is_portal=true` en auth.users
- Backend: Módulo portal con RLS estricto
- Frontend: Portal separado (subdomain o /portal)

**Patrones clave:**
- RLS estricto (usuario solo ve sus registros) → Odoo portal.user
- Permisos read-only + acciones permitidas (aprobar, firmar)
- Firma electrónica (canvas HTML5)

**Aplicabilidad:** ⭐⭐⭐⭐⭐ CRÍTICO para portal derechohabientes INFONAVIT

---

### MGN-014: Mensajería y Notificaciones

**Nombre:** Mensajería y Notificaciones
**Fase:** Complementaria
**Prioridad:** P1 - Alta
**Story Points:** 45 SP
**Referencia Odoo:** mail
**Referencia Gamilit:** notifications module
**% Reutilización:** 85%

**Componentes principales:**
- Sistema de mensajes (mail.thread pattern, chatter por registro)
- Notificaciones (email, in-app, push notifications)
- Actividades programadas (recordatorios, deadlines)
- Followers (seguidores de documentos, notificación automática)
- Tracking automático de cambios (auditoría sin código adicional)
- Templates de email (plantillas configurables)
- Mensajería en tiempo real (WebSocket con Socket.IO)

**Dependencias:** MGN-001
**Módulos que dependen:** Todos (opcional, mejora colaboración)

**Justificación P1:**
Mejora significativa en colaboración y auditoría. Tracking automático es crítico para compliance (ISO 9001).

**Alcance técnico:**
- Database: Schema `notifications_management` (6 tablas: messages, notifications, followers, activities, email_templates)
- Backend: Módulo notifications con WebSocket
- Frontend: Chatter UI, notificaciones in-app

**Patrones clave:**
- Tracking automático de campos (configurado via decorators) → Odoo mail.thread
- Chatter UI por registro (comentarios, historial)
- Followers + notificaciones automáticas

**Patrones mejorados vs Odoo:**
- Polling → WebSocket (Socket.IO) para notificaciones en tiempo real
- Mejor UX de notificaciones

**Aplicabilidad:** ⭐⭐⭐⭐⭐ ESENCIAL para auditoría y colaboración

---

### MGN-015: Billing y Suscripciones SaaS

**Nombre:** Billing y Suscripciones SaaS
**Fase:** Complementaria
**Prioridad:** P1 - Alta
**Story Points:** 55 SP
**Referencia:** Stripe Billing, Paddle
**% Reutilización:** 90%

**Componentes principales:**
- Planes de suscripción (free, basic, professional, enterprise)
- Gestión de suscripciones por tenant (status, ciclo de facturación)
- Métodos de pago (tarjetas, transferencias, OXXO, SPEI)
- Facturación automática de suscripciones
- Cupones y descuentos promocionales
- Historial de suscripciones y cambios de plan
- Registros de uso para billing por consumo
- Integración con Stripe (payment intents, webhooks)

**Dependencias:** MGN-001, MGN-002
**Módulos que dependen:** Ninguno (módulo independiente)

**Justificación P1:**
Permite operar el ERP como SaaS multi-tenant con monetización. Esencial para modelo de negocio SaaS.

**Alcance técnico:**
- Database: Schema `billing` (11 tablas: subscription_plans, subscriptions, payments, invoices, coupons, etc.)
- Backend: Módulo billing con integración Stripe
- Frontend: Portal de facturación, gestión de planes

**Patrones clave:**
- Planes con límites configurables (usuarios, empresas, storage)
- Features flags por plan (módulos habilitados)
- Webhook handlers para eventos de pago
- Facturación recurrente automática

**Funciones de negocio:**
- `get_tenant_plan()`: Obtiene plan actual del tenant
- `can_add_user()`: Verifica límites del plan
- `has_feature()`: Verifica features habilitadas

**Aplicabilidad:** ⭐⭐⭐⭐⭐ CRÍTICO para modelo SaaS

---

## Resumen Cuantitativo

### Por Fase

| Fase | Módulos | Story Points | % Total SP | Timeline Estimado |
|------|---------|--------------|------------|-------------------|
| **Core (P0)** | 8 | 430 SP | 54% | 11 sprints (22 sem / 5.5 meses) |
| **Complementaria (P1/P2)** | 7 | 360 SP | 46% | 9 sprints (18 sem / 4.5 meses) |
| **TOTAL** | **15** | **790 SP** | **100%** | **20 sprints (40 sem / 10 meses)** |

### Por Prioridad

| Prioridad | Módulos | Story Points | % Total |
|-----------|---------|--------------|---------|
| **P0 - Crítico** | 8 | 430 SP | 54% |
| **P1 - Alta** | 6 | 320 SP | 41% |
| **P2 - Media** | 1 | 40 SP | 5% |

### Por Referencia Odoo

| Módulo MGN | Módulo(s) Odoo Principal | % Reutilización Lógica |
|------------|--------------------------|------------------------|
| MGN-001 | base, auth_signup | 90% |
| MGN-002 | base (res.company) | 90% |
| MGN-003 | base (res.partner, currencies, uom) | 95% |
| MGN-004 | account | 70% |
| MGN-005 | stock | 80% |
| MGN-006 | purchase | 85% |
| MGN-007 | sale | 85% |
| MGN-008 | analytic | 95% |
| MGN-009 | crm | 75% |
| MGN-010 | hr, hr_contract, hr_attendance | 70% |
| MGN-011 | project | 80% |
| MGN-012 | account (reports), reporting | 60% |
| MGN-013 | portal | 80% |
| MGN-014 | mail | 85% |
| MGN-015 | Stripe Billing (externo) | 90% |
| **PROMEDIO** | - | **82%** |

---

## Timeline Estimado

### Configuración Inicial

**Velocity estimado:** 40 SP por sprint (2 semanas)
**Equipo:** 3 desarrolladores full-stack + 1 arquitecto

**Cálculo:**
- Total SP: 735 SP
- Velocity: 40 SP/sprint
- Sprints necesarios: 735 / 40 = **18.4 sprints** ≈ **19 sprints**
- Duración total: 19 sprints × 2 semanas = **38 semanas** ≈ **9.5 meses**

### Distribución por Trimestre

**Q1 (Meses 1-3) - Fundamentos:**
- Sprint 1-2: MGN-001 (Fundamentos) - 50 SP
- Sprint 3-4: MGN-002 (Empresas) + MGN-003 (Catálogos) - 65 SP
- Sprint 5-6: MGN-004 (Financiero) Parte 1 - 40 SP

**Q2 (Meses 4-6) - Módulos Core:**
- Sprint 7-8: MGN-004 (Financiero) Parte 2 + MGN-005 (Inventario) - 110 SP
- Sprint 9-10: MGN-006 (Compras) + MGN-007 (Ventas) - 120 SP
- Sprint 11: MGN-008 (Analítica) - 45 SP

**Q3 (Meses 7-9) - Módulos Complementarios:**
- Sprint 12-13: MGN-014 (Mensajería) + MGN-009 (CRM) - 95 SP
- Sprint 14-15: MGN-010 (RRHH) + MGN-013 (Portal) - 105 SP
- Sprint 16-17: MGN-011 (Proyectos) - 65 SP

**Q4 (Mes 10) - Reportes y Refinamiento:**
- Sprint 18: MGN-012 (Reportes) - 40 SP
- Sprint 19: Buffer, testing, documentación

---

## Dependencias Entre Módulos

### Grafo de Dependencias

```mermaid
graph TD
    MGN001[MGN-001 Fundamentos] --> MGN002[MGN-002 Empresas]
    MGN001 --> MGN003[MGN-003 Catálogos]
    MGN001 --> MGN014[MGN-014 Mensajería]

    MGN002 --> MGN004[MGN-004 Financiero]
    MGN003 --> MGN004
    MGN003 --> MGN005[MGN-005 Inventario]

    MGN004 --> MGN006[MGN-006 Compras]
    MGN005 --> MGN006
    MGN004 --> MGN007[MGN-007 Ventas]
    MGN005 --> MGN007

    MGN004 --> MGN008[MGN-008 Analítica]
    MGN006 --> MGN008
    MGN007 --> MGN008

    MGN003 --> MGN009[MGN-009 CRM]
    MGN007 --> MGN009

    MGN001 --> MGN010[MGN-010 RRHH]
    MGN002 --> MGN010

    MGN008 --> MGN011[MGN-011 Proyectos]
    MGN010 --> MGN011

    MGN004 --> MGN012[MGN-012 Reportes]
    MGN008 --> MGN012

    MGN001 --> MGN013[MGN-013 Portal]
    MGN007 --> MGN013
    MGN014 --> MGN013

    style MGN001 fill:#ff6b6b
    style MGN002 fill:#ff6b6b
    style MGN003 fill:#ff6b6b
    style MGN004 fill:#ff6b6b
    style MGN005 fill:#ff6b6b
    style MGN006 fill:#ff6b6b
    style MGN007 fill:#ff6b6b
    style MGN008 fill:#ff6b6b
    style MGN009 fill:#4ecdc4
    style MGN010 fill:#4ecdc4
    style MGN011 fill:#4ecdc4
    style MGN012 fill:#95e1d3
    style MGN013 fill:#4ecdc4
    style MGN014 fill:#4ecdc4
```

**Leyenda:**
- 🔴 Rojo (ff6b6b): P0 - Crítico (Fase Core)
- 🔵 Azul (4ecdc4): P1 - Alta (Fase Complementaria)
- 🟢 Verde (95e1d3): P2 - Media (Fase Complementaria)

### Módulos sin Dependencias (pueden iniciar primero)

1. **MGN-001 (Fundamentos):** No tiene dependencias, es la base de todo

### Módulos de Nivel 1 (dependen solo de MGN-001)

1. **MGN-002 (Empresas):** Depende de MGN-001
2. **MGN-003 (Catálogos):** Depende de MGN-001
3. **MGN-014 (Mensajería):** Depende de MGN-001

### Módulos de Nivel 2 (dependen de nivel 0-1)

1. **MGN-004 (Financiero):** Depende de MGN-001, MGN-002, MGN-003
2. **MGN-005 (Inventario):** Depende de MGN-001, MGN-002, MGN-003
3. **MGN-010 (RRHH):** Depende de MGN-001, MGN-002

### Módulos de Nivel 3 (dependen de nivel 0-2)

1. **MGN-006 (Compras):** Depende de MGN-004, MGN-005
2. **MGN-007 (Ventas):** Depende de MGN-004, MGN-005
3. **MGN-009 (CRM):** Depende de MGN-003, MGN-007

### Módulos de Nivel 4 (dependen de nivel 0-3)

1. **MGN-008 (Analítica):** Depende de MGN-004, MGN-006, MGN-007
2. **MGN-013 (Portal):** Depende de MGN-001, MGN-007, MGN-014

### Módulos de Nivel 5 (dependen de nivel 0-4)

1. **MGN-011 (Proyectos):** Depende de MGN-008, MGN-010
2. **MGN-012 (Reportes):** Depende de MGN-004, MGN-008

---

## Riesgos y Mitigaciones

### Riesgos Técnicos

| Riesgo | Probabilidad | Impacto | Mitigación |
|--------|--------------|---------|------------|
| **Over-engineering** (hacer genérico lo que no debe serlo) | Media | Alto | Validar con 3 proyectos reales antes de generalizar. Principio YAGNI. |
| **Complejidad de contabilidad analítica** (MGN-008) | Media | Alto | Seguir patrón Odoo (probado). Consultoría contable. |
| **Migración de datos ERP Construcción** | Alta | Medio | Scripts de migración validados. Testing exhaustivo. Rollback plan. |
| **Regresiones en ERP Construcción** | Media | Alto | Test coverage 70%+. E2E tests de flujos críticos. |

### Riesgos de Negocio

| Riesgo | Probabilidad | Impacto | Mitigación |
|--------|--------------|---------|------------|
| **Scope creep** (agregar funcionalidades no esenciales) | Alta | Medio | Definir alcance claramente en ALCANCE-POR-MODULO.md. |
| **Timeline optimista** | Media | Alto | Buffer de 10% (sprint 19). Velocity conservador (40 SP vs 50 SP). |
| **Resistencia al cambio** (equipo prefiere código específico) | Baja | Medio | Capacitación. Demos de beneficios. |
| **Break-even no alcanzado** (ROI negativo) | Baja | Alto | Validación de 71% reutilización. Presupuesto conservador. |

---

## Criterios de Éxito

### Criterios Funcionales

✅ **Los 14 módulos funcionan independientemente:**
- Cada módulo puede ser usado sin los demás (respetando dependencias)
- Deployment modular posible

✅ **Reutilización 70%+ en proyectos futuros:**
- ERP Vidrio reutiliza mínimo 70% del genérico
- ERP Mecánicas reutiliza mínimo 70% del genérico

✅ **Cobertura de funcionalidad básica ERP:**
- Contabilidad: Balance, P&L, asientos, facturas, pagos
- Inventario: Productos, stock, movimientos, valoración
- Compras: RFQ, PO, recepciones, facturas proveedor
- Ventas: Cotizaciones, SO, entregas, facturas cliente
- Analítica: P&L por proyecto

### Criterios Técnicos

✅ **Test coverage 70%+:**
- Backend: 80%
- Frontend: 70%
- E2E: 60% (flujos críticos)

✅ **Performance adecuado:**
- API response time <200ms (p95)
- Reportes <3s (p95)
- Dashboard load <1s

✅ **Seguridad robusta:**
- RBAC completo
- RLS en todos los schemas
- Auditoría automática (tracking de cambios)

✅ **Documentación completa:**
- Cada módulo con README.md
- API documentada (OpenAPI 3.0)
- Guías de usuario

---

## Próximos Pasos

1. **Definir alcance detallado:** Crear `ALCANCE-POR-MODULO.md` (qué incluye, qué no)
2. **Documentar dependencias:** Crear `DEPENDENCIAS-MODULOS.md` (orden de implementación)
3. **Diseñar database schemas:** Crear DDL de cada schema (Fase 2)
4. **Diseñar APIs:** Crear especificaciones OpenAPI (Fase 2)
5. **Diseñar componentes UI:** Crear design system (Fase 2)

---

## Referencias

**Documentos de Análisis (Fase 0):**
- [RESUMEN-FASE-0.md](../00-analisis-referencias/RESUMEN-FASE-0.md)
- [MAPEO-ODOO-TO-MGN.md](../00-analisis-referencias/odoo/MAPEO-ODOO-TO-MGN.md)
- [MAPA-COMPONENTES-GENERICOS.md](../00-analisis-referencias/MAPA-COMPONENTES-GENERICOS.md)

**ADRs Relacionadas:**
- [ADR-001: Stack Tecnológico](../adr/ADR-001-stack-tecnologico.md)
- [ADR-002: Arquitectura Modular](../adr/ADR-002-arquitectura-modular.md)
- [ADR-007: Database Design](../adr/ADR-007-database-design.md)

**Referencias Externas:**
- [Odoo Documentation](https://www.odoo.com/documentation)
- [PostgreSQL Multi-Schema Best Practices](https://www.postgresql.org/docs/15/ddl-schemas.html)

---

**Documento creado:** 2025-11-23
**Versión:** 1.0
**Autor:** Architecture-Analyst
**Estado:** ✅ Completado
**Próximo documento:** ALCANCE-POR-MODULO.md
