# 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:** 1. Análisis de Odoo (14 archivos) → Lógica de negocio universal 2. Análisis de Gamilit (7 archivos) → Arquitectura moderna probada 3. 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 1. Schema auth_management (10 tablas) → erp-generic/database/ddl/auth/ 2. Schema audit_logging (4 tablas) → erp-generic/database/ddl/audit/ 3. Funciones DB universales (5) → erp-generic/database/ddl/functions/ 4. Módulo backend auth completo → erp-generic/backend/src/modules/auth/ 5. 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 1. Tablas: companies, partners, currencies, countries, uom (11 tablas) 2. Schema financial (12 tablas) 3. Módulos backend: companies, catalogs 4. Componentes UI adicionales (11) **Esfuerzo:** 2 semanas **Prioridad:** P0 ### Fase 2 (Semana 5-6): Módulos de Negocio Básicos 1. Schema purchasing (7 tablas) 2. Módulos backend: notifications, files 3. Resto de componentes UI (10) 4. 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 1. **61% de componentes son genéricos:** 112 de 183 componentes pueden reutilizarse 2. **71% reutilización promedio en proyectos futuros:** Vidrio y Mecánicas 3. **49% reducción de código total:** Eliminación de duplicación 4. **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