ANALISIS DETALLADO - FASE 1 (CAPVED)
Fecha: 2026-01-10
Plan Base: PLAN-VALIDACION-DESARROLLO-2026-01-06.md
Plan Refinado: PLAN-REFINADO-2026-01-06.md
Fase CAPVED: A (Analisis Detallado)
Orquestador: Claude Code - Opus 4.5
RESUMEN EJECUTIVO
Este documento consolida el analisis detallado realizado sobre el plan de validacion y desarrollo de ERP-Core, incluyendo verificacion de archivos existentes, estado real de implementacion, y hallazgos criticos que impactan la planificacion.
Hallazgos Clave
| Aspecto |
Estado Plan Original |
Estado Real Verificado |
Impacto |
| HR Schema (12-hr.sql) |
Por crear (8 SP) |
YA EXISTE (870 lineas) |
-8 SP |
| track_field_changes() |
Por crear (3 SP) |
YA EXISTE en 09-system.sql |
-3 SP |
| Jest + Supertest |
Por instalar (parte de 5 SP) |
YA INSTALADOS |
Reduce BE-001 |
| Vitest |
Por instalar (3 SP) |
YA INSTALADO |
-3 SP |
| database/tests/ |
Por crear |
YA EXISTE (3 archivos) |
Reduce DB-002 |
| database/seeds/ |
Por crear |
YA EXISTE (8 archivos) |
Reduce DB-004 |
| Redis config |
Por verificar |
COMPLETO (179 lineas) |
Reduce BE-006 |
1. ESTADO DEL PROYECTO ERP-CORE
1.1 Metricas Actuales
backend:
entidades_typeorm: 46
endpoints_implementados: 398
lineas_codigo: ~10,500+
modulos_foundation: 85%+ implementado
modulos_core_business: 40-75% implementado
tests_instalados: SI (Jest 29.7.0 + Supertest 7.0.0)
tests_cobertura: 0% (archivos de test no creados)
database:
schemas: 8 (auth, core, analytics, financial, inventory, purchase, sales, projects)
tablas: 100+
funciones: 40+ (incluyendo track_field_changes())
triggers: 30+
rls_policies: 40+
hr_schema: EXISTE (870 lineas, 19+ tablas)
tests_sql: EXISTEN (3 archivos)
seeds: EXISTEN (8 archivos)
frontend:
features_completas: 4/15 (users, companies, partners, tenants)
paginas: 21
componentes_compartidos: 23
stores_zustand: 4
modulos_placeholder: 11
tests_instalados: SI (Vitest 2.1.5 + Playwright 1.57.0)
documentacion:
total_archivos: 834+
epicas: 23/23 (100%)
gaps_p0: 18/18 documentados (100%)
gaps_p1: 22/22 documentados (100%)
cobertura_odoo: 99%
1.2 Estructura de Directorios Verificada
/projects/erp-core/
├── backend/
│ ├── package.json # Jest, Supertest YA INSTALADOS
│ ├── jest.config.js # VERIFICAR SI EXISTE CONFIG
│ ├── src/
│ │ ├── config/
│ │ │ └── redis.ts # EXISTE (179 lineas, completo)
│ │ ├── modules/
│ │ │ ├── auth/ # Sin __tests__/
│ │ │ ├── users/ # Sin __tests__/
│ │ │ ├── roles/ # Sin __tests__/
│ │ │ └── tenants/ # Sin __tests__/
│ │ └── shared/
│ └── tests/ # VERIFICAR ESTRUCTURA
│
├── database/
│ ├── ddl/
│ │ ├── 09-system.sql # track_field_changes() EXISTE
│ │ └── 12-hr.sql # EXISTE (870 lineas, 19+ tablas)
│ ├── tests/ # EXISTE
│ │ ├── rls-validation.sql
│ │ ├── tenant-isolation.sql
│ │ └── sql-functions.sql
│ └── seeds/ # EXISTE
│ ├── dev/ # 7 archivos
│ └── test/ # 1 archivo (fixtures.sql)
│
├── frontend/
│ ├── package.json # Vitest, Playwright YA INSTALADOS
│ └── src/
│ ├── features/
│ │ ├── users/ # COMPLETO
│ │ ├── companies/ # COMPLETO
│ │ ├── partners/ # COMPLETO
│ │ ├── tenants/ # COMPLETO
│ │ ├── catalogs/ # NO EXISTE (por crear)
│ │ └── settings/ # NO EXISTE (por crear)
│ └── pages/
│ └── catalogs/ # NO EXISTE (por crear)
│
└── orchestration/
├── 01-analisis/
├── 02-planeacion/
└── ...
2. GAPS VIGENTES Y ESTADO
2.1 Gaps P0 - Estado Actual
| ID |
Gap |
Estado Documentacion |
Estado Implementacion |
Accion Requerida |
| GAP-001 |
Tests 0% cobertura |
DOCUMENTADO |
Framework instalado, tests NO creados |
Crear tests |
| GAP-002 |
HR Schema no existe |
CERRADO |
12-hr.sql EXISTE (870 lineas) |
NINGUNA |
| GAP-003 |
RLS no validado |
DOCUMENTADO |
Tests SQL EXISTEN |
Ejecutar/validar tests |
| GAP-004 |
Frontend modulos Core Business |
DOCUMENTADO |
4/15 features completas |
Crear modulos faltantes |
2.2 Gaps P1 - Estado Actual
| ID |
Gap |
Estado Documentacion |
Estado Implementacion |
Accion Requerida |
| GAP-005 |
OAuth/2FA incompleto |
DOCUMENTADO |
Providers NO creados |
Implementar |
| GAP-006 |
Email verification flow |
DOCUMENTADO |
NO implementado |
Implementar |
| GAP-007 |
Avatar upload |
DOCUMENTADO |
Backlog |
Diferido |
| GAP-008 |
Permission cache |
DOCUMENTADO |
Redis config EXISTE |
Crear servicio cache |
2.3 Gaps CERRADOS (Verificados)
| ID |
Gap Original |
Razon de Cierre |
Verificacion |
| GAP-002 |
HR Schema no existe |
12-hr.sql EXISTE con 870 lineas, 19+ tablas |
ls -la database/ddl/12-hr.sql |
| DB-003 |
track_field_changes() falta |
EXISTE en 09-system.sql lineas 681-773 |
grep track_field_changes 09-system.sql |
3. TAREAS DEL PLAN - ESTADO VERIFICADO
3.1 Sprint 1 - Database (13 SP Original -> 2 SP Real)
| Tarea |
SP Original |
Estado Real |
SP Ajustado |
Notas |
| DB-001: HR Schema |
8 |
COMPLETADO |
0 |
12-hr.sql existe (870 lineas) |
| DB-002: RLS Validation |
5 |
PARCIAL |
2 |
Tests SQL existen, falta ejecucion |
| DB-003: track_field_changes() |
3 |
COMPLETADO |
0 |
Existe en 09-system.sql |
| DB-004: Seed data |
5 |
COMPLETADO |
0 |
8 archivos seeds existen |
| SUBTOTAL |
21 |
- |
2 |
Reduccion: 90% |
3.2 Sprint 1 - Backend (13 SP Original -> 10 SP Real)
| Tarea |
SP Original |
Estado Real |
SP Ajustado |
Notas |
| BE-001: Jest Setup |
5 |
PARCIAL |
2 |
Jest instalado, falta jest.config.js |
| BE-002: Auth Tests |
8 |
PENDIENTE |
8 |
Tests por crear |
| SUBTOTAL |
13 |
- |
10 |
Reduccion: 23% |
3.3 Sprint 1 - Frontend (10 SP Original -> Sin cambios)
| Tarea |
SP Original |
Estado Real |
SP Ajustado |
Notas |
| FE-001: Catalogs Structure |
5 |
PENDIENTE |
5 |
Por crear |
| FE-002: Countries Pages |
5 |
PENDIENTE |
5 |
Por crear |
| SUBTOTAL |
10 |
- |
10 |
Sin cambios |
3.4 Sprint 2 - Backend (17 SP Original -> 13 SP Real)
| Tarea |
SP Original |
Estado Real |
SP Ajustado |
Notas |
| BE-003: Users Tests |
5 |
PENDIENTE |
5 |
Por crear |
| BE-004: Roles Tests |
5 |
PENDIENTE |
5 |
Por crear |
| BE-005: Tenants Tests |
5 |
PENDIENTE |
5 |
Por crear |
| BE-006: Permission Cache |
6/4 |
PARCIAL |
2 |
Redis config existe, solo crear servicio |
| SUBTOTAL |
17 |
- |
17 |
Sin cambios |
3.5 Sprint 2 - Frontend (20 SP Original -> 17 SP Real)
| Tarea |
SP Original |
Estado Real |
SP Ajustado |
Notas |
| FE-003: Currencies Pages |
5 |
PENDIENTE |
5 |
Por crear |
| FE-004: UoM Pages |
5 |
PENDIENTE |
5 |
Por crear |
| FE-005: Categories Pages |
8 |
PENDIENTE |
8 |
Por crear |
| FE-006: Routes Catalogs |
3/2 |
PENDIENTE |
2 |
Por crear (estimacion ajustada) |
| SUBTOTAL |
20 |
- |
20 |
Sin cambios |
3.6 Sprint 3 - Sin cambios significativos
| Capa |
SP Original |
SP Ajustado |
| Backend |
22 |
22 |
| Frontend |
14 |
14 |
| TOTAL |
36 |
36 |
3.7 Sprint 4 - Ajustes menores
| Tarea |
SP Original |
Estado Real |
SP Ajustado |
Notas |
| BE-010: 2FA Implementation |
8 |
PENDIENTE |
8 |
Por crear |
| BE-011: Email Verification |
4 |
PENDIENTE |
4 |
Por crear |
| FE-010: Tenant Settings |
2 |
PENDIENTE |
2 |
Por crear |
| FE-011: User Preferences |
5 |
PENDIENTE |
5 |
Por crear |
| FE-012: Feature Flags |
5 |
PENDIENTE |
5 |
Por crear |
| FE-013: Settings Stores |
3 |
PENDIENTE |
3 |
Por crear |
| FE-014: Theme Selector |
3 |
PENDIENTE |
3 |
Por crear |
| FE-015: Frontend Tests |
3 |
PARCIAL |
1 |
Vitest instalado, config existe |
| SUBTOTAL |
33 |
- |
31 |
Reduccion: 6% |
4. RESUMEN DE STORY POINTS
4.1 Comparativa Original vs Ajustado
| Sprint |
SP Original |
SP Refinado (Plan) |
SP Real Verificado |
Delta |
| Sprint 1 |
44 |
36 |
22 |
-14 (-39%) |
| Sprint 2 |
39 |
37 |
37 |
0 |
| Sprint 3 |
36 |
36 |
36 |
0 |
| Sprint 4 |
33 |
33 |
31 |
-2 (-6%) |
| TOTAL |
152 |
142 |
126 |
-16 (-11%) |
4.2 Distribucion por Capa (Ajustado)
Sprint 1: DATABASE (2) + BACKEND (10) + FRONTEND (10) = 22 SP
Sprint 2: BACKEND (17) + FRONTEND (20) = 37 SP
Sprint 3: BACKEND (22) + FRONTEND (14) = 36 SP
Sprint 4: BACKEND (12) + FRONTEND (19) = 31 SP
TOTAL: 126 SP (reduccion de 26 SP vs plan original)
5. DEPENDENCIAS CRITICAS VERIFICADAS
5.1 Archivos de Base (YA EXISTEN - No modificar)
| Archivo |
Lineas |
Estado |
Impacto |
database/ddl/12-hr.sql |
870 |
COMPLETO |
HR Schema listo |
database/ddl/09-system.sql |
~1000 |
COMPLETO |
track_field_changes() listo |
backend/src/config/redis.ts |
179 |
COMPLETO |
Redis client listo |
database/tests/*.sql |
3 archivos |
EXISTEN |
Tests RLS listos |
database/seeds/**/*.sql |
8 archivos |
EXISTEN |
Seeds listos |
5.2 Archivos Por Crear (Nuevos)
| Sprint |
Archivo |
Tipo |
Dependencias |
| 1 |
backend/jest.config.js |
Config |
package.json |
| 1 |
backend/tests/setup.ts |
Setup |
jest.config.js |
| 1 |
backend/src/modules/auth/__tests__/*.ts |
Tests |
setup.ts |
| 1 |
frontend/src/features/catalogs/** |
Feature |
Ninguna |
| 1 |
frontend/src/pages/catalogs/** |
Pages |
catalogs feature |
| 2 |
backend/src/modules/users/__tests__/*.ts |
Tests |
setup.ts |
| 2 |
backend/src/modules/roles/__tests__/*.ts |
Tests |
setup.ts |
| 2 |
backend/src/modules/tenants/__tests__/*.ts |
Tests |
setup.ts |
| 2 |
backend/src/modules/auth/services/permission-cache.service.ts |
Service |
redis.ts |
| 3 |
backend/src/modules/auth/providers/google.provider.ts |
Provider |
Ninguna |
| 3 |
backend/src/modules/auth/providers/microsoft.provider.ts |
Provider |
Ninguna |
| 4 |
backend/src/modules/auth/services/mfa.service.ts |
Service |
Ninguna |
| 4 |
backend/src/modules/auth/services/email-verification.service.ts |
Service |
email.service.ts |
5.3 Archivos Por Modificar
| Sprint |
Archivo |
Modificacion |
Impacto |
| 1 |
frontend/src/app/router/routes.tsx |
Agregar rutas catalogs |
BAJO |
| 2 |
frontend/src/app/router/routes.tsx |
Completar rutas catalogs |
BAJO |
| 3 |
backend/src/modules/auth/auth.routes.ts |
Agregar rutas OAuth |
MEDIO |
| 3 |
backend/src/modules/auth/auth.controller.ts |
Agregar endpoints OAuth |
MEDIO |
| 4 |
backend/src/modules/auth/auth.routes.ts |
Agregar rutas MFA |
MEDIO |
| 4 |
backend/src/modules/auth/auth.controller.ts |
Agregar endpoints MFA |
MEDIO |
6. RIESGOS Y MITIGACIONES ACTUALIZADOS
| Riesgo |
Probabilidad |
Impacto |
Mitigacion |
Estado |
| Tests setup complejo |
BAJA |
Alto |
Jest ya instalado |
MITIGADO |
| HR Schema incompleto |
ELIMINADO |
- |
Ya existe completo |
N/A |
| Redis no disponible |
BAJA |
Medio |
Config existe con fallback |
MITIGADO |
| RLS performance issues |
MEDIA |
Alto |
Tests SQL existen |
Ejecutar tests |
| OAuth providers cambios API |
BAJA |
Medio |
Usar SDKs oficiales |
Pendiente |
| Frontend scope creep |
ALTA |
Medio |
Ceñirse a specs documentadas |
Vigilar |
7. ARCHIVOS DEL HR SCHEMA VERIFICADO
7.1 Tablas en 12-hr.sql (19 tablas)
-- Estructura organizacional
hr.departments -- Departamentos
hr.job_positions -- Puestos de trabajo
-- Empleados y contratos
hr.employees -- Empleados (50+ columnas)
hr.contracts -- Contratos laborales
-- Ausencias
hr.leave_types -- Tipos de ausencia
hr.leaves -- Solicitudes de ausencia
hr.leave_allocations -- Asignaciones de dias
-- Asistencia
hr.attendances -- Control de asistencia (COR-026)
-- Skills
hr.skill_types -- Tipos de habilidades
hr.skills -- Habilidades
hr.skill_levels -- Niveles de competencia
hr.employee_skills -- Asignacion a empleados
-- Gastos
hr.expense_sheets -- Reportes de gastos (COR-064)
hr.expenses -- Lineas de gastos
-- CV/Resume
hr.employee_resume_lines -- Historial (COR-065)
-- Ubicaciones
hr.work_locations -- Ubicaciones de trabajo (COR-062)
-- Nomina
hr.payslip_structures -- Estructuras de nomina (COR-066)
hr.payslips -- Nominas
hr.payslip_lines -- Lineas de nomina
7.2 ENUMs Definidos
hr.contract_status -- Estados de contratos
hr.contract_type -- Tipos de contrato
hr.leave_status -- Estados de ausencias
hr.leave_type -- Tipos de ausencia
hr.employee_status -- Estados de empleado
hr.expense_status -- Estados de gastos
hr.resume_line_type -- Tipos de linea de CV
hr.payslip_status -- Estados de nomina
7.3 Funciones SQL
hr.calculate_worked_hours() -- Calculo automatico de horas
8. RECOMENDACIONES PARA FASE 2 (PLANEACION)
8.1 Ajustes Recomendados al Plan
-
Eliminar tareas completadas:
- DB-001 (HR Schema) - YA EXISTE
- DB-003 (track_field_changes) - YA EXISTE
- DB-004 (Seeds) - YA EXISTEN (revisar si necesitan actualizacion)
-
Reducir estimaciones:
- BE-001: De 5 SP a 2 SP (Jest instalado, solo config)
- BE-006: De 4 SP a 2 SP (Redis config existe)
- FE-015: De 3 SP a 1 SP (Vitest instalado)
-
Reordenar prioridades:
- Ejecutar DB-002 (RLS Validation) primero para validar seguridad
- Crear tests de auth antes de otros modulos (base de todo)
8.2 Nuevos Puntos de Verificacion
Antes de cada sprint, verificar:
| Checkpoint |
Comando de Verificacion |
| Jest config existe |
ls backend/jest.config.js |
| Tests auth existen |
ls backend/src/modules/auth/__tests__/ |
| Catalogs feature existe |
ls frontend/src/features/catalogs/ |
| RLS tests pasando |
psql -f database/tests/rls-validation.sql |
8.3 Orden de Ejecucion Recomendado
SPRINT 1 (Semana 1):
PARALELO:
- DB-002: Ejecutar RLS validation tests (Database Agent)
- BE-001: Crear jest.config.js y setup.ts (Backend Agent)
- FE-001: Crear catalogs feature structure (Frontend Agent)
SPRINT 1 (Semana 2):
SECUENCIAL:
- BE-002: Auth tests (depende de BE-001)
- FE-002: Countries pages (depende de FE-001)
9. METRICAS DE EXITO AJUSTADAS
9.1 Sprint 1 (22 SP)
criterios:
database:
- RLS tests ejecutados y pasando (100%)
backend:
- jest.config.js creado y funcional
- Auth tests: >80% cobertura del modulo
- Primer test pasando: SI
frontend:
- Catalogs feature structure creada
- Countries CRUD funcional
validacion:
- npm test (backend) - sin errores
- npm run test (frontend) - sin errores
- psql -f rls-validation.sql - todos pasando
9.2 Sprint 2 (37 SP)
criterios:
backend:
- Users, Roles, Tenants tests: >80% cobertura cada uno
- Permission cache: <5ms lookup
frontend:
- Catalogs module 100% funcional
- 4 nuevas paginas CRUD
- Rutas integradas en router
10. CONCLUSION
10.1 Hallazgos Principales
- Reduccion significativa de esfuerzo: 26 SP menos que el plan original (17%)
- HR Schema completo: 870 lineas, 19+ tablas - no requiere trabajo adicional
- Infraestructura de testing lista: Jest, Supertest, Vitest, Playwright instalados
- track_field_changes() implementado: Patron mail.thread listo para usar
- Seeds y tests SQL existentes: Base para validacion de RLS
10.2 Riesgos Mitigados
- Jest/Supertest setup: Framework instalado
- HR Schema: Ya existe completo
- Redis: Configuracion lista con fallback
- Seeds: Datos de desarrollo disponibles
10.3 Siguiente Paso
Proceder con FASE 2: Planeacion usando estos hallazgos para crear un plan ajustado con:
- Tareas eliminadas (ya completadas)
- Estimaciones reducidas
- Dependencias actualizadas
- Checkpoints de verificacion
Documento generado por: ORQUESTADOR (Claude Code Opus 4.5)
Sistema: SIMCO + CAPVED
Fase actual: A (Analisis Detallado) - EN PROGRESO
Proxima fase: FASE 2 - Planeacion Basada en Analisis
ANEXO A: COMANDOS DE VERIFICACION
# Verificar HR Schema
wc -l /projects/erp-core/database/ddl/12-hr.sql
grep -c "CREATE TABLE" /projects/erp-core/database/ddl/12-hr.sql
# Verificar track_field_changes
grep -n "track_field_changes" /projects/erp-core/database/ddl/09-system.sql
# Verificar Jest instalado
grep -A1 '"jest"' /projects/erp-core/backend/package.json
# Verificar Vitest instalado
grep -A1 '"vitest"' /projects/erp-core/frontend/package.json
# Verificar Redis config
wc -l /projects/erp-core/backend/src/config/redis.ts
# Listar tests SQL
ls -la /projects/erp-core/database/tests/
# Listar seeds
find /projects/erp-core/database/seeds -name "*.sql" | wc -l