# PLAN AJUSTADO - FASE 2 (CAPVED)

**Fecha:** 2026-01-10
**Basado en:** `ANALISIS-DETALLADO-FASE1-2026-01-10.md`
**Plan Original:** `PLAN-VALIDACION-DESARROLLO-2026-01-06.md`
**Fase CAPVED:** P (Planeacion)
**Orquestador:** Claude Code - Opus 4.5

---

## RESUMEN EJECUTIVO

Plan ajustado basado en verificacion real de archivos existentes. Se reducen 26 SP del total original debido a tareas ya completadas.

### Comparativa de Story Points

| Sprint | Original | Refinado Anterior | **Ajustado** | Delta vs Original |
|--------|----------|------------------|--------------|-------------------|
| Sprint 1 | 44 SP | 36 SP | **22 SP** | -22 SP (-50%) |
| Sprint 2 | 39 SP | 37 SP | **37 SP** | -2 SP (-5%) |
| Sprint 3 | 36 SP | 36 SP | **36 SP** | 0 SP |
| Sprint 4 | 33 SP | 33 SP | **31 SP** | -2 SP (-6%) |
| **TOTAL** | **152 SP** | **142 SP** | **126 SP** | **-26 SP (-17%)** |

---

## 1. TAREAS ELIMINADAS (YA COMPLETADAS)

Las siguientes tareas del plan original NO requieren trabajo:

| Tarea ID | Titulo | SP Eliminados | Razon |
|----------|--------|---------------|-------|
| DB-001 | Crear HR Schema | 8 SP | `12-hr.sql` existe (870 lineas, 19+ tablas) |
| DB-003 | track_field_changes() | 3 SP | Existe en `09-system.sql` (lineas 681-773) |
| DB-004 | Crear seed data | 5 SP | 8 archivos seeds existen en `database/seeds/` |
| **TOTAL ELIMINADO** | - | **16 SP** | - |

---

## 2. TAREAS REDUCIDAS

| Tarea ID | Titulo | SP Original | SP Ajustado | Razon |
|----------|--------|-------------|-------------|-------|
| BE-001 | Jest Setup | 5 SP | 2 SP | Jest/Supertest instalados, solo config |
| BE-006 | Permission Cache | 4 SP | 2 SP | Redis config existe y completo |
| DB-002 | RLS Validation | 5 SP | 2 SP | Tests SQL ya existen, solo ejecutar |
| FE-015 | Frontend Tests | 3 SP | 1 SP | Vitest/Playwright instalados |
| **TOTAL REDUCIDO** | - | **17 SP** | **7 SP** | **-10 SP** |

---

## 3. PLAN DETALLADO POR SPRINT

### 3.1 SPRINT 1: Foundation - Tests Setup + Catalogs Inicio

**Duracion:** 2 semanas
**Story Points:** 22 SP (antes 44 SP)
**Objetivo:** Validar seguridad, configurar tests, iniciar frontend catalogs

#### Database (2 SP)

```yaml
DB-002:
  titulo: "Ejecutar y validar RLS Tests"
  sp: 2
  estado: AJUSTADO (antes 5 SP)
  descripcion: |
    Los tests SQL ya existen en database/tests/:
    - rls-validation.sql
    - tenant-isolation.sql
    - sql-functions.sql

    Trabajo requerido:
    - Ejecutar tests en ambiente de desarrollo
    - Verificar que todos pasen
    - Documentar resultados
    - Crear reporte de cobertura RLS

  archivos_existentes:
    - database/tests/rls-validation.sql
    - database/tests/tenant-isolation.sql
    - database/tests/sql-functions.sql

  archivos_a_crear:
    - database/tests/REPORTE-RLS-2026-01.md

  criterios_aceptacion:
    - 100% tests RLS pasando
    - Tenant isolation verificado
    - Documentacion de resultados

  perfil: PERFIL-DATABASE.md
  dependencias: []
```

#### Backend (10 SP)

