Saltar a contenido

ADR-006 — Tope diario: rama propia, rechazo sin consumo

  • Status: accepted (D6 del BRIEF; valor confirmado en discovery: 5)
  • Context: Antifraude exige limitar chances por DNI por día. ¿Qué pasa con el voucher que supera el tope: se consume o no?
  • Alternatives: consumir el voucher al rechazar (quema la chance del cliente por un límite temporal — injusto); rechazar sin consumir (elegida).
  • Decision: El flujo tiene rama "tope diario alcanzado". Como el día se resuelve por emisión (ADR-002), el voucher que supera el tope se rechaza sin consumir y se informa al cliente. Tope configurable por campaña; valor de esta campaña: 5.
  • Consequences: El día de emisión de un voucher es fijo, por lo que el rechazo por tope es definitivo para ese DNI: con 5 chances registradas de un día de emisión, todo voucher adicional emitido ese día queda afuera. No se consume el token (el registro interno guarda el intento en VoucherRechazado para señales antifraude), pero no existe "reintentar mañana": mañana el voucher sigue perteneciendo al mismo día de emisión ya colmado.

Implementation Plan

  • Chequeo transaccional previo al consumo: COUNT(chance WHERE cliente + dia_emision) >= tope → rechazo informativo sin insertar chance ni marcar el token como usado.
  • Parámetro tope_chances_dni_dia en campania.

Verification

  • [ ] Test: 5 chances del día X registradas; 6º voucher emitido el día X → rechazado, token NO consumido, mensaje de tope.
  • [ ] Test: mismo DNI con voucher emitido el día X+1 → participa normal.
  • [ ] Test: el rechazo queda en registro interno con motivo tope_diario.