# 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