```yaml
BE-001:
  titulo: "Configurar Jest y crear setup base"
  sp: 2
  estado: AJUSTADO (antes 5 SP)
  descripcion: |
    Jest y Supertest ya estan instalados en package.json.

    Trabajo requerido:
    - Crear/verificar jest.config.js
    - Crear tests/setup.ts con configuracion de DB de test
    - Crear factories basicas (user, tenant)

  archivos_existentes:
    - backend/package.json (jest: ^29.7.0, supertest: ^7.0.0)

  archivos_a_crear:
    - backend/jest.config.js
    - backend/tests/setup.ts
    - backend/tests/factories/user.factory.ts
    - backend/tests/factories/tenant.factory.ts
    - backend/tests/utils/test-helpers.ts

  criterios_aceptacion:
    - npm test ejecuta sin errores
    - DB de test se crea/destruye correctamente
    - Factories generan datos validos

  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: []

BE-002:
  titulo: "Tests Auth Module"
  sp: 8
  estado: SIN CAMBIOS
  descripcion: |
    Crear suite completa de tests para modulo auth:
    - Unit tests para services
    - Integration tests para controllers
    - E2E tests para flujos completos

  archivos_a_crear:
    - 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
    - backend/src/modules/auth/__tests__/token.service.spec.ts

  casos_de_prueba:
    login:
      - happy path (email + password validos)
      - invalid email format
      - wrong password
      - rate limiting (5 intentos)
      - locked account
    register:
      - success
      - duplicate email
      - weak password
      - invalid tenant
    refresh_token:
      - valid refresh
      - expired token
      - revoked token
    logout:
      - single session
      - all sessions
    change_password:
      - success
      - wrong current password
      - weak new password

  cobertura_target: ">80%"
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: [BE-001]
```

#### Frontend (10 SP)

```yaml
FE-001:
  titulo: "Feature Catalogs - Estructura"
  sp: 5
  estado: SIN CAMBIOS
  descripcion: |
    Crear estructura completa del feature catalogs siguiendo patron FSD.

  archivos_a_crear:
    - frontend/src/features/catalogs/index.ts
    - frontend/src/features/catalogs/api/catalogs.api.ts
    - frontend/src/features/catalogs/types/catalog.types.ts
    - frontend/src/features/catalogs/hooks/useCountries.ts
    - frontend/src/features/catalogs/hooks/useCurrencies.ts
    - frontend/src/features/catalogs/hooks/useUom.ts
    - frontend/src/features/catalogs/hooks/useCategories.ts
    - frontend/src/features/catalogs/components/CountrySelect.tsx
    - frontend/src/features/catalogs/components/CurrencySelect.tsx
    - frontend/src/features/catalogs/components/UomSelect.tsx

  patron_a_seguir: "features/users/ (estructura existente)"
  perfil: PERFIL-FRONTEND.md
  dependencias: []

FE-002:
  titulo: "Countries & States Pages"
  sp: 5
  estado: SIN CAMBIOS
  descripcion: |
    CRUD completo para paises y estados.

  archivos_a_crear:
    - frontend/src/pages/catalogs/countries/CountriesListPage.tsx
    - frontend/src/pages/catalogs/countries/CountryDetailPage.tsx
    - frontend/src/pages/catalogs/countries/CountryFormPage.tsx
    - frontend/src/pages/catalogs/states/StatesByCountryPage.tsx
    - frontend/src/features/catalogs/components/CountryForm.tsx
    - frontend/src/features/catalogs/components/StateForm.tsx

  funcionalidades:
    - Lista de paises con busqueda y paginacion
    - Detalle de pais con estados
    - Crear/editar pais
    - CRUD estados por pais

  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-001]
```

#### Resumen Sprint 1

| Capa | Tareas | SP |
|------|--------|-----|
| Database | DB-002 | 2 |
| Backend | BE-001, BE-002 | 10 |
| Frontend | FE-001, FE-002 | 10 |
| **TOTAL** | **5 tareas** | **22 SP** |

---

### 3.2 SPRINT 2: Tests Foundation + Catalogs Frontend

**Duracion:** 2 semanas
**Story Points:** 37 SP
**Objetivo:** Completar tests foundation, terminar catalogs frontend

#### Backend (17 SP)

