Idempotency-Key no es opcional: un reintento de red que cobra dos veces es un incidente con
el cliente final, no un bug interno.
La estructura padre/hijo existe desde el día 1 aunque F1 no la use en la UI: retrofitearla cuando
lleguen los pedidos multi-recompensa habría obligado a migrar cada canje existente.
Clave primaria
Atributos específicos
Claves foráneas
Atributos base
Restricciones e índices
RLS y particionamiento
RLS activa portenant_id. No particionada.
El canje consume lotes FIFO dentro de una sola transacción con el ledger, el outbox y la
auditoría. Consumir más que el disponible falla antes de escribir nada.