490 lines
25 KiB
Markdown
490 lines
25 KiB
Markdown
# Componentes Genéricos Identificados en ERP Construcción
|
|
|
|
**Documento:** Análisis de Componentes Genéricos
|
|
**Proyecto Fuente:** ERP Construcción
|
|
**Proyecto Destino:** ERP Genérico
|
|
**Fecha:** 2025-11-23
|
|
**Analista:** Architecture-Analyst
|
|
**Estado:** Completado
|
|
|
|
---
|
|
|
|
## Introducción
|
|
|
|
Este documento identifica y cataloga todos los componentes del ERP Construcción que son **genéricos** y deben migrarse al ERP Genérico para ser reutilizados por otros proyectos (ERP Vidrio, ERP Mecánicas, etc.).
|
|
|
|
### Criterios para Considerar un Componente Genérico
|
|
|
|
Un componente se considera genérico si cumple **al menos 2 de los siguientes criterios**:
|
|
|
|
1. **Aplicabilidad Universal:** Puede usarse en cualquier industria sin cambios significativos
|
|
2. **Lógica de Negocio Independiente:** No contiene lógica específica de construcción
|
|
3. **Patrón Estándar:** Implementa un patrón común en ERPs (autenticación, RBAC, catálogos, etc.)
|
|
4. **Reutilización Probable:** Al menos 2 proyectos específicos lo necesitarían
|
|
5. **Configurabilidad:** Puede adaptarse mediante configuración sin cambiar código
|
|
|
|
---
|
|
|
|
## 1. COMPONENTES DE BASE DE DATOS
|
|
|
|
### 1.1 Schemas Genéricos
|
|
|
|
| Schema | Ubicación Actual | Descripción | Mapeo a MGN | Prioridad | Reutilización |
|
|
|--------|------------------|-------------|-------------|-----------|---------------|
|
|
| `auth_management` | construccion/apps/database/ddl/ | Autenticación, usuarios, roles, permisos | MGN-001 (Core/Auth) | P0 | 100% |
|
|
| `audit_logging` | construccion/apps/database/ddl/ | Auditoría de cambios, bitácora de eventos | MGN-001 (Core/Audit) | P0 | 100% |
|
|
| `financial_management` | construccion/apps/database/ddl/ | Cuentas contables, asientos, pagos | MGN-004 (Financiero) | P0 | 95% |
|
|
| `purchasing_management` | construccion/apps/database/ddl/ | Compras, órdenes, proveedores | MGN-006 (Compras) | P0 | 90% |
|
|
|
|
**Total Schemas Genéricos:** 4 de 7 (57%)
|
|
|
|
### 1.2 Tablas Genéricas por Schema
|
|
|
|
#### Schema: auth_management (100% genérico)
|
|
|
|
| Tabla | Descripción | Justificación Genérica | MGN Mapping | Prioridad |
|
|
|-------|-------------|------------------------|-------------|-----------|
|
|
| `tenants` | Tenants para multi-tenancy | Todos los ERPs necesitan multi-tenancy | `core.companies` | P0 |
|
|
| `users` | Usuarios del sistema | Usuario es concepto universal | `auth.users` | P0 |
|
|
| `profiles` | Perfiles de usuario | Perfiles personalizables para cualquier industria | `auth.profiles` | P0 |
|
|
| `roles` | Roles del sistema | RBAC es patrón universal | `auth.roles` | P0 |
|
|
| `user_roles` | Asignación usuario-rol | Relación M2M estándar | `auth.user_roles` | P0 |
|
|
| `permissions` | Permisos granulares | Sistema de permisos universal | `auth.permissions` | P0 |
|
|
| `role_permissions` | Asignación rol-permiso | Relación M2M estándar | `auth.role_permissions` | P0 |
|
|
| `auth_providers` | Proveedores OAuth (Google, etc.) | OAuth es estándar | `auth.providers` | P1 |
|
|
| `password_resets` | Tokens de reset de contraseña | Funcionalidad estándar | `auth.password_resets` | P0 |
|
|
| `sessions` | Sesiones activas | Gestión de sesiones universal | `auth.sessions` | P0 |
|
|
|
|
**Subtotal:** 10 tablas (100% genéricas)
|
|
|
|
#### Schema: audit_logging (100% genérico)
|
|
|
|
| Tabla | Descripción | Justificación Genérica | MGN Mapping | Prioridad |
|
|
|-------|-------------|------------------------|-------------|-----------|
|
|
| `audit_logs` | Registro de cambios | Auditoría es universal | `audit.logs` | P0 |
|
|
| `activity_logs` | Actividades de usuarios | Tracking de actividades universal | `audit.activities` | P0 |
|
|
| `login_history` | Historial de logins | Seguridad estándar | `audit.login_history` | P0 |
|
|
| `api_logs` | Logs de llamadas API | Monitoreo de API universal | `audit.api_logs` | P1 |
|
|
|
|
**Subtotal:** 4 tablas (100% genéricas)
|
|
|
|
#### Schema: financial_management (90% genérico)
|
|
|
|
| Tabla | Descripción | Justificación Genérica | MGN Mapping | Prioridad |
|
|
|-------|-------------|------------------------|-------------|-----------|
|
|
| `chart_of_accounts` | Plan de cuentas contables | Contabilidad universal | `financial.accounts` | P0 |
|
|
| `account_types` | Tipos de cuenta (Activo, Pasivo, etc.) | Clasificación contable estándar | `financial.account_types` | P0 |
|
|
| `journal_entries` | Asientos contables | Doble partida universal | `financial.journal_entries` | P0 |
|
|
| `journal_entry_lines` | Líneas de asientos | Detalle de asientos universal | `financial.journal_entry_lines` | P0 |
|
|
| `journals` | Diarios contables | Contabilidad estándar | `financial.journals` | P0 |
|
|
| `currencies` | Monedas (ISO 4217) | Catálogo universal | `core.currencies` | P0 |
|
|
| `exchange_rates` | Tasas de cambio | Multi-moneda universal | `financial.exchange_rates` | P0 |
|
|
| `fiscal_years` | Ejercicios fiscales | Periodos contables universales | `financial.fiscal_years` | P0 |
|
|
| `fiscal_periods` | Periodos fiscales (mensual) | Cierre de periodos universal | `financial.fiscal_periods` | P0 |
|
|
| `payments` | Pagos | Pagos universales | `financial.payments` | P0 |
|
|
| `payment_methods` | Métodos de pago | Catálogo universal | `financial.payment_methods` | P0 |
|
|
| `bank_accounts` | Cuentas bancarias | Gestión bancaria universal | `financial.bank_accounts` | P0 |
|
|
|
|
**Subtotal:** 12 tablas (90% genéricas - 1 tabla específica construcción)
|
|
|
|
#### Schema: purchasing_management (85% genérico)
|
|
|
|
| Tabla | Descripción | Justificación Genérica | MGN Mapping | Prioridad |
|
|
|-------|-------------|------------------------|-------------|-----------|
|
|
| `suppliers` | Proveedores | Proveedores universales (adaptado de partners) | `core.partners` (is_supplier) | P0 |
|
|
| `supplier_contacts` | Contactos de proveedores | Gestión de contactos universal | `core.partner_contacts` | P0 |
|
|
| `purchase_requisitions` | Requisiciones de compra | Workflow de compras estándar | `purchase.requisitions` | P0 |
|
|
| `purchase_orders` | Órdenes de compra | Documento de compra universal | `purchase.orders` | P0 |
|
|
| `purchase_order_lines` | Líneas de OC | Detalle de OC universal | `purchase.order_lines` | P0 |
|
|
| `rfq` | Solicitudes de cotización | RFQ es patrón estándar | `purchase.rfq` | P1 |
|
|
| `quotations` | Cotizaciones de proveedores | Comparación de cotizaciones universal | `purchase.quotations` | P1 |
|
|
|
|
**Subtotal:** 7 tablas (85% genéricas)
|
|
|
|
#### Tablas Adicionales Genéricas (Sin Schema Definido en Construcción)
|
|
|
|
| Tabla | Schema Recomendado | Descripción | Justificación | MGN Mapping | Prioridad |
|
|
|-------|-------------------|-------------|---------------|-------------|-----------|
|
|
| `companies` | core_system | Empresas del grupo/holdings | Multi-company universal | `core.companies` | P0 |
|
|
| `partners` | core_system | Clientes, proveedores, contactos universales | Patrón Odoo universal | `core.partners` | P0 |
|
|
| `countries` | core_system | Catálogo de países (ISO 3166) | Catálogo universal | `core.countries` | P0 |
|
|
| `states` | core_system | Estados/provincias | Catálogo universal | `core.states` | P0 |
|
|
| `cities` | core_system | Ciudades | Catálogo universal | `core.cities` | P1 |
|
|
| `units_of_measure` | core_system | Unidades de medida + conversiones | UoM universal | `core.uom` | P0 |
|
|
| `uom_categories` | core_system | Categorías de UoM | UoM universal | `core.uom_categories` | P0 |
|
|
| `products` | inventory | Productos/servicios (genéricos) | Productos base universales | `inventory.products` | P0 |
|
|
| `product_categories` | inventory | Categorías de productos | Clasificación universal | `inventory.product_categories` | P0 |
|
|
| `warehouses` | inventory | Almacenes | Gestión de almacenes universal | `inventory.warehouses` | P0 |
|
|
| `locations` | inventory | Ubicaciones en almacén | Jerarquía de ubicaciones universal | `inventory.locations` | P0 |
|
|
|
|
**Subtotal:** 11 tablas adicionales genéricas (no implementadas en construcción, pero necesarias en genérico)
|
|
|
|
### 1.3 Funciones PL/pgSQL Genéricas
|
|
|
|
| Función | Ubicación | Descripción | Justificación | Prioridad |
|
|
|---------|-----------|-------------|---------------|-----------|
|
|
| `update_updated_at_column()` | public | Trigger function para updated_at | Función universal | P0 |
|
|
| `get_current_user_id()` | auth_management | Obtener user_id del contexto | RLS universal | P0 |
|
|
| `get_current_tenant_id()` | auth_management | Obtener tenant_id del contexto | Multi-tenancy universal | P0 |
|
|
| `check_permission()` | auth_management | Verificar permiso de usuario | RBAC universal | P0 |
|
|
| `calculate_account_balance()` | financial_management | Calcular balance de cuenta | Contabilidad universal | P0 |
|
|
|
|
**Total:** 5 funciones genéricas
|
|
|
|
### 1.4 Triggers Genéricos
|
|
|
|
| Trigger | Tabla | Descripción | Justificación | Prioridad |
|
|
|---------|-------|-------------|---------------|-----------|
|
|
| `trg_*_updated_at` | TODAS | Actualizar updated_at automáticamente | Patrón universal | P0 |
|
|
| `trg_audit_*_changes` | Tablas críticas | Auditoría automática de cambios | Seguridad universal | P0 |
|
|
| `trg_validate_*_status` | Tablas con estados | Validar transiciones de estado | Business rules universales | P1 |
|
|
|
|
**Total:** 3 patrones de triggers genéricos
|
|
|
|
### 1.5 ENUMs Genéricos
|
|
|
|
| ENUM | Ubicación | Valores | Justificación | Prioridad |
|
|
|------|-----------|---------|---------------|-----------|
|
|
| `account_status` | auth_management | active, suspended, banned, pending | Estados de usuario universales | P0 |
|
|
| `auth_provider` | auth_management | local, google, facebook, microsoft | OAuth universal | P1 |
|
|
| `permission_action` | auth_management | create, read, update, delete, approve | CRUD universal | P0 |
|
|
| `payment_method_type` | financial_management | cash, check, transfer, card, other | Métodos de pago universales | P0 |
|
|
| `document_status` | global | draft, pending_approval, approved, rejected, cancelled | Workflow universal | P0 |
|
|
|
|
**Total:** 5 ENUMs genéricos (10+ necesarios en total)
|
|
|
|
---
|
|
|
|
## 2. COMPONENTES DE BACKEND
|
|
|
|
### 2.1 Módulos Backend Genéricos
|
|
|
|
| Módulo | Ubicación Actual | Descripción | Reutilización | MGN Mapping | Prioridad |
|
|
|--------|------------------|-------------|---------------|-------------|-----------|
|
|
| `auth` | backend/src/modules/auth/ | Autenticación JWT, login, register, reset password | 100% | MGN-001 (Auth) | P0 |
|
|
| `users` | backend/src/modules/users/ | Gestión de usuarios, perfiles, preferencias | 95% | MGN-001 (Users) | P0 |
|
|
| `roles` | backend/src/modules/roles/ | Gestión de roles y permisos (RBAC) | 100% | MGN-001 (RBAC) | P0 |
|
|
| `companies` | backend/src/modules/companies/ | Gestión de empresas/tenants | 100% | MGN-002 (Companies) | P0 |
|
|
| `audit` | backend/src/modules/audit/ | Logs de auditoría, tracking de cambios | 100% | MGN-001 (Audit) | P0 |
|
|
| `notifications` | backend/src/modules/notifications/ | Sistema de notificaciones | 95% | MGN-014 (Notifications) | P0 |
|
|
| `files` | backend/src/modules/files/ | Upload/download de archivos | 95% | MGN-013 (Files) | P1 |
|
|
| `catalogs` | backend/src/modules/catalogs/ | Catálogos maestros (countries, currencies, uom) | 100% | MGN-003 (Catalogs) | P0 |
|
|
|
|
**Total:** 8 módulos backend genéricos (de ~13 módulos totales = 62%)
|
|
|
|
### 2.2 Servicios Compartidos (Shared Services)
|
|
|
|
| Servicio | Archivo | Descripción | Reutilización | Prioridad |
|
|
|----------|---------|-------------|---------------|-----------|
|
|
| `DatabaseService` | shared/services/database.service.ts | Pool de conexiones, queries base | 100% | P0 |
|
|
| `CryptoService` | shared/services/crypto.service.ts | Hashing, encryption, JWT | 100% | P0 |
|
|
| `EmailService` | shared/services/email.service.ts | Envío de emails (templates) | 100% | P0 |
|
|
| `StorageService` | shared/services/storage.service.ts | Gestión de archivos (S3/local) | 100% | P0 |
|
|
| `LoggerService` | shared/services/logger.service.ts | Logging estructurado (Winston) | 100% | P0 |
|
|
| `CacheService` | shared/services/cache.service.ts | Redis caching | 100% | P1 |
|
|
| `ValidationService` | shared/services/validation.service.ts | Validación de datos (Zod) | 100% | P0 |
|
|
|
|
**Total:** 7 servicios compartidos genéricos
|
|
|
|
### 2.3 Middleware Genéricos
|
|
|
|
| Middleware | Archivo | Descripción | Reutilización | Prioridad |
|
|
|------------|---------|-------------|---------------|-----------|
|
|
| `authMiddleware` | shared/middleware/auth.middleware.ts | Verificación de JWT | 100% | P0 |
|
|
| `rbacMiddleware` | shared/middleware/rbac.middleware.ts | Verificación de permisos | 100% | P0 |
|
|
| `validationMiddleware` | shared/middleware/validation.middleware.ts | Validación de request body | 100% | P0 |
|
|
| `errorMiddleware` | shared/middleware/error.middleware.ts | Error handling centralizado | 100% | P0 |
|
|
| `loggingMiddleware` | shared/middleware/logging.middleware.ts | Request/response logging | 100% | P0 |
|
|
| `rateLimitMiddleware` | shared/middleware/rate-limit.middleware.ts | Rate limiting | 100% | P1 |
|
|
| `corsMiddleware` | shared/middleware/cors.middleware.ts | CORS configuration | 100% | P0 |
|
|
|
|
**Total:** 7 middleware genéricos
|
|
|
|
### 2.4 Guards y Decorators
|
|
|
|
| Guard/Decorator | Archivo | Descripción | Reutilización | Prioridad |
|
|
|-----------------|---------|-------------|---------------|-----------|
|
|
| `@Public()` | shared/decorators/public.decorator.ts | Marcar endpoint público | 100% | P0 |
|
|
| `@Roles()` | shared/decorators/roles.decorator.ts | Especificar roles requeridos | 100% | P0 |
|
|
| `@Permissions()` | shared/decorators/permissions.decorator.ts | Especificar permisos | 100% | P0 |
|
|
| `@CurrentUser()` | shared/decorators/current-user.decorator.ts | Inyectar usuario actual | 100% | P0 |
|
|
| `@Tenant()` | shared/decorators/tenant.decorator.ts | Inyectar tenant actual | 100% | P0 |
|
|
|
|
**Total:** 5 decorators genéricos
|
|
|
|
---
|
|
|
|
## 3. COMPONENTES DE FRONTEND
|
|
|
|
### 3.1 Shared Components (Componentes UI Reutilizables)
|
|
|
|
#### Átomos (Atomic Design)
|
|
|
|
| Componente | Archivo | Descripción | Reutilización | Prioridad |
|
|
|------------|---------|-------------|---------------|-----------|
|
|
| `Button` | shared/components/atoms/Button.tsx | Botón con variantes | 100% | P0 |
|
|
| `Input` | shared/components/atoms/Input.tsx | Input text con validación | 100% | P0 |
|
|
| `Select` | shared/components/atoms/Select.tsx | Select dropdown | 100% | P0 |
|
|
| `Checkbox` | shared/components/atoms/Checkbox.tsx | Checkbox | 100% | P0 |
|
|
| `Radio` | shared/components/atoms/Radio.tsx | Radio button | 100% | P0 |
|
|
| `DatePicker` | shared/components/atoms/DatePicker.tsx | Selector de fecha | 100% | P0 |
|
|
| `Icon` | shared/components/atoms/Icon.tsx | Iconos SVG | 100% | P0 |
|
|
| `Badge` | shared/components/atoms/Badge.tsx | Badge de estado | 100% | P0 |
|
|
| `Avatar` | shared/components/atoms/Avatar.tsx | Avatar de usuario | 100% | P0 |
|
|
| `Spinner` | shared/components/atoms/Spinner.tsx | Loading spinner | 100% | P0 |
|
|
|
|
**Subtotal:** 10 átomos genéricos
|
|
|
|
#### Moléculas
|
|
|
|
| Componente | Archivo | Descripción | Reutilización | Prioridad |
|
|
|------------|---------|-------------|---------------|-----------|
|
|
| `FormField` | shared/components/molecules/FormField.tsx | Label + Input + Error | 100% | P0 |
|
|
| `SearchBar` | shared/components/molecules/SearchBar.tsx | Barra de búsqueda | 100% | P0 |
|
|
| `Pagination` | shared/components/molecules/Pagination.tsx | Paginación de tablas | 100% | P0 |
|
|
| `Alert` | shared/components/molecules/Alert.tsx | Alertas/notificaciones | 100% | P0 |
|
|
| `Card` | shared/components/molecules/Card.tsx | Tarjeta de contenido | 100% | P0 |
|
|
| `Modal` | shared/components/molecules/Modal.tsx | Modal dialog | 100% | P0 |
|
|
| `Dropdown` | shared/components/molecules/Dropdown.tsx | Dropdown menu | 100% | P0 |
|
|
| `Tabs` | shared/components/molecules/Tabs.tsx | Pestañas | 100% | P0 |
|
|
| `Breadcrumb` | shared/components/molecules/Breadcrumb.tsx | Migas de pan | 100% | P0 |
|
|
| `Tooltip` | shared/components/molecules/Tooltip.tsx | Tooltip | 100% | P0 |
|
|
|
|
**Subtotal:** 10 moléculas genéricas
|
|
|
|
#### Organismos
|
|
|
|
| Componente | Archivo | Descripción | Reutilización | Prioridad |
|
|
|------------|---------|-------------|---------------|-----------|
|
|
| `DataTable` | shared/components/organisms/DataTable.tsx | Tabla con sorting, filtering, pagination | 100% | P0 |
|
|
| `Form` | shared/components/organisms/Form.tsx | Formulario con validación Zod | 100% | P0 |
|
|
| `Sidebar` | shared/components/organisms/Sidebar.tsx | Sidebar de navegación | 100% | P0 |
|
|
| `Navbar` | shared/components/organisms/Navbar.tsx | Navbar superior | 100% | P0 |
|
|
| `DashboardWidget` | shared/components/organisms/DashboardWidget.tsx | Widget de dashboard | 95% | P0 |
|
|
| `UserMenu` | shared/components/organisms/UserMenu.tsx | Menú de usuario | 100% | P0 |
|
|
| `FileUploader` | shared/components/organisms/FileUploader.tsx | Upload de archivos | 100% | P1 |
|
|
| `Calendar` | shared/components/organisms/Calendar.tsx | Calendario | 100% | P1 |
|
|
|
|
**Subtotal:** 8 organismos genéricos
|
|
|
|
#### Templates
|
|
|
|
| Componente | Archivo | Descripción | Reutilización | Prioridad |
|
|
|------------|---------|-------------|---------------|-----------|
|
|
| `DashboardLayout` | shared/components/templates/DashboardLayout.tsx | Layout principal con sidebar | 100% | P0 |
|
|
| `AuthLayout` | shared/components/templates/AuthLayout.tsx | Layout para login/register | 100% | P0 |
|
|
| `EmptyLayout` | shared/components/templates/EmptyLayout.tsx | Layout vacío | 100% | P0 |
|
|
|
|
**Subtotal:** 3 templates genéricos
|
|
|
|
**Total Componentes UI:** 31 componentes genéricos
|
|
|
|
### 3.2 Hooks Personalizados
|
|
|
|
| Hook | Archivo | Descripción | Reutilización | Prioridad |
|
|
|------|---------|-------------|---------------|-----------|
|
|
| `useAuth` | shared/hooks/useAuth.ts | Hook de autenticación | 100% | P0 |
|
|
| `useUser` | shared/hooks/useUser.ts | Hook de usuario actual | 100% | P0 |
|
|
| `usePermissions` | shared/hooks/usePermissions.ts | Hook de permisos | 100% | P0 |
|
|
| `useApi` | shared/hooks/useApi.ts | Hook para llamadas API | 100% | P0 |
|
|
| `useQuery` | shared/hooks/useQuery.ts | Hook para queries | 100% | P0 |
|
|
| `useMutation` | shared/hooks/useMutation.ts | Hook para mutations | 100% | P0 |
|
|
| `useDebounce` | shared/hooks/useDebounce.ts | Hook de debounce | 100% | P0 |
|
|
| `useLocalStorage` | shared/hooks/useLocalStorage.ts | Hook para localStorage | 100% | P0 |
|
|
| `useToast` | shared/hooks/useToast.ts | Hook para notificaciones toast | 100% | P0 |
|
|
| `useModal` | shared/hooks/useModal.ts | Hook para modales | 100% | P0 |
|
|
|
|
**Total:** 10 hooks genéricos
|
|
|
|
### 3.3 Stores (Zustand)
|
|
|
|
| Store | Archivo | Descripción | Reutilización | Prioridad |
|
|
|-------|---------|-------------|---------------|-----------|
|
|
| `useAuthStore` | stores/auth.store.ts | Estado de autenticación | 100% | P0 |
|
|
| `useUserStore` | stores/user.store.ts | Estado de usuario | 100% | P0 |
|
|
| `useCompanyStore` | stores/company.store.ts | Estado de empresa/tenant | 100% | P0 |
|
|
| `useUIStore` | stores/ui.store.ts | Estado de UI (sidebar, theme) | 100% | P0 |
|
|
| `useNotificationStore` | stores/notification.store.ts | Estado de notificaciones | 100% | P0 |
|
|
| `usePermissionsStore` | stores/permissions.store.ts | Permisos del usuario | 100% | P0 |
|
|
|
|
**Total:** 6 stores genéricos
|
|
|
|
### 3.4 Páginas Genéricas
|
|
|
|
| Página | Ruta | Descripción | Reutilización | Prioridad |
|
|
|--------|------|-------------|---------------|-----------|
|
|
| Login | `/login` | Página de login | 100% | P0 |
|
|
| Register | `/register` | Página de registro | 100% | P0 |
|
|
| ForgotPassword | `/forgot-password` | Recuperar contraseña | 100% | P0 |
|
|
| ResetPassword | `/reset-password` | Resetear contraseña | 100% | P0 |
|
|
| Profile | `/profile` | Perfil de usuario | 100% | P0 |
|
|
| Settings | `/settings` | Configuración de usuario | 100% | P0 |
|
|
| Unauthorized | `/unauthorized` | Sin permisos | 100% | P0 |
|
|
| NotFound | `/404` | Página no encontrada | 100% | P0 |
|
|
|
|
**Total:** 8 páginas genéricas
|
|
|
|
---
|
|
|
|
## 4. RESUMEN CUANTITATIVO
|
|
|
|
| Categoría | Componentes Genéricos | Componentes Totales | % Reutilización |
|
|
|-----------|----------------------|---------------------|-----------------|
|
|
| **Schemas DB** | 4 | 7 | 57% |
|
|
| **Tablas DB** | 44 | 70+ | 63% |
|
|
| **Funciones DB** | 5 | 8 | 63% |
|
|
| **Triggers DB** | 3 patrones | 3 patrones | 100% |
|
|
| **ENUMs DB** | 5 | 10 | 50% |
|
|
| **Módulos Backend** | 8 | 13 | 62% |
|
|
| **Servicios Compartidos** | 7 | 7 | 100% |
|
|
| **Middleware** | 7 | 7 | 100% |
|
|
| **Guards/Decorators** | 5 | 5 | 100% |
|
|
| **Componentes UI** | 31 | 50 | 62% |
|
|
| **Hooks** | 10 | 15 | 67% |
|
|
| **Stores** | 6 | 10 | 60% |
|
|
| **Páginas** | 8 | 30+ | 27% |
|
|
| **TOTAL** | **143 componentes** | **235+ componentes** | **~61%** |
|
|
|
|
### Desglose de Prioridades
|
|
|
|
| Prioridad | Componentes | Porcentaje |
|
|
|-----------|-------------|------------|
|
|
| **P0 (Crítico)** | 120 | 84% |
|
|
| **P1 (Alta)** | 23 | 16% |
|
|
| **P2 (Media)** | 0 | 0% |
|
|
|
|
---
|
|
|
|
## 5. ANÁLISIS DE REUTILIZACIÓN POR PROYECTO
|
|
|
|
### 5.1 ERP Construcción
|
|
|
|
- **Componentes genéricos utilizados:** 143
|
|
- **Componentes específicos construcción:** 92
|
|
- **Total componentes:** 235
|
|
- **% Reutilización del genérico:** 61%
|
|
|
|
### 5.2 ERP Vidrio (Estimado)
|
|
|
|
- **Componentes genéricos a reutilizar:** ~135 (94% de los 143)
|
|
- **Componentes específicos vidrio nuevos:** ~60
|
|
- **Total componentes estimado:** 195
|
|
- **% Reutilización del genérico:** 69%
|
|
- **Componentes a migrar de construcción:** 8 (calendarios, reportes avanzados)
|
|
|
|
### 5.3 ERP Mecánicas (Estimado)
|
|
|
|
- **Componentes genéricos a reutilizar:** ~140 (98% de los 143)
|
|
- **Componentes específicos mecánicas nuevos:** ~45
|
|
- **Total componentes estimado:** 185
|
|
- **% Reutilización del genérico:** 76%
|
|
- **Componentes a migrar de construcción:** 3 (gestión de proyectos base)
|
|
|
|
### 5.4 Resumen de Reutilización
|
|
|
|
| Proyecto | Reutilización ERP Genérico | Componentes Específicos | Ahorro de Desarrollo |
|
|
|----------|---------------------------|-------------------------|---------------------|
|
|
| **ERP Construcción** | 61% | 39% | Baseline (0%) |
|
|
| **ERP Vidrio** | 69% | 31% | ~30% |
|
|
| **ERP Mecánicas** | 76% | 24% | ~40% |
|
|
| **Promedio** | **69%** | **31%** | **35%** |
|
|
|
|
---
|
|
|
|
## 6. COMPONENTES P0 (CRÍTICOS PARA TODOS LOS PROYECTOS)
|
|
|
|
### Fase 0 - Infraestructura Base (Crítico)
|
|
|
|
1. **Database:**
|
|
- Schema `auth_management` completo (10 tablas)
|
|
- Schema `audit_logging` completo (4 tablas)
|
|
- Tablas: `companies`, `partners`, `currencies`, `countries`, `uom`
|
|
- Funciones: `update_updated_at_column()`, `get_current_user_id()`, `get_current_tenant_id()`
|
|
- Triggers: `trg_*_updated_at` en todas las tablas
|
|
|
|
2. **Backend:**
|
|
- Módulos: `auth`, `users`, `roles`, `companies`, `audit`
|
|
- Servicios: `DatabaseService`, `CryptoService`, `EmailService`, `LoggerService`
|
|
- Middleware: `authMiddleware`, `rbacMiddleware`, `validationMiddleware`, `errorMiddleware`
|
|
- Decorators: `@Public()`, `@Roles()`, `@Permissions()`, `@CurrentUser()`, `@Tenant()`
|
|
|
|
3. **Frontend:**
|
|
- Átomos: `Button`, `Input`, `Select`, `Checkbox`, `DatePicker`, `Icon`
|
|
- Moléculas: `FormField`, `SearchBar`, `Alert`, `Modal`
|
|
- Organismos: `DataTable`, `Form`, `Sidebar`, `Navbar`
|
|
- Templates: `DashboardLayout`, `AuthLayout`
|
|
- Hooks: `useAuth`, `useUser`, `usePermissions`, `useApi`
|
|
- Stores: `useAuthStore`, `useUserStore`, `useCompanyStore`, `useUIStore`
|
|
- Páginas: Login, Register, Profile, Settings
|
|
|
|
**Total P0:** 120 componentes críticos
|
|
|
|
---
|
|
|
|
## 7. RECOMENDACIONES DE MIGRACIÓN
|
|
|
|
### 7.1 Orden Sugerido de Migración
|
|
|
|
**Fase 0 (Semana 1-2): Infraestructura Crítica**
|
|
1. Schema `auth_management` (10 tablas)
|
|
2. Schema `audit_logging` (4 tablas)
|
|
3. Funciones DB universales (5)
|
|
4. Módulo backend `auth` completo
|
|
5. Módulo backend `users` completo
|
|
6. Componentes UI críticos (20)
|
|
|
|
**Fase 1 (Semana 3-4): Catálogos y Core**
|
|
1. Tablas: `companies`, `partners`, `currencies`, `countries`, `uom` (11 tablas)
|
|
2. Schema `financial_management` (12 tablas)
|
|
3. Módulos backend: `companies`, `catalogs`
|
|
4. Componentes UI adicionales (11)
|
|
|
|
**Fase 2 (Semana 5-6): Módulos de Negocio Básicos**
|
|
1. Schema `purchasing_management` (7 tablas)
|
|
2. Módulos backend: `notifications`, `files`
|
|
3. Resto de componentes UI (20)
|
|
|
|
### 7.2 Estrategia de Adaptación
|
|
|
|
Para cada componente genérico:
|
|
1. **Extraer:** Copiar del ERP Construcción
|
|
2. **Limpiar:** Remover lógica específica de construcción
|
|
3. **Parametrizar:** Hacer configurable mediante settings
|
|
4. **Documentar:** Agregar JSDoc completo
|
|
5. **Testear:** Unit tests + integration tests
|
|
6. **Validar:** Verificar en al menos 2 contextos (construcción + vidrio)
|
|
|
|
---
|
|
|
|
## 8. CONCLUSIONES
|
|
|
|
### 8.1 Hallazgos Principales
|
|
|
|
1. **61% de componentes son genéricos:** 143 de 235 componentes pueden reutilizarse
|
|
2. **84% son prioridad P0:** Componentes críticos que deben migrarse primero
|
|
3. **Alta reutilización esperada:** 69% promedio en proyectos futuros
|
|
4. **ROI significativo:** 35% ahorro promedio en desarrollo
|
|
|
|
### 8.2 Beneficios de la Migración
|
|
|
|
1. **Reducción de duplicación:** ~35% menos código a mantener
|
|
2. **Consistencia:** UI/UX uniforme entre proyectos
|
|
3. **Velocidad de desarrollo:** 30-40% más rápido en proyectos nuevos
|
|
4. **Calidad:** Componentes probados en producción
|
|
5. **Mantenibilidad:** Bugs fixeados una vez, benefician a todos
|
|
|
|
### 8.3 Próximos Pasos
|
|
|
|
1. Revisar este documento con equipo de desarrollo
|
|
2. Priorizar componentes P0 para migración inmediata
|
|
3. Crear plan detallado de migración (tareas, responsables, timeline)
|
|
4. Iniciar migración con Fase 0 (infraestructura crítica)
|
|
5. Validar componentes migrados con proyecto piloto
|
|
|
|
---
|
|
|
|
**Fecha de Creación:** 2025-11-23
|
|
**Versión:** 1.0
|
|
**Estado:** Completado
|
|
**Próximo Documento:** COMPONENTES-ESPECIFICOS.md
|