```yaml
BE-003:
  titulo: "Tests Users Module"
  sp: 5
  descripcion: |
    18+ test cases para modulo users
  archivos_a_crear:
    - backend/src/modules/users/__tests__/users.service.spec.ts
    - backend/src/modules/users/__tests__/users.controller.spec.ts
  casos_de_prueba:
    - CRUD operations (create, read, update, delete)
    - Search with filters
    - Pagination
    - Role assignment
    - Activate/deactivate user
    - Multi-tenant isolation
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: [BE-001]

BE-004:
  titulo: "Tests Roles Module"
  sp: 5
  descripcion: |
    15+ test cases para modulo roles
  archivos_a_crear:
    - backend/src/modules/roles/__tests__/roles.service.spec.ts
    - backend/src/modules/roles/__tests__/roles.controller.spec.ts
  casos_de_prueba:
    - CRUD roles
    - Permission assignment
    - System role protection (no delete/modify)
    - Role hierarchy
    - Permission validation
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: [BE-001]

BE-005:
  titulo: "Tests Tenants Module"
  sp: 5
  descripcion: |
    12+ test cases para modulo tenants
  archivos_a_crear:
    - backend/src/modules/tenants/__tests__/tenants.service.spec.ts
    - backend/src/modules/tenants/__tests__/tenants.controller.spec.ts
  casos_de_prueba:
    - Tenant creation/update
    - Feature flags per tenant
    - Plan limits validation
    - Tenant isolation
    - Settings management
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: [BE-001]

BE-006:
  titulo: "Permission Cache Service"
  sp: 2
  estado: AJUSTADO (antes 4-6 SP)
  descripcion: |
    Redis config ya existe y esta completo.
    Solo crear servicio de cache de permisos.
  archivos_existentes:
    - backend/src/config/redis.ts (179 lineas, redisClient, blacklistToken, etc.)
  archivos_a_crear:
    - backend/src/modules/auth/services/permission-cache.service.ts
  funcionalidades:
    - Cache de permisos por usuario (key: user:{id}:permissions)
    - TTL: 1 hora
    - Invalidacion en cambio de rol
    - Fallback a DB si Redis no disponible
  target_performance: "<5ms lookup"
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: []
```

#### Frontend (20 SP)

```yaml
FE-003:
  titulo: "Currencies Pages"
  sp: 5
  archivos_a_crear:
    - frontend/src/pages/catalogs/currencies/CurrenciesListPage.tsx
    - frontend/src/pages/catalogs/currencies/CurrencyFormPage.tsx
    - frontend/src/pages/catalogs/currencies/ExchangeRatesPage.tsx
    - frontend/src/features/catalogs/components/CurrencyForm.tsx
    - frontend/src/features/catalogs/components/ExchangeRateForm.tsx
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-001]

FE-004:
  titulo: "Units of Measure Pages"
  sp: 5
  archivos_a_crear:
    - frontend/src/pages/catalogs/uom/UomCategoriesListPage.tsx
    - frontend/src/pages/catalogs/uom/UomListPage.tsx
    - frontend/src/features/catalogs/components/UomCategoryForm.tsx
    - frontend/src/features/catalogs/components/UomForm.tsx
    - frontend/src/features/catalogs/components/UomSelect.tsx
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-001]

FE-005:
  titulo: "Product Categories Pages"
  sp: 8
  archivos_a_crear:
    - frontend/src/pages/catalogs/categories/CategoriesTreePage.tsx
    - frontend/src/pages/catalogs/categories/CategoryFormPage.tsx
    - frontend/src/features/catalogs/components/CategoryTree.tsx
    - frontend/src/features/catalogs/components/CategoryForm.tsx
    - frontend/src/features/catalogs/hooks/useCategoryTree.ts
  funcionalidades:
    - Vista de arbol expandible
    - Drag & drop para reorganizar
    - CRUD con jerarquia
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-001]

FE-006:
  titulo: "Rutas y navegacion Catalogs"
  sp: 2
  archivos_a_modificar:
    - frontend/src/app/router/routes.tsx
  rutas_a_agregar:
    - /catalogs
    - /catalogs/countries
    - /catalogs/countries/:id
    - /catalogs/currencies
    - /catalogs/currencies/:id
    - /catalogs/uom
    - /catalogs/uom/:id
    - /catalogs/categories
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-002, FE-003, FE-004, FE-005]
```

