erp-core/orchestration/02-planeacion/PLAN-REFINADO-2026-01-06.md
rckrdmrd 4c4e27d9ba feat: Documentation and orchestration updates
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:35:20 -06:00

12 KiB

PLAN REFINADO - FASE 5 (CAPVED)

Fecha: 2026-01-06 Fase: P (Planeacion - Refinamiento) Plan base: PLAN-VALIDACION-DESARROLLO-2026-01-06.md Orquestador: Claude Code - Opus 4.5


RESUMEN DE REFINAMIENTO

Cambios Principales vs Plan Original

Aspecto Plan Original Plan Refinado Impacto
GAP-002 (HR Schema) DB-001 crear schema (8 SP) ELIMINADO - ya existe -8 SP Sprint 1
BE-006 (Permission Cache) Crear config Redis (6 SP) Reducido (4 SP) - config existe -2 SP Sprint 2
Sprint 1 Total 44 SP 36 SP Reduccion 18%
Sprint 2 Total 39 SP 37 SP Reduccion 5%

Hallazgos de Verificacion

1. 12-hr.sql (871 lineas) - COMPLETO

Tablas existentes:
- hr.departments (con RLS)
- hr.job_positions (con RLS)
- hr.employees (50+ columnas, muy completo)
- hr.contracts (con RLS)
- hr.leave_types / hr.leaves (con RLS)
- hr.attendances (COR-026)
- hr.leave_allocations (COR-027)
- hr.work_locations (COR-062)
- hr.skill_types / skills / skill_levels / employee_skills (COR-063)
- hr.expense_sheets / expenses (COR-064)
- hr.employee_resume_lines (COR-065)
- hr.payslip_structures / payslips / payslip_lines (COR-066)

ENUMs: contract_status, contract_type, leave_status, leave_type,
       employee_status, expense_status, resume_line_type, payslip_status

2. redis.ts (179 lineas) - COMPLETO

Funciones disponibles:
- initializeRedis(): Promise<boolean>
- closeRedis(): Promise<void>
- isRedisConnected(): boolean
- blacklistToken(token: string, expiresIn: number): Promise<void>
- isTokenBlacklisted(token: string): Promise<boolean>

// Solo necesario: agregar permission-cache.service.ts

GAPS ACTUALIZADOS

Gaps Cerrados (Ya Implementados)

ID Gap Original Razon de Cierre
GAP-002 HR Schema no existe 12-hr.sql completo (871 lineas, 16+ tablas)

Gaps Vigentes

ID Gap Prioridad Sprint
GAP-001 Tests 0% cobertura P0 1-4
GAP-003 RLS no validado P0 1
GAP-004 Frontend modulos Core Business P0 1-4
GAP-005 OAuth/2FA incompleto P1 3
GAP-006 Email verification flow P1 4
GAP-007 Avatar upload P1 Backlog
GAP-008 Permission cache P1 2 (reducido)

PLAN REFINADO POR SPRINT

SPRINT 1 (Refinado): Database Validation + Tests Setup + Catalogs

Story Points Totales: 36 SP (antes 44 SP)

Database (13 SP)

DB-001: # ELIMINADO - HR Schema ya existe
  status: CERRADO
  razon: "12-hr.sql verificado con 16+ tablas completas"

DB-002: # Sin cambios
  titulo: "Validar RLS Policies existentes"
  sp: 5
  archivos:
    - database/tests/rls-validation.sql
    - database/tests/tenant-isolation.sql

DB-003: # Sin cambios
  titulo: "Implementar system.track_field_changes()"
  sp: 3
  archivos:
    - database/ddl/09-system.sql (modificar)

DB-004: # Sin cambios
  titulo: "Crear seed data para catalogos"
  sp: 5
  archivos:
    - database/seeds/01-countries.sql
    - database/seeds/02-currencies.sql
    - database/seeds/03-states.sql
    - database/seeds/04-uom.sql

Backend (13 SP)

BE-001: # Sin cambios
  titulo: "Setup Jest + Supertest"
  sp: 5
  archivos:
    - backend/jest.config.js
    - backend/tests/setup.ts
    - backend/tests/factories/

BE-002: # Sin cambios
  titulo: "Tests Auth Module (MGN-001)"
  sp: 8
  archivos:
    - backend/src/modules/auth/__tests__/auth.service.spec.ts
    - backend/src/modules/auth/__tests__/auth.controller.spec.ts
    - backend/src/modules/auth/__tests__/auth.integration.spec.ts

Frontend (10 SP)

FE-001: # Sin cambios
  titulo: "Feature Catalogs - Structure"
  sp: 5
  archivos:
    - frontend/src/features/catalogs/

