-- Migración: boost CADUCABLE con retorno parcial (Cambio 2 de nuevoplan.md). TODO en UTC.
--
-- Modelo de "derecho pendiente" (entitlement), a prueba de acumulación:
--   Al acreditar un depósito D  ->  boost_owed += D * (boostDays/roiDays)   [= 80% de D]
--                                  boost_expires_at = ahora + boostDays
--   En cada reclamo             ->  se descuenta de boost_owed la parte de boost pagada.
--   Boost activo   <=>  boost_owed > 0  Y  ahora < boost_expires_at
--
-- Así el usuario NUNCA cobra más del 80% de lo depositado, aunque encadene depósitos justo
-- antes de que le caduque (con un simple "reiniciar la ventana" sí podría superarlo).

ALTER TABLE `users`
  -- USD que aún se le deben al usuario por su boost. 0 = boost agotado.
  ADD COLUMN IF NOT EXISTS `boost_owed` DECIMAL(30,8) NOT NULL DEFAULT 0,
  -- Fin de la ventana del boost. NULL = nunca ha tenido boost.
  ADD COLUMN IF NOT EXISTS `boost_expires_at` DATETIME(3) NULL;

-- Para el listado de admin (B1) y futuros barridos de boosts caducados.
CREATE INDEX IF NOT EXISTS `idx_users_boost` ON `users` (`boost_expires_at`);