#### Resumen Sprint 2

| Capa | Tareas | SP |
|------|--------|-----|
| Backend | BE-003, BE-004, BE-005, BE-006 | 17 |
| Frontend | FE-003, FE-004, FE-005, FE-006 | 20 |
| **TOTAL** | **8 tareas** | **37 SP** |

---

### 3.3 SPRINT 3: OAuth + Settings Frontend

**Duracion:** 2 semanas
**Story Points:** 36 SP
**Objetivo:** OAuth integration, tests core business, inicio settings

#### Backend (22 SP)

```yaml
BE-007:
  titulo: "Tests Financial Module"
  sp: 8
  archivos_a_crear:
    - backend/src/modules/financial/__tests__/journal.service.spec.ts
    - backend/src/modules/financial/__tests__/invoice.service.spec.ts
    - backend/src/modules/financial/__tests__/payment.service.spec.ts
  casos_de_prueba:
    - Journal entries balance validation
    - Invoice workflow (draft -> posted -> paid)
    - Payment reconciliation
    - Multi-currency handling
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: [BE-001]

BE-008:
  titulo: "Tests Inventory Module"
  sp: 6
  archivos_a_crear:
    - backend/src/modules/inventory/__tests__/product.service.spec.ts
    - backend/src/modules/inventory/__tests__/stock.service.spec.ts
  casos_de_prueba:
    - Stock moves validation
    - Valuation (FIFO, LIFO, Average)
    - Stock adjustments
    - Location transfers
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: [BE-001]

BE-009:
  titulo: "OAuth2 Integration"
  sp: 8
  archivos_a_crear:
    - backend/src/modules/auth/providers/google.provider.ts
    - backend/src/modules/auth/providers/microsoft.provider.ts
    - backend/src/modules/auth/providers/oauth.types.ts
  archivos_a_modificar:
    - backend/src/modules/auth/auth.routes.ts
    - backend/src/modules/auth/auth.controller.ts
  endpoints:
    - GET /auth/oauth/google
    - GET /auth/oauth/google/callback
    - GET /auth/oauth/microsoft
    - GET /auth/oauth/microsoft/callback
    - POST /auth/oauth/link
    - DELETE /auth/oauth/unlink/:provider
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: []
```

#### Frontend (14 SP)

```yaml
FE-007:
  titulo: "Stores Catalogs (Zustand)"
  sp: 3
  archivos_a_crear:
    - frontend/src/shared/stores/useCurrencyStore.ts
    - frontend/src/shared/stores/useCatalogCacheStore.ts
  funcionalidades:
    - Current currency global
    - Cache de listas de catalogos
    - Invalidacion automatica
  perfil: PERFIL-FRONTEND.md
  dependencias: []

FE-008:
  titulo: "Feature Settings - Estructura"
  sp: 3
  archivos_a_crear:
    - frontend/src/features/settings/index.ts
    - frontend/src/features/settings/api/settings.api.ts
    - frontend/src/features/settings/types/settings.types.ts
    - frontend/src/features/settings/hooks/useSystemSettings.ts
    - frontend/src/features/settings/hooks/useTenantSettings.ts
    - frontend/src/features/settings/hooks/useUserPreferences.ts
  patron_a_seguir: "features/tenants/"
  perfil: PERFIL-FRONTEND.md
  dependencias: []

FE-009:
  titulo: "System Settings Page"
  sp: 5
  archivos_a_crear:
    - frontend/src/pages/settings/SystemSettingsPage.tsx
    - frontend/src/features/settings/components/GeneralSettingsForm.tsx
    - frontend/src/features/settings/components/EmailSettingsForm.tsx
    - frontend/src/features/settings/components/SecuritySettingsForm.tsx
  secciones:
    - General (app name, logo, timezone)
    - Email (SMTP config)
    - Security (password policy, session timeout)
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-008]

FE-010-A:
  titulo: "Tenant Settings Page (inicio)"
  sp: 3
  archivos_a_crear:
    - frontend/src/pages/settings/TenantSettingsPage.tsx (estructura base)
    - frontend/src/features/settings/components/BrandingForm.tsx
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-008]
```

#### Resumen Sprint 3

