# QA Legajos - Evidencia 2026-05-19

## Alcance validado (Fase 4)

- Backend consulta avanzada de legajos:
  - `GET /api/v1/rrhh/legajos/consulta`
  - `GET /api/v1/rrhh/legajos/consulta/exportar?formato=excel`
- Integración M14 en desvinculaciones (`aprobar` y `pagar`) con parámetro `LEGAJO_COMPLETITUD_OBLIGATORIO_BLOQUEA`.
- Integración M18 en permisos presentismo con `legajo_documento_id` y validaciones de integridad.
- Seed ejecutable para migración de `foto_url` a legajo `FOTO_PERFIL`.
- Frontend consulta legajos con subtab dedicado, filtros, vista triple y exportaciones (excel/pdf).
- Frontend permisos presentismo con selector de documento de legajo médico.
- UX RRHH legajos: guía, prerequisitos, onboarding y tour.
- Ajuste de `expira_en_segundos` para reflejar configuración real.

## Evidencia backend

### Build

Comando ejecutado:

```bash
pnpm -C backend build
```

Resultado:

- Compilación SWC exitosa.

### Tests específicos ejecutados

Comando ejecutado:

```bash
pnpm -C backend test src/rrhh/services/legajos-tipos.service.spec.ts src/rrhh/services/legajos-dashboard.service.spec.ts src/rrhh/services/desvinculaciones.service.spec.ts src/rrhh/services/legajos-consulta.service.spec.ts src/rrhh/services/permisos-presentismo.service.spec.ts --runInBand
```

Resultado:

- `PASS src/rrhh/services/legajos-tipos.service.spec.ts`
- `PASS src/rrhh/services/legajos-dashboard.service.spec.ts`
- `PASS src/rrhh/services/desvinculaciones.service.spec.ts`
- `PASS src/rrhh/services/legajos-consulta.service.spec.ts`
- `PASS src/rrhh/services/permisos-presentismo.service.spec.ts`
- `Test Suites: 5 passed, 5 total`
- `Tests: 39 passed, 39 total`

### Casos cubiertos por tests agregados/extendidos

- Consulta legajos:
  - límite máximo de página (cap en 100)
  - cursor de paginación (estructura `cursor_next` / `has_more`)
- Permisos presentismo:
  - rechazo de `legajo_documento_id` inválido
  - rechazo de documento no compatible con justificación `MEDICA`
- Desvinculaciones (M14):
  - `aprobar`: advertencia cuando legajo incompleto y parámetro no bloquea
  - `pagar`: bloqueo con HTTP 422 cuando legajo incompleto y parámetro bloquea
- Tipos de documento (M23):
  - validación `vencimiento_obligatorio` requiere `admite_vencimiento`
  - bloqueo de conflicto con códigos reservados del sistema
  - bloqueo de edición en tipos `es_del_sistema`
  - protección multiempresa en desactivación
- Dashboard (M25/M26):
  - resumen de vencimientos (total / vencidos / por vencer) y cálculo de días
  - armado de legajos incompletos con tipos faltantes y vencidos

## Evidencia frontend

### Build técnico

Comando ejecutado:

```bash
npm --prefix frontend run build
```

Resultado:

- Build exitoso tras ajuste de PWA en `frontend/vite.config.js`:
  - `workbox.maximumFileSizeToCacheInBytes` actualizado a `10 * 1024 * 1024`.
  - Salida final: `PWA v1.3.0`, `precache 147 entries`, archivos `dist/sw.js` y `dist/workbox-*.js` generados.

Observación:

- Persisten warnings de chunk grande (`vendor` ~6.1MB), pero sin bloquear build.

## Estado de DB / migraciones

### Migraciones Prisma

Comando ejecutado:

```bash
cd backend && pnpm prisma migrate status
```

Resultado:

- `Database schema is up to date!`
- `154 migrations found in prisma/migrations`

### Seed general

Comando ejecutado:

```bash
cd backend && pnpm prisma db seed
```

Resultado:

- Seed ejecutado con éxito (privilegios, módulos, planes y tipos de gasto).

### Seed migración foto_url -> FOTO_PERFIL

Resultado del chequeo en DB de esta base:

- Empresa activa detectada: `42110ee7-1b31-4c7e-9a16-d7a0ac9c8030`
- Empleados con `foto_url`: `0`
- Documentos `FOTO_PERFIL` activos: `0`

Interpretación:

- La migración específica no generó altas porque no existen empleados con `foto_url` en este entorno.

## Endpoints y contratos incorporados

- `GET /api/v1/rrhh/legajos/consulta`
  - filtros múltiples
  - cursor de paginación
  - límite por página (máx 100)
- `GET /api/v1/rrhh/legajos/consulta/exportar?formato=excel`
  - respuesta tipo archivo Excel (`.xlsx`)
- Permisos presentismo:
  - `CreatePermisoPresentismoDto` / `UpdatePermisoPresentismoDto` soportan `legajo_documento_id?: uuid`
  - validación de documento `ACTIVO`, misma empresa y mismo empleado

## Riesgos abiertos / seguimiento sugerido

1. Ejecutar smoke manual UI en RRHH:
   - subtab consulta (3 vistas)
   - exportación Excel y PDF
   - selector de documento médico en permisos presentismo
2. (Opcional) agregar tests e2e de controlador para endpoints `/consulta` y `/consulta/exportar`.

## Smoke técnico adicional (alineación Fase 4)

Validación de wiring/contratos/UX por inspección + build/tests:

- Rutas backend de consulta/export confirmadas:
  - `LegajosConsultaController` con `GET consulta` y `GET consulta/exportar`.
- Contrato frontend confirmado:
  - API `consultarLegajos` y `exportarConsultaLegajos`.
  - Formulario de permisos con `legajo_documento_id`.
- Integración M14 confirmada en servicio + test:
  - chequeo `LEGAJO_COMPLETITUD_OBLIGATORIO_BLOQUEA`
  - retorno de `advertencias` cuando no bloquea
  - bloqueo `422` cuando bloquea
- UX legajos confirmada:
  - `RRHHGuia seccion="legajos"`
  - `RRHHPrereqChecklist tabKey="legajos"`
  - `rrhhLegajosSteps` con paso de subtab consulta
  - onboarding `rrhh-onboarding-v3` y prereq `legajosTiposSistema`

Re-ejecución técnica final:

```bash
pnpm -C backend test src/rrhh/services/legajos-tipos.service.spec.ts src/rrhh/services/legajos-dashboard.service.spec.ts src/rrhh/services/desvinculaciones.service.spec.ts src/rrhh/services/legajos-consulta.service.spec.ts src/rrhh/services/permisos-presentismo.service.spec.ts --runInBand
pnpm -C backend build
npm --prefix frontend run build
```

Resultado:

- Backend tests: `5 passed, 39 total`.
- Backend build: OK.
- Frontend build: OK (`PWA generateSW`, `precache 147 entries`).
