16 KiB
MAPA DE COMPONENTES GENÉRICOS VS ESPECÍFICOS
Documento: Mapa Consolidado de Componentes Fecha: 2025-11-23 Analista: Architecture-Analyst Estado: Completado
Introducción
Este documento consolida el mapeo completo de componentes genéricos vs específicos, resultado del análisis de Fase 0.
Metodología:
- Análisis de Odoo (14 archivos) → Lógica de negocio universal
- Análisis de Gamilit (7 archivos) → Arquitectura moderna probada
- Validación con ERP Construcción → Identificación de genéricos vs específicos
1. COMPONENTES DE BASE DE DATOS
1.1 Genéricos (van en ERP Genérico)
| Componente | Tipo | Ubicación Destino | Usado por Proyectos | Prioridad |
|---|---|---|---|---|
| auth_management (schema) | Schema | erp-generic/database/ddl/auth/ | Construcción, Vidrio, Mecánicas | P0 |
| auth.users | Table | auth/tables/users.sql | Todos | P0 |
| auth.roles | Table | auth/tables/roles.sql | Todos | P0 |
| auth.permissions | Table | auth/tables/permissions.sql | Todos | P0 |
| auth.sessions | Table | auth/tables/sessions.sql | Todos | P0 |
| audit_logging (schema) | Schema | erp-generic/database/ddl/audit/ | Todos | P0 |
| audit.logs | Table | audit/tables/logs.sql | Todos | P0 |
| core_system (schema) | Schema | erp-generic/database/ddl/core/ | Todos | P0 |
| core.companies | Table | core/tables/companies.sql | Todos | P0 |
| core.partners | Table | core/tables/partners.sql | Todos | P0 |
| core.currencies | Table | core/tables/currencies.sql | Todos | P0 |
| core.countries | Table | core/tables/countries.sql | Todos | P0 |
| core.uom | Table | core/tables/uom.sql | Todos | P0 |
| financial (schema) | Schema | erp-generic/database/ddl/financial/ | Todos | P0 |
| financial.accounts | Table | financial/tables/accounts.sql | Todos | P0 |
| financial.journal_entries | Table | financial/tables/journal_entries.sql | Todos | P0 |
| financial.payments | Table | financial/tables/payments.sql | Todos | P0 |
| purchasing (schema) | Schema | erp-generic/database/ddl/purchasing/ | Todos | P0 |
| purchasing.orders | Table | purchasing/tables/orders.sql | Todos | P0 |
| inventory (schema) | Schema | erp-generic/database/ddl/inventory/ | Construcción, Vidrio, Mecánicas | P0 |
| inventory.warehouses | Table | inventory/tables/warehouses.sql | Construcción, Vidrio, Mecánicas | P0 |
| inventory.products | Table | inventory/tables/products.sql | Todos | P0 |
Total Schemas Genéricos: 6 (auth, audit, core, financial, purchasing, inventory)
Total Tablas Genéricas: 44 tablas
1.2 Específicos de Construcción
| Componente | Tipo | Ubicación | Razón Específica |
|---|---|---|---|
| project_management | Schema | erp-construccion/database/ddl/project_management/ | Manzanas, lotes, prototipos INFONAVIT |
| projects.blocks | Table | project_management/tables/blocks.sql | Concepto único urbanización |
| projects.lots | Table | project_management/tables/lots.sql | Lotes con escrituración |
| projects.housing_prototypes | Table | project_management/tables/housing_prototypes.sql | Modelos de vivienda |
| construction_management | Schema | erp-construccion/database/ddl/construction_management/ | Control de obra específico |
| construction.physical_progress | Table | construction_management/tables/physical_progress.sql | Avances físicos construcción |
| construction.work_schedules | Table | construction_management/tables/work_schedules.sql | Curva S, ruta crítica |
| infonavit_management | Schema | erp-construccion/database/ddl/infonavit_management/ | INFONAVIT México |
| infonavit.beneficiaries | Table | infonavit_management/tables/beneficiaries.sql | Derechohabientes INFONAVIT |
| infonavit.credits | Table | infonavit_management/tables/credits.sql | Créditos INFONAVIT |
Total Schemas Específicos: 4
Total Tablas Específicas: 30
2. COMPONENTES DE BACKEND
2.1 Genéricos
| Módulo/Servicio | Ubicación Destino | Usado por Proyectos | Prioridad |
|---|---|---|---|
| auth module | erp-generic/backend/src/modules/auth/ | Todos | P0 |
| users module | erp-generic/backend/src/modules/users/ | Todos | P0 |
| roles module | erp-generic/backend/src/modules/roles/ | Todos | P0 |
| companies module | erp-generic/backend/src/modules/companies/ | Todos | P0 |
| catalogs module | erp-generic/backend/src/modules/catalogs/ | Todos | P0 |
| audit module | erp-generic/backend/src/modules/audit/ | Todos | P0 |
| notifications module | erp-generic/backend/src/modules/notifications/ | Todos | P0 |
| files module | erp-generic/backend/src/modules/files/ | Todos | P1 |
| DatabaseService | erp-generic/backend/src/shared/services/database.service.ts | Todos | P0 |
| CryptoService | erp-generic/backend/src/shared/services/crypto.service.ts | Todos | P0 |
| EmailService | erp-generic/backend/src/shared/services/email.service.ts | Todos | P0 |
| authMiddleware | erp-generic/backend/src/shared/middleware/auth.middleware.ts | Todos | P0 |
| rbacMiddleware | erp-generic/backend/src/shared/middleware/rbac.middleware.ts | Todos | P0 |
Total Módulos Backend Genéricos: 8
Total Servicios Compartidos: 7
Total Middleware: 7
2.2 Específicos de Construcción
| Módulo/Servicio | Ubicación | Razón Específica |
|---|---|---|
| projects module | erp-construccion/backend/src/modules/projects/ | Lógica fraccionamientos |
| budgets module | erp-construccion/backend/src/modules/budgets/ | APUs construcción |
| construction module | erp-construccion/backend/src/modules/construction/ | Control de obra |
| estimates module | erp-construccion/backend/src/modules/estimates/ | Estimaciones de obra |
| infonavit module | erp-construccion/backend/src/modules/infonavit/ | Integración INFONAVIT |
| CurvaSCalculator | erp-construccion/backend/src/services/curva-s.service.ts | Algoritmo específico |
| APUCalculator | erp-construccion/backend/src/services/apu.service.ts | Explosión de insumos |
Total Módulos Backend Específicos: 8
Total Servicios Específicos: 5
3. COMPONENTES DE FRONTEND
3.1 Genéricos
| Componente | Tipo | Ubicación Destino | Usado por Proyectos | Prioridad |
|---|---|---|---|---|
| Button | Átomo | erp-generic/frontend/src/shared/components/atoms/Button.tsx | Todos | P0 |
| Input | Átomo | erp-generic/frontend/src/shared/components/atoms/Input.tsx | Todos | P0 |
| Select | Átomo | erp-generic/frontend/src/shared/components/atoms/Select.tsx | Todos | P0 |
| DatePicker | Átomo | erp-generic/frontend/src/shared/components/atoms/DatePicker.tsx | Todos | P0 |
| FormField | Molécula | erp-generic/frontend/src/shared/components/molecules/FormField.tsx | Todos | P0 |
| SearchBar | Molécula | erp-generic/frontend/src/shared/components/molecules/SearchBar.tsx | Todos | P0 |
| Modal | Molécula | erp-generic/frontend/src/shared/components/molecules/Modal.tsx | Todos | P0 |
| Alert | Molécula | erp-generic/frontend/src/shared/components/molecules/Alert.tsx | Todos | P0 |
| DataTable | Organismo | erp-generic/frontend/src/shared/components/organisms/DataTable.tsx | Todos | P0 |
| Form | Organismo | erp-generic/frontend/src/shared/components/organisms/Form.tsx | Todos | P0 |
| Sidebar | Organismo | erp-generic/frontend/src/shared/components/organisms/Sidebar.tsx | Todos | P0 |
| Navbar | Organismo | erp-generic/frontend/src/shared/components/organisms/Navbar.tsx | Todos | P0 |
| DashboardLayout | Template | erp-generic/frontend/src/shared/components/templates/DashboardLayout.tsx | Todos | P0 |
| AuthLayout | Template | erp-generic/frontend/src/shared/components/templates/AuthLayout.tsx | Todos | P0 |
| useAuth | Hook | erp-generic/frontend/src/shared/hooks/useAuth.ts | Todos | P0 |
| usePermissions | Hook | erp-generic/frontend/src/shared/hooks/usePermissions.ts | Todos | P0 |
| useAuthStore | Store | erp-generic/frontend/src/stores/auth.store.ts | Todos | P0 |
| useCompanyStore | Store | erp-generic/frontend/src/stores/company.store.ts | Todos | P0 |
Total Componentes UI Genéricos: 31
Total Hooks Genéricos: 10
Total Stores Genéricos: 6
3.2 Específicos de Construcción
| Componente | Tipo | Ubicación | Razón Específica |
|---|---|---|---|
| LotSelector | Organismo | erp-construccion/frontend/src/components/LotSelector.tsx | Visualización plano manzana |
| CurvaSChart | Organismo | erp-construccion/frontend/src/components/CurvaSChart.tsx | Gráfica curva S |
| ProgressTracker | Organismo | erp-construccion/frontend/src/components/ProgressTracker.tsx | UI % avances construcción |
| EstimateForm | Organismo | erp-construccion/frontend/src/components/EstimateForm.tsx | Formulario generadores |
| INFONAVITForm | Organismo | erp-construccion/frontend/src/components/INFONAVITForm.tsx | Formulario INFONAVIT |
| projects feature | Feature | erp-construccion/frontend/src/features/projects/ | UI fraccionamientos |
| construction feature | Feature | erp-construccion/frontend/src/features/construction/ | UI control de obra |
Total Componentes UI Específicos: 7
Total Features Específicas: 6
4. RESUMEN CUANTITATIVO
| Categoría | Genéricos | Específicos Construcción | Específicos Vidrio | Específicos Mecánicas | % Reutilización |
|---|---|---|---|---|---|
| Schemas DB | 6 | 4 | 2 | 1 | 60% |
| Tablas DB | 44 | 30 | 18 | 12 | 59% |
| Módulos Backend | 8 | 8 | 5 | 4 | 53% |
| Servicios Backend | 7 | 5 | 3 | 2 | 58% |
| Componentes UI | 31 | 7 | 5 | 4 | 72% |
| Hooks Frontend | 10 | 3 | 2 | 1 | 77% |
| Stores Frontend | 6 | 4 | 3 | 2 | 60% |
| TOTAL | 112 | 61 | 38 | 26 | 61% |
5. ANÁLISIS DE REUTILIZACIÓN POR PROYECTO
5.1 ERP Construcción
- Componentes genéricos utilizados: 112 (61%)
- Componentes específicos construcción: 61 (33%)
- Componentes adaptables: 10 (6%)
- Total componentes: 183
Ahorro: Baseline (0% - es el proyecto fuente)
5.2 ERP Vidrio (Estimado)
- Componentes genéricos a reutilizar: 105 (94% de genéricos)
- Componentes de construcción adaptables: 8 (calendarios, reportes)
- Componentes específicos vidrio nuevos: 38
- Total componentes estimado: 151
Ahorro: 70% reutilización = ~30% reducción desarrollo
5.3 ERP Mecánicas (Estimado)
- Componentes genéricos a reutilizar: 109 (97% de genéricos)
- Componentes de construcción adaptables: 3 (proyectos base)
- Componentes específicos mecánicas nuevos: 26
- Total componentes estimado: 138
Ahorro: 81% reutilización = ~42% reducción desarrollo
5.4 Resumen de Reutilización
| Proyecto | Reutilización ERP Genérico | Componentes Específicos | Ahorro Desarrollo | Timeline Estimado |
|---|---|---|---|---|
| ERP Construcción | 61% | 33% | 0% (baseline) | 18 meses (baseline) |
| ERP Vidrio | 70% | 25% | ~30% | 12-13 meses |
| ERP Mecánicas | 81% | 19% | ~42% | 10-11 meses |
| Promedio | 71% | 26% | 36% | 13 meses |
6. COMPONENTES P0 (CRÍTICOS PARA TODOS LOS PROYECTOS)
Database (20 componentes P0)
- auth_management schema completo (10 tablas)
- audit_logging schema completo (4 tablas)
- core.companies, core.partners, core.currencies, core.countries, core.uom
- Funciones: update_updated_at_column(), get_current_user_id(), get_current_tenant_id()
Backend (15 componentes P0)
- Módulos: auth, users, roles, companies, audit
- Servicios: DatabaseService, CryptoService, EmailService, LoggerService
- Middleware: authMiddleware, rbacMiddleware, validationMiddleware, errorMiddleware
- Decorators: @Public(), @Roles(), @CurrentUser()
Frontend (20 componentes P0)
- Átomos: Button, Input, Select, DatePicker
- Moléculas: FormField, SearchBar, Modal, Alert
- Organismos: DataTable, Form, Sidebar, Navbar
- Templates: DashboardLayout, AuthLayout
- Hooks: useAuth, usePermissions
- Stores: useAuthStore, useCompanyStore
Total P0: 55 componentes críticos que DEBEN estar en ERP Genérico
7. ROADMAP DE MIGRACIÓN
Fase 0 (Semana 1-2): Infraestructura Crítica
- Schema auth_management (10 tablas) → erp-generic/database/ddl/auth/
- Schema audit_logging (4 tablas) → erp-generic/database/ddl/audit/
- Funciones DB universales (5) → erp-generic/database/ddl/functions/
- Módulo backend auth completo → erp-generic/backend/src/modules/auth/
- Componentes UI críticos (10) → erp-generic/frontend/src/shared/components/
Esfuerzo: 2 semanas
Prioridad: P0
Fase 1 (Semana 3-4): Catálogos y Core
- Tablas: companies, partners, currencies, countries, uom (11 tablas)
- Schema financial (12 tablas)
- Módulos backend: companies, catalogs
- Componentes UI adicionales (11)
Esfuerzo: 2 semanas
Prioridad: P0
Fase 2 (Semana 5-6): Módulos de Negocio Básicos
- Schema purchasing (7 tablas)
- Módulos backend: notifications, files
- Resto de componentes UI (10)
- Hooks y Stores
Esfuerzo: 2 semanas
Prioridad: P0-P1
Total Migración Inicial: 6 semanas
8. BENEFICIOS CUANTIFICADOS
Eliminación de Duplicación
Sin ERP Genérico:
- Construcción: 183 componentes
- Vidrio: ~150 componentes (70% duplicados)
- Mecánicas: ~135 componentes (75% duplicados)
- Total: 468 componentes (250 duplicados)
Con ERP Genérico:
- ERP Genérico: 112 componentes (shared)
- Construcción específico: 61 componentes
- Vidrio específico: 38 componentes
- Mecánicas específico: 26 componentes
- Total: 237 componentes (0 duplicados)
Reducción: 468 → 237 componentes (49% menos código)
Ahorro en Mantenimiento
- Bugs fixeados 1 vez benefician a 3+ proyectos
- Mejoras de seguridad compartidas
- Actualizaciones de dependencias centralizadas
Ahorro estimado: 40% tiempo de mantenimiento
Aceleración de Desarrollo
| Proyecto | Sin Genérico | Con Genérico | Ahorro |
|---|---|---|---|
| Construcción | 18 meses | 18 meses | 0% (baseline) |
| Vidrio | 18 meses | 12-13 meses | ~30% |
| Mecánicas | 18 meses | 10-11 meses | ~42% |
Ahorro promedio: 36% en desarrollo de nuevos proyectos
9. CONCLUSIONES
9.1 Hallazgos Principales
- 61% de componentes son genéricos: 112 de 183 componentes pueden reutilizarse
- 71% reutilización promedio en proyectos futuros: Vidrio y Mecánicas
- 49% reducción de código total: Eliminación de duplicación
- 36% aceleración en desarrollo: Proyectos futuros más rápidos
9.2 Validación de la Decisión
✅ Crear ERP Genérico es económicamente viable:
- Inversión inicial: 6 semanas migración
- ROI: Break-even en proyecto 2 (ERP Vidrio)
- Beneficio acumulado: 36% ahorro promedio
✅ Beneficios adicionales:
- Consistencia UI/UX entre proyectos
- Mantenibilidad mejorada
- Onboarding más rápido (componentes conocidos)
- Calidad superior (componentes probados)
9.3 Recomendación Final
PROCEDER CON LA CREACIÓN DEL ERP GENÉRICO según el roadmap de migración de 6 semanas propuesto.
Fecha: 2025-11-23
Versión: 1.0
Estado: Completado
Próximo Documento: RESUMEN-FASE-0.md