352 lines
16 KiB
Markdown
352 lines
16 KiB
Markdown
# 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
|