| Capa | Tareas | SP |
|------|--------|-----|
| Backend | BE-007, BE-008, BE-009 | 22 |
| Frontend | FE-007, FE-008, FE-009, FE-010-A | 14 |
| **TOTAL** | **7 tareas** | **36 SP** |

---

### 3.4 SPRINT 4: 2FA + Settings Completion

**Duracion:** 2 semanas
**Story Points:** 31 SP
**Objetivo:** Implementar 2FA, completar settings, tests frontend

#### Backend (12 SP)

```yaml
BE-010:
  titulo: "2FA/MFA Implementation"
  sp: 8
  archivos_a_crear:
    - backend/src/modules/auth/services/mfa.service.ts
    - backend/src/modules/auth/services/totp.service.ts
    - backend/src/modules/auth/__tests__/mfa.service.spec.ts
  archivos_a_modificar:
    - backend/src/modules/auth/auth.routes.ts
    - backend/src/modules/auth/auth.controller.ts
  endpoints:
    - POST /auth/mfa/setup (genera QR)
    - POST /auth/mfa/verify (verifica codigo)
    - POST /auth/mfa/disable
    - GET /auth/mfa/backup-codes
    - POST /auth/mfa/regenerate-backup
  funcionalidades:
    - TOTP (Google Authenticator compatible)
    - Backup codes (10 codes de un solo uso)
    - Recovery flow
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: []

BE-011:
  titulo: "Email Verification Flow"
  sp: 4
  archivos_a_crear:
    - backend/src/modules/auth/services/email-verification.service.ts
    - backend/src/shared/services/email.service.ts
  archivos_a_modificar:
    - backend/src/modules/auth/auth.routes.ts
  endpoints:
    - POST /auth/verify-email/send
    - GET /auth/verify-email/:token
    - POST /auth/verify-email/resend
  perfil: PERFIL-BACKEND-EXPRESS.md
  dependencias: []
```

#### Frontend (19 SP)

```yaml
FE-010-B:
  titulo: "Tenant Settings Page (completar)"
  sp: 2
  archivos_a_crear:
    - frontend/src/features/settings/components/LocalizationForm.tsx
    - frontend/src/features/settings/components/FeaturesForm.tsx
  archivos_a_modificar:
    - frontend/src/pages/settings/TenantSettingsPage.tsx
  secciones:
    - Localization (language, timezone, dateFormat)
    - Features enabled (checkboxes)
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-010-A]

FE-011:
  titulo: "User Preferences Page"
  sp: 5
  archivos_a_crear:
    - frontend/src/pages/settings/UserPreferencesPage.tsx
    - frontend/src/features/settings/components/ThemePreferencesForm.tsx
    - frontend/src/features/settings/components/LanguagePreferencesForm.tsx
    - frontend/src/features/settings/components/NotificationPreferencesForm.tsx
  secciones:
    - Theme (light/dark/system)
    - Language
    - Notifications (email, push, in-app)
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-008]

FE-012:
  titulo: "Feature Flags Management"
  sp: 5
  archivos_a_crear:
    - frontend/src/pages/settings/FeatureFlagsPage.tsx
    - frontend/src/features/settings/components/FeatureFlagToggle.tsx
    - frontend/src/features/settings/components/FeatureFlagList.tsx
  funcionalidades:
    - Lista de feature flags
    - Toggle por tenant
    - Descripcion de cada flag
  perfil: PERFIL-FRONTEND.md
  dependencias: [FE-008]

FE-013:
  titulo: "Settings Stores (Zustand)"
  sp: 3
  archivos_a_crear:
    - frontend/src/shared/stores/useSettingsStore.ts
    - frontend/src/shared/stores/useFeatureFlagsStore.ts
  perfil: PERFIL-FRONTEND.md
  dependencias: []

FE-014:
  titulo: "Theme Selector Component"
  sp: 3
  archivos_a_crear:
    - frontend/src/shared/components/organisms/ThemeSelector.tsx
  archivos_a_modificar:
    - frontend/src/shared/stores/useUIStore.ts
  funcionalidades:
    - Light/Dark/System toggle
    - Persistent en localStorage
    - Aplica clases Tailwind (dark:)
  perfil: PERFIL-FRONTEND.md
  dependencias: []

FE-015:
  titulo: "Frontend Tests Config"
  sp: 1
  estado: AJUSTADO (antes 3 SP)
  descripcion: |
    Vitest ya instalado. Solo verificar/ajustar config.
  archivos_existentes:
    - frontend/package.json (vitest: ^2.1.5)
  archivos_a_verificar:
    - frontend/vitest.config.ts
    - frontend/tests/setup.ts
  perfil: PERFIL-FRONTEND.md
  dependencias: []
```

