UDT-011 T400.50 — Inyectar TimeProvider en Quartz jobs de Auditoría #24

Closed
opened 2026-04-18 13:13:06 +00:00 by dmolinari · 0 comments
Owner

Contexto

Durante el Batch 4 de UDT-011 (T400) se detectó que los tres Quartz jobs de auditoría aún usan DateTime.UtcNow directamente, en lugar del patrón TimeProvider ya establecido en el resto del sistema.

Archivos afectados

Archivo Línea Uso actual
src/api/SIGCM2.Infrastructure/Audit/Jobs/AuditIntegrityCheckJob.cs 53 var now = DateTime.UtcNow;
src/api/SIGCM2.Infrastructure/Audit/Jobs/AuditPartitionManagerJob.cs 37 var now = DateTime.UtcNow;
src/api/SIGCM2.Infrastructure/Audit/Jobs/AuditRetentionEnforcerJob.cs 40 var now = DateTime.UtcNow;

Tarea pendiente

  • Inyectar TimeProvider vía constructor en los tres jobs (Quartz instancia via DI, así que es directo)
  • Reemplazar DateTime.UtcNow por _timeProvider.GetUtcNow().UtcDateTime
  • Agregar tests de integración o al menos unit tests con FakeTimeProvider para los casos críticos de cada job

Por qué fue postergado

Los jobs de Quartz son ejecutados asincrónicamente fuera del request pipeline. Se optó por no modificarlos en este batch para mantener el scope acotado y evitar afectar la suite de integration tests de audit que ya tiene baseline estable.

Prioridad

Retomar al inicio del próximo UDT que toque la capa de infraestructura/jobs, o antes de habilitarlos en producción.

## Contexto Durante el Batch 4 de UDT-011 (T400) se detectó que los tres Quartz jobs de auditoría aún usan `DateTime.UtcNow` directamente, en lugar del patrón `TimeProvider` ya establecido en el resto del sistema. ## Archivos afectados | Archivo | Línea | Uso actual | |---------|-------|------------| | `src/api/SIGCM2.Infrastructure/Audit/Jobs/AuditIntegrityCheckJob.cs` | 53 | `var now = DateTime.UtcNow;` | | `src/api/SIGCM2.Infrastructure/Audit/Jobs/AuditPartitionManagerJob.cs` | 37 | `var now = DateTime.UtcNow;` | | `src/api/SIGCM2.Infrastructure/Audit/Jobs/AuditRetentionEnforcerJob.cs` | 40 | `var now = DateTime.UtcNow;` | ## Tarea pendiente - Inyectar `TimeProvider` vía constructor en los tres jobs (Quartz instancia via DI, así que es directo) - Reemplazar `DateTime.UtcNow` por `_timeProvider.GetUtcNow().UtcDateTime` - Agregar tests de integración o al menos unit tests con `FakeTimeProvider` para los casos críticos de cada job ## Por qué fue postergado Los jobs de Quartz son ejecutados asincrónicamente fuera del request pipeline. Se optó por no modificarlos en este batch para mantener el scope acotado y evitar afectar la suite de integration tests de audit que ya tiene baseline estable. ## Prioridad Retomar al inicio del próximo UDT que toque la capa de infraestructura/jobs, o antes de habilitarlos en producción.
dmolinari added the followup label 2026-04-18 13:13:06 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dmolinari/SIG-CM2.0#24