-- Migration 027 — raw_candidate en messages para thoughtSignature round-trip
-- Gemini 2.5-flash emite thoughtSignature incluso con thinkingBudget:0.
-- Sin este campo, historyToContents() reconstruye el turno del modelo sin
-- el thoughtSignature → el modelo produce 0 tokens en el turno siguiente.
--
-- DOWN (revertir):
--   ALTER TABLE messages DROP COLUMN raw_candidate;

DROP PROCEDURE IF EXISTS migrate_027;

DELIMITER //
CREATE PROCEDURE migrate_027()
BEGIN
    DECLARE CONTINUE HANDLER FOR 1060 BEGIN END; -- Duplicate column

    ALTER TABLE messages
        ADD COLUMN raw_candidate JSON NULL DEFAULT NULL
        COMMENT 'candidate.content JSON de Gemini — round-trip del thoughtSignature en multi-turno.';
END //
DELIMITER ;

CALL migrate_027();
DROP PROCEDURE IF EXISTS migrate_027;

-- Verificación (compatible con usuarios cPanel sin acceso a information_schema)
SHOW COLUMNS FROM messages LIKE 'raw_candidate';
