-- Raison interne de bannissement : note libre saisie par l'opérateur lors
-- d'un ban (`PUT /admin/users/{hex}/ban`, corps `{ "reason": "…" }`).
--
-- Jusqu'ici la raison n'était écrite QUE dans le journal d'audit
-- (`user_action_log`), donc invisible quand on consulte directement le
-- compte : il fallait fouiller l'historique pour savoir pourquoi un
-- utilisateur était banni. Cette colonne persiste la raison du ban EN COURS,
-- directement lisible sur le compte côté back-office.
--
-- Cycle de vie : posée au ban (avec `banned_until`), écrasée à chaque re-ban,
-- remise à NULL à l'unban (`PUT /admin/users/{hex}/unban`) — elle suit
-- exactement le cycle de `banned_until`.
--
-- INTERNE : exposée uniquement par `AdminUserSerializer` (back-office).
-- Jamais indexée dans Meilisearch, jamais renvoyée par les serializers
-- publics ni à l'utilisateur banni.
--
-- VARCHAR(500) NULL : même shape que `user_action_log.reason` — NULL =
-- aucune raison (ban sans note, ou compte non banni).

ALTER TABLE `user`
    ADD COLUMN `ban_reason` VARCHAR(500) NULL AFTER `banned_until`;
