Saltar a contenido

Decisiones de arquitectura (ADRs)

Un ADR (Architecture Decision Record) registra una decisión de diseño importante: el contexto en el que se tomó, la opción elegida y sus consecuencias. Son la memoria del por qué del sistema — cuando alguien se pregunte "¿por qué está hecho así y no de esta otra forma?", la respuesta vive acá.

Estos ADRs se escribieron durante el desarrollo del Sistema de Premios y se conservan tal cual. El SPEC dice qué hace el sistema; estos documentos explican por qué tiene la forma que tiene.

Índice

ADR Decisión
ADR-001 Bucketing de chances a sorteo por ventana de emisión
ADR-002 Toda decisión temporal por fecha de emisión del ticket
ADR-003 Exclusión de ganadores por adjudicación + dedup por DNI intra-acta
ADR-004 Acta reproducible con snapshot completo
ADR-005 Padrón con un solo tipo Cliente
ADR-006 Tope diario: rama propia, rechazo sin consumo
ADR-007 Consentimiento: dos objetos distintos
ADR-008 Estado terminal NO_OTORGADO
ADR-009 Ejecución del sorteo por decisión humana
ADR-010 Claves HMAC por keyId en tabla cifrada
ADR-011 Idempotencia por constraints de base de datos
ADR-012 Elegibles insuficientes: el motor sortea lo que hay
ADR-013 Dominio Campaña / Sorteo
ADR-014 Política de promoId: DIFERIDA
ADR-015 Topología: monorepo con dos frontends de presupuesto distinto
ADR-016 Stack backend: Java + Spring Boot + SQL Server
ADR-017 Suite E2E visual/funcional con Playwright contra el jar empaquetado
ADR-018 Upgrade a Spring Boot 4 (framework 7, security 7, hibernate 7, jackson 3) + consola boot-ui (solo dev)
ADR-019 Preact (via preact/compat) en la landing
ADR-020 Gate de análisis estático del backend (Checkstyle, PMD, SpotBugs, FindSecBugs)
ADR-021 DTOs de respuesta en los endpoints del gestor (cierre de RAPI-DTO-001 / ENTITY_LEAK)
ADR-022 Gestor responsive (sidebar colapsable) + PWA instalable
ADR-023 Agregar un sorteo suelto (ad-hoc) a una campaña
ADR-024 Concurrency hardening: bloqueo optimista + serialización de ejecución por campaña
ADR-025 Acta con premio original congelado + separación del estado de entrega; plazo visible; paginación de clientes
ADR-026 Escaneo de DNI con decodificador PDF417 propio (independiente del navegador)
ADR-027 Reconocimiento del dispositivo por secreto opaco (memoria del DNI sin guardar el DNI)
ADR-028 Completar y corregir datos del cliente desde la landing
ADR-029 Configuración operativa completa FUERA del jar (fail-fast en todo perfil)