Some checks failed
ERP Core CI / Backend Lint (push) Has been cancelled
ERP Core CI / Backend Unit Tests (push) Has been cancelled
ERP Core CI / Backend Integration Tests (push) Has been cancelled
ERP Core CI / Frontend Lint (push) Has been cancelled
ERP Core CI / Frontend Unit Tests (push) Has been cancelled
ERP Core CI / Frontend E2E Tests (push) Has been cancelled
ERP Core CI / Database DDL Validation (push) Has been cancelled
ERP Core CI / Backend Build (push) Has been cancelled
ERP Core CI / Frontend Build (push) Has been cancelled
ERP Core CI / CI Success (push) Has been cancelled
Performance Tests / Lighthouse CI (push) Has been cancelled
Performance Tests / Bundle Size Analysis (push) Has been cancelled
Performance Tests / k6 Load Tests (push) Has been cancelled
Performance Tests / Performance Summary (push) Has been cancelled
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8 - Actualizaciones en modulos CRM y OpenAPI Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
709 lines
30 KiB
Markdown
709 lines
30 KiB
Markdown
# ANALISIS COMPLETO DEL PROYECTO ERP-CORE
|
|
|
|
**ID:** ANALISIS-COMPLETO-2026-01-10
|
|
**Fecha:** 2026-01-10
|
|
**Version:** 1.0
|
|
**Sistema:** SIMCO v3.5 + CAPVED
|
|
**Orquestador:** Claude Code - Opus 4.5
|
|
**Fase:** A (Analisis) - FASE 2
|
|
|
|
---
|
|
|
|
## RESUMEN EJECUTIVO
|
|
|
|
Este documento presenta un analisis exhaustivo del proyecto ERP-Core para identificar todos los gaps de desarrollo, datos hardcodeados, seeds faltantes, y tests pendientes.
|
|
|
|
### Metricas Clave
|
|
|
|
| Categoria | Total | Cubierto | Pendiente | % Completado |
|
|
|-----------|-------|----------|-----------|--------------|
|
|
| Servicios Backend | 76 | 30 | 46 | 39.5% |
|
|
| Servicios Frontend API | 20 | 12 | 8 | 60% |
|
|
| Tablas DDL | 177 | 25 | 152 | 14.1% |
|
|
| Seeds Requeridos | 45 | 7 | 38 | 15.5% |
|
|
| Tests Unitarios | 903 | 903 | ~1200 | ~43% |
|
|
|
|
---
|
|
|
|
## 1. ANALISIS FRONTEND
|
|
|
|
### 1.1 Datos Hardcodeados (Intencionados - Configuracion)
|
|
|
|
Estos son valores de configuracion que estan correctamente hardcodeados como constantes del sistema:
|
|
|
|
| Archivo | Lineas | Descripcion | Estado |
|
|
|---------|--------|-------------|--------|
|
|
| `dashboards/types/index.ts` | 27-43, 251-267 | WIDGET_TYPES, WIDGET_DEFAULT_SIZES | OK |
|
|
| `scheduled-reports/types/index.ts` | 146-192 | CRON_PRESETS, TIMEZONES, DELIVERY_METHODS, EXPORT_FORMATS | OK |
|
|
| `shared/constants/roles.ts` | 1-40 | ROLES, ROLE_LABELS, ROLE_HIERARCHY | OK |
|
|
| `shared/constants/status.ts` | 2-72 | DOCUMENT_STATUS, INVOICE_STATUS, LEAD_STATUS, etc. | OK |
|
|
| `shared/constants/api-endpoints.ts` | 1-94 | API endpoint mappings | OK |
|
|
|
|
### 1.2 Datos Hardcodeados (Formularios - Defaults)
|
|
|
|
Valores por defecto en formularios que podrian provenir de API:
|
|
|
|
| Archivo | Lineas | Datos | Accion Requerida |
|
|
|---------|--------|-------|------------------|
|
|
| `partners/components/PartnerForm.tsx` | 35-43, 76, 85 | partnerTypeOptions, languageOptions, defaults | EVALUAR - Podrian venir de config API |
|
|
| `tenants/components/TenantForm.tsx` | 80-86, 98-100 | plan, maxUsers, timezone, currency, language defaults | EVALUAR - Podrian venir de config API |
|
|
| `audit/components/AuditLogFilters.tsx` | 17-22 | actionOptions (INSERT, UPDATE, DELETE) | OK - Son enums fijos |
|
|
|
|
### 1.3 TODOs Pendientes en Frontend
|
|
|
|
| Archivo | Linea | TODO | Prioridad |
|
|
|---------|-------|------|-----------|
|
|
| `pages/catalogs/categories/CategoryDetailPage.tsx` | 113 | `productCount: 0, // TODO: Get from API when available` | MEDIA |
|
|
|
|
### 1.4 Servicios API Faltantes en Frontend
|
|
|
|
**CRITICO - 8 modulos sin servicios API implementados:**
|
|
|
|
| Modulo | Archivo Esperado | Endpoints Definidos | Prioridad |
|
|
|--------|------------------|---------------------|-----------|
|
|
| Products | `products/api/products.api.ts` | INVENTORY.PRODUCTS | CRITICA |
|
|
| Inventory | `inventory/api/inventory.api.ts` | INVENTORY.* (8 endpoints) | CRITICA |
|
|
| Sales | `sales/api/sales.api.ts` | SALES.* (3 endpoints) | CRITICA |
|
|
| Purchases | `purchases/api/purchases.api.ts` | PURCHASES.* (2 endpoints) | CRITICA |
|
|
| Projects | `projects/api/projects.api.ts` | PROJECTS.* (5 endpoints) | MEDIA |
|
|
| CRM | `crm/api/crm.api.ts` | CRM.* (4 endpoints) | MEDIA |
|
|
| HR | `hr/api/hr.api.ts` | HR.* (6 endpoints) | MEDIA |
|
|
| System | `system/api/system.api.ts` | SYSTEM.* (4 endpoints) | BAJA |
|
|
|
|
### 1.5 Servicios API Implementados (12)
|
|
|
|
| Servicio | Archivo | Endpoints | Estado |
|
|
|----------|---------|-----------|--------|
|
|
| Auth API | `services/api/auth.api.ts` | 7 | COMPLETO |
|
|
| Financial API | `features/financial/api/financial.api.ts` | 40+ | COMPLETO |
|
|
| Catalogs API | `features/catalogs/api/catalogs.api.ts` | 30+ | COMPLETO |
|
|
| Users API | `features/users/api/users.api.ts` | 8 | COMPLETO |
|
|
| Partners API | `features/partners/api/partners.api.ts` | 10 | COMPLETO |
|
|
| Companies API | `features/companies/api/companies.api.ts` | 6 | COMPLETO |
|
|
| Audit API | `features/audit/api/audit.api.ts` | 12 | COMPLETO |
|
|
| Notifications API | `features/notifications/api/notifications.api.ts` | 8 | COMPLETO |
|
|
| Dashboards API | `features/dashboards/api/dashboards.api.ts` | 10 | COMPLETO |
|
|
| Report Builder API | `features/report-builder/api/report-builder.api.ts` | 8 | COMPLETO |
|
|
| Scheduled Reports API | `features/scheduled-reports/api/scheduled-reports.api.ts` | 10 | COMPLETO |
|
|
| Tenants API | `features/tenants/api/tenants.api.ts` | 8 | COMPLETO |
|
|
|
|
---
|
|
|
|
## 2. ANALISIS BACKEND
|
|
|
|
### 2.1 TODOs Criticos Pendientes
|
|
|
|
| ID | Archivo | Linea | Descripcion | Impacto | Prioridad |
|
|
|----|---------|-------|-------------|---------|-----------|
|
|
| TODO-001 | `sales/quotations.service.ts` | 416 | `const amountTax = 0; // TODO: Calculate taxes` | Impuestos no calculados en cotizaciones | CRITICA |
|
|
| TODO-002 | `sales/orders.service.ts` | 466 | `const amountTax = 0; // TODO: Calculate taxes` | Impuestos no calculados en ordenes | CRITICA |
|
|
| TODO-003 | `sales/quotations.service.ts` | 478 | `// TODO: Send email notification` | Emails no enviados al cliente | ALTA |
|
|
| TODO-004 | `shared/middleware/auth.middleware.ts` | 81 | `// TODO: Check permission in database` | Permisos granulares no validados | ALTA |
|
|
| TODO-005 | `shared/services/email.service.ts` | 66 | `// TODO: Implement actual email sending` | Solo mock en desarrollo | ALTA |
|
|
| TODO-006 | `reports/scheduler.service.ts` | 360 | `// TODO: Integrate with notifications.service` | Reportes sin notificaciones | MEDIA |
|
|
|
|
### 2.2 Servicios por Modulo
|
|
|
|
#### AUTH (8 servicios)
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| auth.service.ts | 23 | COMPLETO | - |
|
|
| mfa.service.ts | 45 | COMPLETO | - |
|
|
| permission-cache.service.ts | - | INCLUIDO | - |
|
|
| trusted-devices.service.ts | 41 | COMPLETO | - |
|
|
| apiKeys.service.ts | 0 | SIN TESTS | ALTA |
|
|
| email-verification.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| token.service.ts | 0 | SIN TESTS | ALTA |
|
|
| oauth.service.ts | 0 | SIN TESTS | MEDIA |
|
|
|
|
#### CORE (7 servicios)
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| countries.service.ts | 19 | COMPLETO | - |
|
|
| currencies.service.ts | 21 | COMPLETO | - |
|
|
| currency-rates.service.ts | 19 | COMPLETO | - |
|
|
| states.service.ts | 25 | COMPLETO | - |
|
|
| uom.service.ts | 33 | COMPLETO | - |
|
|
| product-categories.service.ts | 0 | SIN TESTS | ALTA |
|
|
| sequences.service.ts | 0 | SIN TESTS | CRITICA |
|
|
|
|
#### FINANCIAL (11 servicios)
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| accounts.service.ts | 36 | COMPLETO | - |
|
|
| invoices.service.ts | 31 | COMPLETO | - |
|
|
| journal-entries.service.ts | 27 | COMPLETO | - |
|
|
| payments.service.ts | 37 | COMPLETO | - |
|
|
| fiscalPeriods.service.ts | 0 | SIN TESTS | ALTA |
|
|
| incoterms.service.ts | 0 | SIN TESTS | BAJA |
|
|
| journals.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| payment-methods.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| payment-terms.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| reconcile-models.service.ts | 0 | SIN TESTS | CRITICA |
|
|
| taxes.service.ts | 0 | SIN TESTS | CRITICA |
|
|
|
|
#### INVENTORY (9 servicios)
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| products.service.ts | 32 | COMPLETO | - |
|
|
| stock-quants.service.ts | 37 | COMPLETO | - |
|
|
| valuation.service.ts | 37 | COMPLETO | - |
|
|
| adjustments.service.ts | 0 | SIN TESTS | ALTA |
|
|
| locations.service.ts | 0 | SIN TESTS | ALTA |
|
|
| lots.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| package-types.service.ts | 0 | SIN TESTS | BAJA |
|
|
| pickings.service.ts | 0 | SIN TESTS | ALTA |
|
|
| warehouses.service.ts | 0 | SIN TESTS | ALTA |
|
|
|
|
#### SALES (5 servicios) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| orders.service.ts | 0 | SIN TESTS | CRITICA |
|
|
| quotations.service.ts | 0 | SIN TESTS | CRITICA |
|
|
| customer-groups.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| pricelists.service.ts | 0 | SIN TESTS | ALTA |
|
|
| sales-teams.service.ts | 0 | SIN TESTS | BAJA |
|
|
|
|
#### PURCHASES (2 servicios) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| purchases.service.ts | 0 | SIN TESTS | CRITICA |
|
|
| rfqs.service.ts | 0 | SIN TESTS | CRITICA |
|
|
|
|
#### HR (7 servicios) - 28.6% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| expenses.service.ts | 20 | COMPLETO | - |
|
|
| skills.service.ts | 17 | COMPLETO | - |
|
|
| contracts.service.ts | 0 | SIN TESTS | ALTA |
|
|
| departments.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| employees.service.ts | 0 | SIN TESTS | ALTA |
|
|
| leaves.service.ts | 0 | SIN TESTS | ALTA |
|
|
| payslips.service.ts | 0 | SIN TESTS | CRITICA |
|
|
|
|
#### AUDIT (3 servicios) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| access-logs.service.ts | 0 | SIN TESTS | ALTA |
|
|
| audit.service.ts | 0 | SIN TESTS | ALTA |
|
|
| security-events.service.ts | 0 | SIN TESTS | ALTA |
|
|
|
|
#### REPORTS (6 servicios) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| reports.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| dashboards.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| report-builder.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| export.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| pdf.service.ts | 0 | SIN TESTS | BAJA |
|
|
| scheduler.service.ts | 0 | SIN TESTS | MEDIA |
|
|
|
|
#### PROJECTS (3 servicios) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| projects.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| tasks.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| timesheets.service.ts | 0 | SIN TESTS | MEDIA |
|
|
|
|
#### CRM (4 servicios) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| leads.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| opportunities.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| stages.service.ts | 0 | SIN TESTS | BAJA |
|
|
| tags.service.ts | 0 | SIN TESTS | BAJA |
|
|
|
|
#### ROLES (2 servicios) - 100% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| roles.service.ts | 29 | COMPLETO | - |
|
|
| permissions.service.ts | 42 | COMPLETO | - |
|
|
|
|
#### USERS (1 servicio) - 100% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| users.service.ts | 45 | COMPLETO | - |
|
|
|
|
#### TENANTS (1 servicio) - 100% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| tenants.service.ts | 44 | COMPLETO | - |
|
|
|
|
#### COMPANIES (1 servicio) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| companies.service.ts | 0 | SIN TESTS | ALTA |
|
|
|
|
#### PARTNERS (2 servicios) - 50% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| partners.service.ts | 26 | COMPLETO | - |
|
|
| ranking.service.ts | 0 | SIN TESTS | BAJA |
|
|
|
|
#### SYSTEM (4 servicios) - 25% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| settings.service.ts | 28 | COMPLETO | - |
|
|
| activities.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| messages.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| notifications.service.ts | 0 | SIN TESTS | MEDIA |
|
|
|
|
#### SHARED (3 servicios) - 0% COBERTURA
|
|
| Servicio | Tests | Estado | Prioridad Fix |
|
|
|----------|-------|--------|---------------|
|
|
| base.service.ts | 0 | SIN TESTS | ALTA |
|
|
| cache.service.ts | 0 | SIN TESTS | MEDIA |
|
|
| email.service.ts | 0 | SIN TESTS | ALTA |
|
|
|
|
---
|
|
|
|
## 3. ANALISIS DATABASE SEEDS
|
|
|
|
### 3.1 Seeds Existentes (7 archivos)
|
|
|
|
| Archivo | Tablas Cubiertas | Estado |
|
|
|---------|------------------|--------|
|
|
| `00-catalogs.sql` | currencies (3), countries (5), uom_categories (5), uom (15) | OK |
|
|
| `00b-states.sql` | states (131 registros) | OK |
|
|
| `01-tenants.sql` | tenants (2) | OK - IDs hardcodeados |
|
|
| `02-companies.sql` | companies (3) | OK - IDs hardcodeados |
|
|
| `03-roles.sql` | roles (8), permissions (28), role_permissions | OK |
|
|
| `04-users.sql` | users (6), user_roles | OK - Password expuesto |
|
|
| `05-sample-data.sql` | partners (2) | INCOMPLETO |
|
|
|
|
### 3.2 Seeds CRITICOS Faltantes
|
|
|
|
#### FINANCIAL - BLOQUEO TOTAL (0/21 tablas)
|
|
|
|
| Tabla | Prioridad | Descripcion | Registros Minimos |
|
|
|-------|-----------|-------------|-------------------|
|
|
| account_types | CRITICA | Tipos de cuenta contable | 10 |
|
|
| accounts | CRITICA | Catalogo de cuentas (COA) | 50+ |
|
|
| journals | CRITICA | Diarios contables | 5 |
|
|
| fiscal_years | CRITICA | Ejercicios fiscales | 2 |
|
|
| fiscal_periods | CRITICA | Periodos fiscales | 24 (2 anios x 12) |
|
|
| taxes | CRITICA | Configuracion de impuestos | 5 (IVA, ISR, etc) |
|
|
| payment_terms | ALTA | Terminos de pago | 5 |
|
|
| payment_methods | ALTA | Metodos de pago | 5 |
|
|
| incoterms | MEDIA | Terminos comercio internacional | 11 |
|
|
|
|
#### INVENTORY - BLOQUEO TOTAL (0/33 tablas)
|
|
|
|
| Tabla | Prioridad | Descripcion | Registros Minimos |
|
|
|-------|-----------|-------------|-------------------|
|
|
| products | CRITICA | Productos | 20 |
|
|
| warehouses | CRITICA | Almacenes | 2 |
|
|
| locations | CRITICA | Ubicaciones de almacen | 10 |
|
|
| picking_types | ALTA | Tipos de movimiento | 3 |
|
|
| package_types | BAJA | Tipos de empaque | 3 |
|
|
| product_categories | CRITICA | Categorias de producto | 10 |
|
|
|
|
#### SALES - BLOQUEO TOTAL (0/12 tablas)
|
|
|
|
| Tabla | Prioridad | Descripcion | Registros Minimos |
|
|
|-------|-----------|-------------|-------------------|
|
|
| pricelists | CRITICA | Listas de precio | 3 |
|
|
| pricelist_items | ALTA | Items de lista de precio | 50 |
|
|
| sales_teams | MEDIA | Equipos de venta | 2 |
|
|
| customer_groups | MEDIA | Grupos de clientes | 3 |
|
|
|
|
#### PURCHASES - BLOQUEO TOTAL (0/9 tablas)
|
|
|
|
| Tabla | Prioridad | Descripcion | Registros Minimos |
|
|
|-------|-----------|-------------|-------------------|
|
|
| vendor_pricelists | ALTA | Listas de precio proveedor | 2 |
|
|
|
|
#### CORE - INCOMPLETO
|
|
|
|
| Tabla | Prioridad | Descripcion | Registros Minimos |
|
|
|-------|-----------|-------------|-------------------|
|
|
| sequences | CRITICA | Secuencias de numeracion | 15 (SO, PO, INV, etc) |
|
|
| product_categories | CRITICA | Categorias | 10 |
|
|
| addresses | ALTA | Direcciones de partners | 4 |
|
|
|
|
### 3.3 Problemas de Calidad en Seeds Existentes
|
|
|
|
| Problema | Archivos Afectados | Riesgo | Solucion |
|
|
|----------|-------------------|--------|----------|
|
|
| UUIDs hardcodeados | Todos | ALTO - Conflicto en produccion | Usar gen_random_uuid() |
|
|
| Tenant IDs fijos | users, roles, permissions | ALTO - No multi-tenant testing | Parametrizar |
|
|
| Password hash expuesto | 04-users.sql | CRITICO - Seguridad | Mover a variable de entorno |
|
|
| Datos incompletos | 05-sample-data.sql | MEDIO - Solo 2 partners | Agregar mas datos |
|
|
|
|
---
|
|
|
|
## 4. ANALISIS DE TESTS
|
|
|
|
### 4.1 Resumen de Cobertura
|
|
|
|
| Modulo | Servicios | Con Tests | Sin Tests | % Cobertura |
|
|
|--------|-----------|-----------|-----------|-------------|
|
|
| Auth | 8 | 5 | 3 | 62.5% |
|
|
| Core | 7 | 5 | 2 | 71.4% |
|
|
| Financial | 11 | 4 | 7 | 36.4% |
|
|
| Inventory | 9 | 3 | 6 | 33.3% |
|
|
| Sales | 5 | 0 | 5 | 0% |
|
|
| Purchases | 2 | 0 | 2 | 0% |
|
|
| HR | 7 | 2 | 5 | 28.6% |
|
|
| Audit | 3 | 0 | 3 | 0% |
|
|
| Reports | 6 | 0 | 6 | 0% |
|
|
| Projects | 3 | 0 | 3 | 0% |
|
|
| CRM | 4 | 0 | 4 | 0% |
|
|
| Roles | 2 | 2 | 0 | 100% |
|
|
| Users | 1 | 1 | 0 | 100% |
|
|
| Tenants | 1 | 1 | 0 | 100% |
|
|
| Companies | 1 | 0 | 1 | 0% |
|
|
| Partners | 2 | 1 | 1 | 50% |
|
|
| System | 4 | 1 | 3 | 25% |
|
|
| Shared | 3 | 0 | 3 | 0% |
|
|
| **TOTAL** | **76** | **30** | **46** | **39.5%** |
|
|
|
|
### 4.2 Tests Existentes (Detalle)
|
|
|
|
| Test File | Tests | Suites | Estado |
|
|
|-----------|-------|--------|--------|
|
|
| auth.service.spec.ts | 23 | 8 | PASS |
|
|
| mfa.service.spec.ts | 45 | 10 | PASS |
|
|
| trusted-devices.service.spec.ts | 41 | 8 | PASS |
|
|
| countries.service.spec.ts | 19 | 5 | PASS |
|
|
| currencies.service.spec.ts | 21 | 5 | PASS |
|
|
| currency-rates.service.spec.ts | 19 | 5 | PASS |
|
|
| states.service.spec.ts | 25 | 6 | PASS |
|
|
| uom.service.spec.ts | 33 | 7 | PASS |
|
|
| accounts.service.spec.ts | 36 | 9 | PASS |
|
|
| invoices.service.spec.ts | 31 | 9 | PASS |
|
|
| journal-entries.service.spec.ts | 27 | 8 | PASS |
|
|
| payments.service.spec.ts | 37 | 11 | PASS |
|
|
| products.service.spec.ts | 32 | 9 | PASS |
|
|
| stock.service.spec.ts | 37 | 12 | PASS |
|
|
| valuation.service.spec.ts | 37 | 10 | PASS |
|
|
| roles.service.spec.ts | 29 | 12 | PASS |
|
|
| permissions.service.spec.ts | 42 | 14 | PASS |
|
|
| users.service.spec.ts | 45 | 11 | PASS |
|
|
| tenants.service.spec.ts | 44 | 14 | PASS |
|
|
| expenses.service.spec.ts | 20 | 15 | PASS |
|
|
| skills.service.spec.ts | 17 | 12 | PASS |
|
|
| partners.service.spec.ts | 26 | 10 | PASS |
|
|
| settings.service.spec.ts | 28 | 9 | PASS |
|
|
| **TOTAL** | **903** | **~220** | - |
|
|
|
|
### 4.3 Tests de Integracion Existentes
|
|
|
|
| Test File | Descripcion | Estado |
|
|
|-----------|-------------|--------|
|
|
| auth.integration.test.ts | Autenticacion con DB | PASS |
|
|
| financial.integration.test.ts | Operaciones financieras | PASS |
|
|
| inventory.integration.test.ts | Operaciones de inventario | PASS |
|
|
| partners.integration.test.ts | Operaciones de partners | PASS |
|
|
|
|
### 4.4 Tests E2E
|
|
|
|
| Estado | Descripcion |
|
|
|--------|-------------|
|
|
| NO EXISTE | No hay tests E2E con Playwright u otro framework |
|
|
|
|
---
|
|
|
|
## 5. DEPENDENCIAS ENTRE MODULOS
|
|
|
|
### 5.1 Diagrama de Dependencias
|
|
|
|
```
|
|
┌─────────────┐
|
|
│ TENANTS │
|
|
└──────┬──────┘
|
|
│
|
|
┌────────────┼────────────┐
|
|
▼ ▼ ▼
|
|
┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
│ AUTH │ │ CORE │ │ ROLES │
|
|
└────┬────┘ └────┬────┘ └────┬────┘
|
|
│ │ │
|
|
┌────────┼────────────┼────────────┤
|
|
▼ ▼ ▼ ▼
|
|
┌───────┐┌───────┐ ┌─────────────┐┌───────┐
|
|
│ USERS ││PARTNERS│ │ COMPANIES ││SYSTEM │
|
|
└───┬───┘└───┬───┘ └──────┬──────┘└───────┘
|
|
│ │ │
|
|
└────────┼─────────────┘
|
|
▼
|
|
┌────────────────┐
|
|
│ FINANCIAL │◄─────────────────────┐
|
|
│ (accounts, │ │
|
|
│ journals, │ │
|
|
│ taxes) │ │
|
|
└───────┬────────┘ │
|
|
│ │
|
|
┌───────┴───────┐ │
|
|
▼ ▼ │
|
|
┌───────┐ ┌───────────┐ │
|
|
│INVOICES│ │ PAYMENTS │ │
|
|
└───────┘ └───────────┘ │
|
|
│
|
|
┌─────────────────────────────────────┐ │
|
|
│ INVENTORY │ │
|
|
│ (products, warehouses, locations, │─────┤
|
|
│ stock_quants, pickings) │ │
|
|
└─────────────────────────────────────┘ │
|
|
│
|
|
┌────────────────────────────────────┐ │
|
|
│ SALES │──────┤
|
|
│ (quotations, orders, pricelists) │ │
|
|
└────────────────────────────────────┘ │
|
|
│
|
|
┌────────────────────────────────────┐ │
|
|
│ PURCHASES │──────┘
|
|
│ (rfqs, purchase_orders) │
|
|
└────────────────────────────────────┘
|
|
```
|
|
|
|
### 5.2 Orden de Ejecucion de Seeds
|
|
|
|
```
|
|
1. 00-catalogs.sql # Currencies, Countries, UOMs
|
|
2. 00b-states.sql # States/Provinces
|
|
3. 01-tenants.sql # Tenants (base multi-tenancy)
|
|
4. 02-companies.sql # Companies (per tenant)
|
|
5. 03-roles.sql # Roles & Permissions
|
|
6. 04-users.sql # Users (depends on roles)
|
|
5. [NUEVO] 05-sequences.sql # Sequences (document numbering)
|
|
6. [NUEVO] 06-product-categories.sql # Product categories
|
|
7. [NUEVO] 07-financial-setup.sql # COA, Journals, Taxes, Terms
|
|
8. [NUEVO] 08-inventory-setup.sql # Warehouses, Locations, Picking Types
|
|
9. [NUEVO] 09-products.sql # Products
|
|
10. [NUEVO] 10-pricelists.sql # Price lists
|
|
11. [NUEVO] 11-sample-partners.sql # Partners with addresses
|
|
12. 05-sample-data.sql # Rename to 12-sample-data.sql
|
|
```
|
|
|
|
---
|
|
|
|
## 6. GAPS IDENTIFICADOS
|
|
|
|
### 6.1 GAPS CRITICOS (Bloquean funcionalidad core)
|
|
|
|
| ID | Categoria | Descripcion | Impacto | Esfuerzo |
|
|
|----|-----------|-------------|---------|----------|
|
|
| GAP-C01 | Backend | Calculo de impuestos hardcodeado a 0 | Facturas sin impuestos | 8 SP |
|
|
| GAP-C02 | Database | Sin seed de catalogo de cuentas | No se puede contabilizar | 5 SP |
|
|
| GAP-C03 | Database | Sin seed de fiscal years/periods | No periodos fiscales | 3 SP |
|
|
| GAP-C04 | Database | Sin seed de productos | No hay productos | 5 SP |
|
|
| GAP-C05 | Database | Sin seed de almacenes/ubicaciones | No se puede almacenar | 3 SP |
|
|
| GAP-C06 | Database | Sin seed de secuencias | Documentos sin numero | 5 SP |
|
|
| GAP-C07 | Database | Sin seed de impuestos | No se calculan impuestos | 3 SP |
|
|
| GAP-C08 | Frontend | Sin API services para Inventory | Frontend no consume API | 5 SP |
|
|
| GAP-C09 | Frontend | Sin API services para Sales | Frontend no consume API | 5 SP |
|
|
| GAP-C10 | Frontend | Sin API services para Products | Frontend no consume API | 3 SP |
|
|
|
|
### 6.2 GAPS ALTOS (Afectan funcionalidad importante)
|
|
|
|
| ID | Categoria | Descripcion | Impacto | Esfuerzo |
|
|
|----|-----------|-------------|---------|----------|
|
|
| GAP-A01 | Backend | Email service solo mock | Sin notificaciones | 5 SP |
|
|
| GAP-A02 | Backend | Permission middleware incompleto | Sin permisos granulares | 5 SP |
|
|
| GAP-A03 | Backend | Tests faltantes - Sales (5 servicios) | Sin cobertura | 13 SP |
|
|
| GAP-A04 | Backend | Tests faltantes - Purchases (2 servicios) | Sin cobertura | 5 SP |
|
|
| GAP-A05 | Backend | Tests faltantes - Audit (3 servicios) | Sin cobertura compliance | 8 SP |
|
|
| GAP-A06 | Database | Sin seed de listas de precio | No se puede cotizar | 3 SP |
|
|
| GAP-A07 | Database | Sin seed de categorias producto | No categorizar productos | 3 SP |
|
|
| GAP-A08 | Frontend | Sin API services para Purchases | Frontend no consume API | 5 SP |
|
|
|
|
### 6.3 GAPS MEDIOS (Afectan funcionalidad secundaria)
|
|
|
|
| ID | Categoria | Descripcion | Impacto | Esfuerzo |
|
|
|----|-----------|-------------|---------|----------|
|
|
| GAP-M01 | Backend | Tests faltantes - HR (5 servicios) | Sin cobertura | 13 SP |
|
|
| GAP-M02 | Backend | Tests faltantes - Reports (6 servicios) | Sin cobertura | 8 SP |
|
|
| GAP-M03 | Backend | Tests faltantes - Projects (3 servicios) | Sin cobertura | 8 SP |
|
|
| GAP-M04 | Backend | Tests faltantes - CRM (4 servicios) | Sin cobertura | 8 SP |
|
|
| GAP-M05 | Backend | Tests faltantes - Financial (7 servicios) | Sin cobertura | 18 SP |
|
|
| GAP-M06 | Backend | Tests faltantes - Inventory (6 servicios) | Sin cobertura | 15 SP |
|
|
| GAP-M07 | Frontend | Sin API services para Projects | Frontend no consume API | 5 SP |
|
|
| GAP-M08 | Frontend | Sin API services para CRM | Frontend no consume API | 5 SP |
|
|
| GAP-M09 | Frontend | Sin API services para HR | Frontend no consume API | 5 SP |
|
|
|
|
### 6.4 GAPS BAJOS (Mejoras opcionales)
|
|
|
|
| ID | Categoria | Descripcion | Impacto | Esfuerzo |
|
|
|----|-----------|-------------|---------|----------|
|
|
| GAP-B01 | Backend | Tests faltantes - System (3 servicios) | Sin cobertura | 5 SP |
|
|
| GAP-B02 | Backend | Tests faltantes - Shared (3 servicios) | Sin cobertura | 5 SP |
|
|
| GAP-B03 | Frontend | CategoryDetailPage productCount hardcodeado | UI incorrecta | 1 SP |
|
|
| GAP-B04 | Database | Seeds de HR, CRM, Projects | Sin datos demo | 8 SP |
|
|
| GAP-B05 | Frontend | Sin API services para System | Frontend no consume API | 3 SP |
|
|
| GAP-B06 | E2E | Sin tests end-to-end Playwright | Sin validacion flujos | 21 SP |
|
|
|
|
---
|
|
|
|
## 7. RESUMEN DE ESFUERZO
|
|
|
|
### Por Prioridad
|
|
|
|
| Prioridad | GAPS | Story Points | % del Total |
|
|
|-----------|------|--------------|-------------|
|
|
| CRITICA | 10 | 45 SP | 22% |
|
|
| ALTA | 8 | 47 SP | 23% |
|
|
| MEDIA | 9 | 85 SP | 41% |
|
|
| BAJA | 6 | 43 SP | 14% |
|
|
| **TOTAL** | **33** | **220 SP** | **100%** |
|
|
|
|
### Por Categoria
|
|
|
|
| Categoria | GAPS | Story Points |
|
|
|-----------|------|--------------|
|
|
| Backend TODOs | 6 | 23 SP |
|
|
| Backend Tests | 12 | 96 SP |
|
|
| Frontend API Services | 8 | 41 SP |
|
|
| Database Seeds | 7 | 39 SP |
|
|
| E2E Tests | 1 | 21 SP |
|
|
| **TOTAL** | **34** | **220 SP** |
|
|
|
|
---
|
|
|
|
## 8. ARCHIVOS A CREAR/MODIFICAR
|
|
|
|
### 8.1 Frontend - Nuevos Servicios API (8 archivos)
|
|
|
|
```
|
|
frontend/src/features/products/api/products.api.ts
|
|
frontend/src/features/inventory/api/inventory.api.ts
|
|
frontend/src/features/sales/api/sales.api.ts
|
|
frontend/src/features/purchases/api/purchases.api.ts
|
|
frontend/src/features/projects/api/projects.api.ts
|
|
frontend/src/features/crm/api/crm.api.ts
|
|
frontend/src/features/hr/api/hr.api.ts
|
|
frontend/src/features/system/api/system.api.ts
|
|
```
|
|
|
|
### 8.2 Backend - Archivos a Modificar (TODOs)
|
|
|
|
```
|
|
backend/src/modules/sales/quotations.service.ts # Fix tax calculation
|
|
backend/src/modules/sales/orders.service.ts # Fix tax calculation
|
|
backend/src/shared/middleware/auth.middleware.ts # Fix permission check
|
|
backend/src/shared/services/email.service.ts # Implement production email
|
|
backend/src/modules/reports/scheduler.service.ts # Integrate notifications
|
|
```
|
|
|
|
### 8.3 Backend - Nuevos Tests (46 archivos)
|
|
|
|
```
|
|
# Auth (3)
|
|
backend/src/modules/auth/__tests__/apiKeys.service.spec.ts
|
|
backend/src/modules/auth/__tests__/email-verification.service.spec.ts
|
|
backend/src/modules/auth/__tests__/token.service.spec.ts
|
|
|
|
# Core (2)
|
|
backend/src/modules/core/__tests__/product-categories.service.spec.ts
|
|
backend/src/modules/core/__tests__/sequences.service.spec.ts
|
|
|
|
# Financial (7)
|
|
backend/src/modules/financial/__tests__/fiscalPeriods.service.spec.ts
|
|
backend/src/modules/financial/__tests__/incoterms.service.spec.ts
|
|
backend/src/modules/financial/__tests__/journals.service.spec.ts
|
|
backend/src/modules/financial/__tests__/payment-methods.service.spec.ts
|
|
backend/src/modules/financial/__tests__/payment-terms.service.spec.ts
|
|
backend/src/modules/financial/__tests__/reconcile-models.service.spec.ts
|
|
backend/src/modules/financial/__tests__/taxes.service.spec.ts
|
|
|
|
# Inventory (6)
|
|
backend/src/modules/inventory/__tests__/adjustments.service.spec.ts
|
|
backend/src/modules/inventory/__tests__/locations.service.spec.ts
|
|
backend/src/modules/inventory/__tests__/lots.service.spec.ts
|
|
backend/src/modules/inventory/__tests__/package-types.service.spec.ts
|
|
backend/src/modules/inventory/__tests__/pickings.service.spec.ts
|
|
backend/src/modules/inventory/__tests__/warehouses.service.spec.ts
|
|
|
|
# Sales (5)
|
|
backend/src/modules/sales/__tests__/orders.service.spec.ts
|
|
backend/src/modules/sales/__tests__/quotations.service.spec.ts
|
|
backend/src/modules/sales/__tests__/customer-groups.service.spec.ts
|
|
backend/src/modules/sales/__tests__/pricelists.service.spec.ts
|
|
backend/src/modules/sales/__tests__/sales-teams.service.spec.ts
|
|
|
|
# Purchases (2)
|
|
backend/src/modules/purchases/__tests__/purchases.service.spec.ts
|
|
backend/src/modules/purchases/__tests__/rfqs.service.spec.ts
|
|
|
|
# HR (5)
|
|
backend/src/modules/hr/__tests__/contracts.service.spec.ts
|
|
backend/src/modules/hr/__tests__/departments.service.spec.ts
|
|
backend/src/modules/hr/__tests__/employees.service.spec.ts
|
|
backend/src/modules/hr/__tests__/leaves.service.spec.ts
|
|
backend/src/modules/hr/__tests__/payslips.service.spec.ts
|
|
|
|
# Audit (3)
|
|
backend/src/modules/audit/__tests__/access-logs.service.spec.ts
|
|
backend/src/modules/audit/__tests__/audit.service.spec.ts
|
|
backend/src/modules/audit/__tests__/security-events.service.spec.ts
|
|
|
|
# Reports (6)
|
|
backend/src/modules/reports/__tests__/reports.service.spec.ts
|
|
backend/src/modules/reports/__tests__/dashboards.service.spec.ts
|
|
backend/src/modules/reports/__tests__/report-builder.service.spec.ts
|
|
backend/src/modules/reports/__tests__/export.service.spec.ts
|
|
backend/src/modules/reports/__tests__/pdf.service.spec.ts
|
|
backend/src/modules/reports/__tests__/scheduler.service.spec.ts
|
|
|
|
# Projects (3)
|
|
backend/src/modules/projects/__tests__/projects.service.spec.ts
|
|
backend/src/modules/projects/__tests__/tasks.service.spec.ts
|
|
backend/src/modules/projects/__tests__/timesheets.service.spec.ts
|
|
|
|
# CRM (4)
|
|
backend/src/modules/crm/__tests__/leads.service.spec.ts
|
|
backend/src/modules/crm/__tests__/opportunities.service.spec.ts
|
|
backend/src/modules/crm/__tests__/stages.service.spec.ts
|
|
backend/src/modules/crm/__tests__/tags.service.spec.ts
|
|
|
|
# Companies (1)
|
|
backend/src/modules/companies/__tests__/companies.service.spec.ts
|
|
|
|
# Partners (1)
|
|
backend/src/modules/partners/__tests__/ranking.service.spec.ts
|
|
|
|
# System (3)
|
|
backend/src/modules/system/__tests__/activities.service.spec.ts
|
|
backend/src/modules/system/__tests__/messages.service.spec.ts
|
|
backend/src/modules/system/__tests__/notifications.service.spec.ts
|
|
|
|
# Shared (3)
|
|
backend/src/shared/__tests__/base.service.spec.ts
|
|
backend/src/shared/__tests__/cache.service.spec.ts
|
|
backend/src/shared/__tests__/email.service.spec.ts
|
|
```
|
|
|
|
### 8.4 Database - Nuevos Seeds (7 archivos)
|
|
|
|
```
|
|
database/seeds/05-sequences.sql
|
|
database/seeds/06-product-categories.sql
|
|
database/seeds/07-financial-setup.sql
|
|
database/seeds/08-inventory-setup.sql
|
|
database/seeds/09-products.sql
|
|
database/seeds/10-pricelists.sql
|
|
database/seeds/11-sample-partners.sql
|
|
```
|
|
|
|
---
|
|
|
|
## 9. CONCLUSION
|
|
|
|
El proyecto ERP-Core tiene una base solida pero presenta gaps significativos:
|
|
|
|
1. **Backend:** 60.5% de servicios sin tests, 6 TODOs criticos pendientes
|
|
2. **Frontend:** 8 servicios API faltantes para consumir endpoints existentes
|
|
3. **Database:** 85% de tablas sin seeds, modulos completos sin datos iniciales
|
|
4. **E2E:** Sin tests de extremo a extremo
|
|
|
|
**Esfuerzo total estimado:** 220 Story Points
|
|
|
|
**Recomendacion:** Priorizar los 10 GAPS CRITICOS (45 SP) que bloquean funcionalidad core antes de continuar con GAPS de menor prioridad.
|
|
|
|
---
|
|
|
|
**Documento generado por:** ORQUESTADOR (Claude Code Opus 4.5)
|
|
**Sistema:** SIMCO v3.5 + CAPVED
|
|
**Fase:** A (Analisis) - COMPLETADA
|
|
**Siguiente fase:** P (Planeacion)
|