FE-002: # Sin cambios
  titulo: "Countries & States Pages"
  sp: 5
  archivos:
    - frontend/src/pages/catalogs/countries/
    - frontend/src/features/catalogs/components/CountrySelect.tsx

SPRINT 2 (Refinado): Tests Foundation + Catalogs Frontend

Story Points Totales: 37 SP (antes 39 SP)

Backend (17 SP)

BE-003: # Sin cambios
  titulo: "Tests Users Module (MGN-002)"
  sp: 5

BE-004: # Sin cambios
  titulo: "Tests Roles Module (MGN-003)"
  sp: 5

BE-005: # Sin cambios
  titulo: "Tests Tenants Module (MGN-004)"
  sp: 5

BE-006: # REDUCIDO - Redis config ya existe
  titulo: "Implementar Permission Cache Service"
  sp: 4  # Antes: 6 SP
  descripcion_refinada: |
    SOLO necesario crear permission-cache.service.ts
    La configuracion de Redis ya existe en config/redis.ts
    Reutilizar: redisClient, isRedisConnected()    
  archivos:
    - backend/src/modules/auth/services/permission-cache.service.ts
  dependencias_existentes:
    - backend/src/config/redis.ts (YA EXISTE)

Frontend (20 SP)

FE-003: # Sin cambios
  titulo: "Currencies Pages"
  sp: 5

FE-004: # Sin cambios
  titulo: "Units of Measure Pages"
  sp: 5

FE-005: # Sin cambios
  titulo: "Product Categories Pages"
  sp: 8

FE-006: # Movido de Sprint 3
  titulo: "Rutas y navegacion Catalogs"
  sp: 2  # Ajustado: antes 3 SP

SPRINT 3 (Refinado): OAuth + Settings Frontend

Story Points Totales: 36 SP (sin cambios significativos)

Backend (22 SP)

BE-007: # Sin cambios
  titulo: "Tests Financial Module (MGN-010)"
  sp: 8

BE-008: # Sin cambios
  titulo: "Tests Inventory Module (MGN-011)"
  sp: 6

BE-009: # Sin cambios
  titulo: "OAuth2 Integration (Google, Microsoft)"
  sp: 8
  archivos:
    - backend/src/modules/auth/providers/google.provider.ts
    - backend/src/modules/auth/providers/microsoft.provider.ts

Frontend (14 SP)

FE-007: # Sin cambios
  titulo: "Stores Catalogs (Zustand)"
  sp: 3

FE-008: # Sin cambios
  titulo: "Feature Settings - Structure"
  sp: 3

FE-009: # Sin cambios
  titulo: "System Settings Page (Admin)"
  sp: 5

FE-010: # Nuevo agregado
  titulo: "Tenant Settings Page (inicio)"
  sp: 3

SPRINT 4 (Refinado): 2FA + Settings Completion

Story Points Totales: 33 SP (sin cambios)

Backend (12 SP)

BE-010: # Sin cambios
  titulo: "2FA/MFA Implementation"
  sp: 8

BE-011: # Sin cambios
  titulo: "Email Verification Flow"
  sp: 4

Frontend (21 SP)

FE-010: # Continuacion
  titulo: "Tenant Settings Page (completar)"
  sp: 2

FE-011: # Sin cambios
  titulo: "User Preferences Page"
  sp: 5

FE-012: # Sin cambios
  titulo: "Feature Flags Management"
  sp: 5

FE-013: # Sin cambios
  titulo: "Settings Stores (Zustand)"
  sp: 3

FE-014: # Sin cambios
  titulo: "Theme Selector Component"
  sp: 3

FE-015: # Agregado
  titulo: "Tests Frontend (vitest)"
  sp: 3

RESUMEN DE STORY POINTS

Comparacion Original vs Refinado

Sprint Original Refinado Diferencia
Sprint 1 44 SP 36 SP -8 SP (18%)
Sprint 2 39 SP 37 SP -2 SP (5%)
Sprint 3 36 SP 36 SP 0 SP
Sprint 4 33 SP 33 SP 0 SP
Total 152 SP 142 SP -10 SP (7%)

Redistribucion de Tareas

Sprint 1: DATABASE (13) + BACKEND (13) + FRONTEND (10) = 36 SP
Sprint 2: BACKEND (17) + FRONTEND (20) = 37 SP
Sprint 3: BACKEND (22) + FRONTEND (14) = 36 SP
Sprint 4: BACKEND (12) + FRONTEND (21) = 33 SP

DEPENDENCIAS ACTUALIZADAS

Tareas Eliminadas

  • DB-001 (HR Schema): ELIMINADO - ya existe

Tareas Reducidas

  • BE-006: 6 SP -> 4 SP (Redis config existe)

Nueva Tarea Agregada

  • FE-015: Tests Frontend con Vitest (3 SP en Sprint 4)

