-- ============================================================================
-- Migration 027 - Supplier self-assessment portal (P3 supply chain)
-- ----------------------------------------------------------------------------
-- Abilita l'invio di questionari di sicurezza ai fornitori (Art.21.2.d NIS2)
-- e la compilazione tramite portale pubblico con token (senza login).
--
--   supplier_questionnaires: traccia invio, token (hash), risposte, score.
--
-- Idempotente. Rilanciabile.
--   mysql -h localhost nis2_agile_db -e "source docs/sql/027_supplier_self_assessment.sql"
-- ============================================================================

CREATE TABLE IF NOT EXISTS supplier_questionnaires (
    id              INT NOT NULL AUTO_INCREMENT,
    organization_id INT NOT NULL,
    supplier_id     INT NOT NULL,
    token_hash      CHAR(64) NOT NULL COMMENT 'SHA-256 del token inviato al fornitore',
    status          ENUM('sent','completed','expired') NOT NULL DEFAULT 'sent',
    answers         JSON NULL COMMENT 'Risposte del fornitore {question_key: value}',
    score           INT NULL COMMENT 'Punteggio 0-100 calcolato dalle risposte',
    risk_level      ENUM('low','medium','high','critical') NULL,
    sent_to_email   VARCHAR(255) NULL,
    sent_at         DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    completed_at    DATETIME NULL,
    expires_at      DATETIME NULL,
    created_at      DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uq_sq_token (token_hash),
    KEY idx_sq_org (organization_id),
    KEY idx_sq_supplier (supplier_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Questionari di self-assessment sicurezza inviati ai fornitori (Art.21.2.d)';

-- ROLLBACK:
-- DROP TABLE IF EXISTS supplier_questionnaires;
