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

474 lines
12 KiB
Markdown

# 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**
```typescript
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)
```yaml
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)
```yaml
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)
```yaml
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)
```yaml
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)
```yaml
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)
```yaml
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)
```yaml
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)
```yaml
BE-010: # Sin cambios
titulo: "2FA/MFA Implementation"
sp: 8
BE-011: # Sin cambios
titulo: "Email Verification Flow"
sp: 4
```
#### Frontend (21 SP)
```yaml
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
```mermaid
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