#### Resumen Sprint 4

| Capa | Tareas | SP |
|------|--------|-----|
| Backend | BE-010, BE-011 | 12 |
| Frontend | FE-010-B, FE-011, FE-012, FE-013, FE-014, FE-015 | 19 |
| **TOTAL** | **8 tareas** | **31 SP** |

---

## 4. GRAFO DE DEPENDENCIAS ACTUALIZADO

```mermaid
graph TD
    subgraph Sprint1["SPRINT 1 (22 SP)"]
        DB002[DB-002: RLS Validation]
        BE001[BE-001: Jest Setup]
        BE002[BE-002: Auth Tests]
        FE001[FE-001: Catalogs Structure]
        FE002[FE-002: Countries Pages]

        BE001 --> BE002
        FE001 --> FE002
    end

    subgraph Sprint2["SPRINT 2 (37 SP)"]
        BE003[BE-003: Users Tests]
        BE004[BE-004: Roles Tests]
        BE005[BE-005: Tenants Tests]
        BE006[BE-006: Permission Cache]
        FE003[FE-003: Currencies]
        FE004[FE-004: UoM]
        FE005[FE-005: Categories]
        FE006[FE-006: Routes]

        BE001 --> BE003
        BE001 --> BE004
        BE001 --> BE005
        FE001 --> FE003
        FE001 --> FE004
        FE001 --> FE005
        FE002 --> FE006
        FE003 --> FE006
        FE004 --> FE006
        FE005 --> FE006
    end

    subgraph Sprint3["SPRINT 3 (36 SP)"]
        BE007[BE-007: Financial Tests]
        BE008[BE-008: Inventory Tests]
        BE009[BE-009: OAuth]
        FE007[FE-007: Catalog Stores]
        FE008[FE-008: Settings Structure]
        FE009[FE-009: System Settings]
        FE010A[FE-010-A: Tenant Settings inicio]

        BE001 --> BE007
        BE001 --> BE008
        FE008 --> FE009
        FE008 --> FE010A
    end

    subgraph Sprint4["SPRINT 4 (31 SP)"]
        BE010[BE-010: 2FA/MFA]
        BE011[BE-011: Email Verification]
        FE010B[FE-010-B: Tenant Settings completar]
        FE011[FE-011: User Preferences]
        FE012[FE-012: Feature Flags]
        FE013[FE-013: Settings Stores]
        FE014[FE-014: Theme Selector]
        FE015[FE-015: Frontend Tests]

        BE009 --> BE010
        BE010 --> BE011
        FE010A --> FE010B
        FE008 --> FE011
        FE008 --> FE012
    end

    %% Cross-sprint dependencies
    DB002 -.-> BE005
    BE002 -.-> FE001
```

---

## 5. PERFILES DE AGENTES REQUERIDOS

```yaml
sprint_1:
  database_agent:
    perfil: PERFIL-DATABASE.md
    tareas: [DB-002]
    sp: 2

  backend_agent:
    perfil: PERFIL-BACKEND-EXPRESS.md
    tareas: [BE-001, BE-002]
    sp: 10

  frontend_agent:
    perfil: PERFIL-FRONTEND.md
    tareas: [FE-001, FE-002]
    sp: 10

sprint_2:
  backend_agent:
    perfil: PERFIL-BACKEND-EXPRESS.md
    tareas: [BE-003, BE-004, BE-005, BE-006]
    sp: 17

  frontend_agent:
    perfil: PERFIL-FRONTEND.md
    tareas: [FE-003, FE-004, FE-005, FE-006]
    sp: 20

sprint_3:
  backend_agent:
    perfil: PERFIL-BACKEND-EXPRESS.md
    tareas: [BE-007, BE-008, BE-009]
    sp: 22

  frontend_agent:
    perfil: PERFIL-FRONTEND.md
    tareas: [FE-007, FE-008, FE-009, FE-010-A]
    sp: 14

sprint_4:
  backend_agent:
    perfil: PERFIL-BACKEND-EXPRESS.md
    tareas: [BE-010, BE-011]
    sp: 12

  frontend_agent:
    perfil: PERFIL-FRONTEND.md
    tareas: [FE-010-B, FE-011, FE-012, FE-013, FE-014, FE-015]
    sp: 19
```

