erp-core/docs/01-analisis-referencias/MAPA-COMPONENTES-GENERICOS.md

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:

  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