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) |