---

## 6. CRITERIOS DE ACEPTACION POR SPRINT

### Sprint 1 - Criterios

```yaml
database:
  - [ ] RLS tests ejecutados (psql -f rls-validation.sql)
  - [ ] Todos los tests pasando (0 failures)
  - [ ] Tenant isolation verificado
  - [ ] Reporte de validacion creado

backend:
  - [ ] jest.config.js existe y funciona
  - [ ] npm test ejecuta sin errores
  - [ ] Auth tests: >80% cobertura
  - [ ] Todos los tests pasando

frontend:
  - [ ] features/catalogs/ estructura completa
  - [ ] Countries CRUD funcional
  - [ ] Paginas renderizando correctamente
```

### Sprint 2 - Criterios

```yaml
backend:
  - [ ] Users tests: >80% cobertura
  - [ ] Roles tests: >80% cobertura
  - [ ] Tenants tests: >80% cobertura
  - [ ] Permission cache: <5ms lookup

frontend:
  - [ ] Currencies CRUD funcional
  - [ ] UoM CRUD funcional
  - [ ] Categories tree funcional
  - [ ] Todas las rutas accesibles
```

### Sprint 3 - Criterios

```yaml
backend:
  - [ ] OAuth Google login funcional
  - [ ] OAuth Microsoft login funcional
  - [ ] Financial tests: >60% cobertura
  - [ ] Inventory tests: >60% cobertura

frontend:
  - [ ] Settings estructura completa
  - [ ] System settings guardando correctamente
  - [ ] Stores funcionando
```

### Sprint 4 - Criterios

```yaml
backend:
  - [ ] 2FA TOTP funcional (Google Authenticator)
  - [ ] Backup codes generando
  - [ ] Email verification enviando
  - [ ] Recovery flow funcional

frontend:
  - [ ] Settings module 100% completo
  - [ ] Theme selector funcionando
  - [ ] Feature flags toggle funcionando
  - [ ] Vitest config verificado
```

---

## 7. RIESGOS Y MITIGACIONES

| Riesgo | Probabilidad | Impacto | Estado | Mitigacion |
|--------|-------------|---------|--------|------------|
| Jest setup complejo | BAJA | Medio | MITIGADO | Ya instalado |
| HR Schema faltante | ELIMINADO | - | CERRADO | Ya existe |
| Redis no disponible | BAJA | Bajo | MITIGADO | Config con fallback |
| OAuth API changes | BAJA | Medio | PENDIENTE | Usar SDKs oficiales |
| RLS performance | MEDIA | Alto | PENDIENTE | Ejecutar tests en Sprint 1 |
| Frontend scope creep | ALTA | Medio | ACTIVO | Seguir specs existentes |

---

## 8. RESUMEN FINAL

### Metricas del Plan Ajustado

| Metrica | Valor |
|---------|-------|
| Total Story Points | 126 SP |
| Sprints | 4 |
| Tareas totales | 28 |
| Tareas eliminadas | 4 (16 SP) |
| Tareas reducidas | 4 (10 SP) |
| Reduccion total | 26 SP (17%) |

### Distribucion por Capa

| Capa | SP | % del Total |
|------|-----|-------------|
| Database | 2 | 2% |
| Backend | 61 | 48% |
| Frontend | 63 | 50% |
| **TOTAL** | **126** | **100%** |

---

**Documento generado por:** ORQUESTADOR (Claude Code Opus 4.5)
**Sistema:** SIMCO + CAPVED
**Fase actual:** P (Planeacion) - COMPLETADA
**Proxima fase:** V (Validacion de Planeacion)
