🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
12 KiB
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
- NO crear 12-hr.sql - ya existe completo
- Reutilizar redis.ts - usar redisClient existente
- Verificar 09-system.sql antes de DB-003
Para Orquestacion
- Iniciar con DB-002 (RLS Validation) y BE-001 (Jest Setup) en paralelo
- FE-001 puede iniciar sin dependencias de backend
- 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:
-
Sprint 1 - Semana 1:
- DB-002: RLS Validation (Database Agent)
- BE-001: Jest Setup (Backend Agent)
- FE-001: Catalogs Structure (Frontend Agent)
-
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