-- Migration 02 — marque blanche
--
-- Objectif : qu'aucune donnée identifiant le fournisseur ne parvienne au
-- client. Ni l'URL des images, ni le nom du produit, ni sa référence.
--
-- À passer après migration_01_inscription.sql

SET NAMES utf8mb4;

-- ---------------------------------------------------------------
-- Fiche réécrite. Une ligne est créée automatiquement à la
-- publication d'un produit, préremplie avec les valeurs du
-- fournisseur, puis réécrite par l'agence.
--
-- source_hash mémorise ce qui a été copié au départ : tant que le
-- texte affiché lui est identique, la fiche n'a pas été retravaillée
-- et le back-office le signale.
-- ---------------------------------------------------------------
CREATE TABLE IF NOT EXISTS app_product_override (
    master_code   VARCHAR(32)  NOT NULL,
    internal_ref  VARCHAR(32)  NOT NULL,
    display_name  VARCHAR(255) NOT NULL,
    display_short VARCHAR(512) DEFAULT NULL,
    display_long  TEXT         DEFAULT NULL,
    source_hash   CHAR(40)     DEFAULT NULL,
    updated_at    DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_by    INT UNSIGNED DEFAULT NULL,
    PRIMARY KEY (master_code),
    UNIQUE KEY uniq_internal_ref (internal_ref),
    CONSTRAINT fk_override_product FOREIGN KEY (master_code)
        REFERENCES mo_product (master_code) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------
-- Copie locale des visuels.
--
-- local_path est relatif à public/. Le nom de fichier est un
-- condensé : surtout pas dérivé du SKU, sinon la référence
-- fournisseur repart dans l'URL et tout ce travail ne sert à rien.
--
-- Ces colonnes survivent aux réimports : le script d'import ne
-- touche qu'aux champs venant de l'API.
-- ---------------------------------------------------------------
ALTER TABLE mo_asset
    ADD COLUMN local_path       VARCHAR(255) DEFAULT NULL,
    ADD COLUMN local_fetched_at DATETIME     DEFAULT NULL,
    ADD COLUMN local_bytes      INT UNSIGNED DEFAULT NULL,
    ADD KEY idx_asset_local (local_path);

-- ---------------------------------------------------------------
-- Référence publique de chaque variante : PL-0001-01, PL-0001-02…
--
-- Indispensable : le SKU fournisseur ne doit apparaître nulle part dans
-- le HTML, y compris dans les champs cachés des formulaires d'ajout au
-- devis. Le serveur retraduit cette référence en SKU.
--
-- Comme pour mo_asset, cette colonne survit aux réimports.
-- ---------------------------------------------------------------
ALTER TABLE mo_variant
    ADD COLUMN public_ref VARCHAR(40) DEFAULT NULL,
    ADD UNIQUE KEY uniq_variant_public_ref (public_ref);

-- ---------------------------------------------------------------
-- Les lignes de devis figent déjà leur libellé : rien à changer,
-- mais on note la référence interne pour que le client relise un
-- document cohérent avec ce qu'il a vu à l'écran.
-- ---------------------------------------------------------------
ALTER TABLE app_quote_item
    ADD COLUMN internal_ref VARCHAR(32) DEFAULT NULL AFTER sku;
