# 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
