Saltar a contenido

ADR-002 — Toda decisión temporal por fecha de emisión del ticket

  • Status: accepted (D2 del BRIEF; invariante en CONSTITUTION)
  • Context: El voucher viaja autocontenido; el cliente puede registrarlo días después de la compra. ¿Qué fecha manda para vigencia, tope diario y bucketing?
  • Alternatives: fecha de registración (manipulable por el cliente reteniendo vouchers); fecha de emisión del token, offsets 8/10 (elegida).
  • Decision: Validez de la promo (casos C/D), día del tope diario y bucketing de chances resuelven SIEMPRE por fecha de emisión embebida y firmada en el token.
  • Consequences: Cierra el hueco de guardar vouchers. Un voucher emitido dentro de vigencia y registrado más tarde participa: su chance cae en la ventana que corresponde a su emisión (ADR-001), con el sorteo de cierre como última ventana. La fecha de registración queda solo como dato operativo/antifraude.

Implementation Plan

  • Decodificador del token expone fecha_emision (días desde 01/01/2026 + minutos).
  • Todos los predicados temporales del flujo A–E y del motor usan ese valor.

Verification

  • [ ] Test: voucher emitido 09/10 23:50 y registrado 11/10 → participa (cierre).
  • [ ] Test: voucher emitido 11/10 (post-vigencia) → caso C, sin chance.
  • [ ] Test: tope diario cuenta por día de emisión, no de registro.