Grafo de Dependencias Actualizado

graph TD
    subgraph Database
        DB002[RLS Validation] --> DB003[track_field_changes]
        DB003 --> DB004[Seed Data]
    end

    subgraph Backend
        BE001[Jest Setup] --> BE002[Auth Tests]
        BE001 --> BE003[Users Tests]
        BE001 --> BE004[Roles Tests]
        BE001 --> BE005[Tenants Tests]
        BE002 --> BE006[Permission Cache]
        BE002 --> BE007[Financial Tests]
        BE002 --> BE008[Inventory Tests]
        BE006 --> BE009[OAuth]
        BE009 --> BE010[2FA]
        BE010 --> BE011[Email Verification]
    end

    subgraph Frontend
        FE001[Catalogs Structure] --> FE002[Countries]
        FE001 --> FE003[Currencies]
        FE001 --> FE004[UoM]
        FE001 --> FE005[Categories]
        FE002 --> FE006[Routes]
        FE003 --> FE006
        FE004 --> FE006
        FE005 --> FE006
        FE001 --> FE007[Stores]
        FE008[Settings Structure] --> FE009[System]
        FE008 --> FE010[Tenant]
        FE008 --> FE011[User Prefs]
        FE008 --> FE012[Feature Flags]
        FE008 --> FE013[Settings Stores]
    end

    DB002 -.-> BE005
    BE002 -.-> FE001

ARCHIVOS A VERIFICAR ANTES DE EJECUCION

Ya Verificados (EXISTEN y COMPLETOS)

Archivo Lineas Estado
database/ddl/12-hr.sql 871 COMPLETO
backend/src/config/redis.ts 179 COMPLETO

A Verificar (Antes de Sprint 1)

Archivo Verificacion Requerida
database/ddl/09-system.sql Existe track_field_changes()?
backend/package.json jest, supertest instalados?
frontend/package.json vitest instalado?

CRITERIOS DE ACEPTACION POR SPRINT

Sprint 1 Success Criteria (Refinado)

  • RLS tests creados y pasando (10+ casos)
  • Jest configurado y primer test pasando
  • Auth tests: >80% cobertura modulo auth
  • Seed data idempotente (paises, monedas, uom)
  • Feature catalogs estructura creada
  • Countries CRUD funcional

Sprint 2 Success Criteria

  • Foundation tests: >80% cobertura (Users, Roles, Tenants)
  • Permission cache: <5ms lookup
  • Catalogs module 100% funcional (4 paginas CRUD)
  • Routes de catalogs integradas

Sprint 3 Success Criteria

  • OAuth Google/Microsoft funcional
  • Financial tests: >60% cobertura
  • Inventory tests: >60% cobertura
  • Settings structure completa
  • System settings funcional

Sprint 4 Success Criteria

  • 2FA TOTP funcional con backup codes
  • Email verification funcional
  • Settings module 100% funcional
  • Theme selector integrado
  • Frontend tests basicos con Vitest

RECOMENDACIONES FINALES

Para Ejecucion Inmediata

  1. NO crear 12-hr.sql - ya existe completo
  2. Reutilizar redis.ts - usar redisClient existente
  3. Verificar 09-system.sql antes de DB-003

Para Orquestacion

  1. Iniciar con DB-002 (RLS Validation) y BE-001 (Jest Setup) en paralelo
  2. FE-001 puede iniciar sin dependencias de backend
  3. Permission cache (BE-006) usar import desde config/redis.ts

Riesgos Mitigados

  • HR Schema existente elimina riesgo de integracion
  • Redis config existente reduce complejidad de BE-006
  • Sprints mas balanceados mejoran predictibilidad

APROBACION

Aspecto Status
Hallazgos verificados SI
Gaps actualizados SI
SP recalculados SI
Dependencias actualizadas SI
Plan refinado listo para FASE 6 SI

Documento generado por: ORQUESTADOR (Claude Code Opus 4.5) Sistema: SIMCO + CAPVED Fase actual: P (Planeacion - Refinamiento) - COMPLETADA Proxima fase: FASE 6 - Ejecucion


SIGUIENTE PASO

Proceder con FASE 6: Ejecucion siguiendo el orden:

  1. Sprint 1 - Semana 1:

    • DB-002: RLS Validation (Database Agent)
    • BE-001: Jest Setup (Backend Agent)
    • FE-001: Catalogs Structure (Frontend Agent)
  2. Sprint 1 - Semana 2:

    • DB-003 + DB-004 (Database Agent)
    • BE-002: Auth Tests (Backend Agent)
    • FE-002: Countries Pages (Frontend Agent)

Perfiles de agentes requeridos:

  • PERFIL-DATABASE.md
  • PERFIL-BACKEND-EXPRESS.md
  • PERFIL-FRONTEND.md