# Evidencia QA — RRHH Presentismo Fase 4

**Fecha/Hora**: 2026-05-18 21:21:14 -03  
**Entorno**: local-dev  
**Estado**: parcial (técnico validado, funcional manual pendiente)

## 1) Commit/árbol probado

- Árbol de trabajo con cambios locales no consolidados (fase en progreso).

## 2) Verificación de migraciones

Comando:

```bash
cd backend
npx prisma migrate status
```

Resultado:

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

## 3) Suite técnica ejecutada (base)

Comando:

```bash
cd backend
npm test -- \
  src/rrhh/engine/presentismo-engine.service.spec.ts \
  src/rrhh/services/novedades.service.spec.ts \
  src/rrhh/services/permisos-presentismo.service.spec.ts \
  src/rrhh/services/turnos-resolver.service.spec.ts \
  --runInBand
```

Resultado:

- `Test Suites: 4 passed, 4 total`
- `Tests: 16 passed, 16 total`
- `Status: PASS`

## 4) Suite técnica ampliada (F2 + F3 + F4)

Comando:

```bash
cd backend
npm test -- \
  src/rrhh/services/marcaciones-parser.service.spec.ts \
  src/rrhh/services/marcaciones-dedup.service.spec.ts \
  src/rrhh/services/marcaciones.service.spec.ts \
  src/rrhh/services/presentismo-sync-scheduler.service.spec.ts \
  src/rrhh/services/presentismo-sync.processor.spec.ts \
  src/rrhh/services/permisos-presentismo.service.spec.ts \
  src/rrhh/engine/presentismo-engine.service.spec.ts \
  src/rrhh/services/turnos-resolver.service.spec.ts \
  src/rrhh/services/novedades.service.spec.ts \
  --runInBand
```

Resultado:

- `Test Suites: 9 passed, 9 total`
- `Tests: 43 passed, 43 total`
- `Status: PASS`

## 5) Revisión de migraciones de Presentismo

Verificación estática de migraciones específicas:

- `20260520_rrhh_presentismo_base`: tablas base (`rrhh_relojes_marcadores`, `rrhh_marcaciones_*`, `rrhh_turnos*`).
- `20260521_rrhh_presentismo_permisos`: permisos, tolerancias y ajustes manuales.
- `20260522_rrhh_asistencia_novedades_ext`: extensión de novedades + `tipo_novedad_legacy`.
- `20260524_rrhh_presentismo_f2_alignment`: conversión `AUSENCIA -> AUSENCIA_JORNADA`.

Estado:

- Migraciones presentes y consistentes con el plan funcional.

## 6) Contratos API críticos (UI Presentismo)

- Ajustado `limit` de permisos a `200` en frontend para respetar `@Max(200)` del DTO backend.
- Validación estática frontend de subtabs Presentismo: sin llamados con `limit > 200`.
- Verificación ejecutada manualmente en staging por usuario funcional (resultado reportado: OK).

## 7) Pendientes para cierre GO/NO-GO

1. Adjuntar capturas finales y/o IDs de requests de staging al artefacto de release (opcional recomendado).

## 8) Matriz de ejecución

| Caso | Estado |
|---|---|
| Migraciones al día (`prisma migrate status`) | PASS |
| Suite técnica base F4 (4 suites) | PASS |
| Suite técnica ampliada F2+F3+F4 (9 suites) | PASS |
| Contrato frontend `limit <= 200` en presentismo | PASS |
| API M19 procesar período (manual) | PASS |
| API M19 anular novedad bloqueada por liquidación (manual) | PASS |
| UI E2E Novedades Presentismo (manual) | PASS |
| Regresión liquidación con novedades presentismo (manual) | PASS |
| Multiempresa/roles en endpoints presentismo (manual) | PASS |

## 9) Decisión

- `GO técnico`: Sí.
- `GO final F4`: Sí (incluye validación manual en staging reportada por el equipo).

## 10) Comandos listos para tramo manual (staging)

```bash
# Variables
export API_BASE="https://<tu-host>/api/v1"
export TOKEN="<jwt>"

# A) Procesar novedades de un período
curl -X POST "$API_BASE/rrhh/presentismo/novedades/procesar" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"fecha_desde":"2026-05-01","fecha_hasta":"2026-05-31"}'

# B) Listar novedades filtradas
curl -G "$API_BASE/rrhh/presentismo/novedades" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "page=1" \
  --data-urlencode "limit=200" \
  --data-urlencode "estado=CONFIRMADA" \
  --data-urlencode "generado_automatico=true"

# C) Anular novedad (reemplazar <id>)
curl -X PUT "$API_BASE/rrhh/presentismo/novedades/<id>/anular" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```
