-- #migration 2026_09_24_001
-- Configurateur de personnalisation produit (CDC configurateur-personnalisation-produit).
-- Une pièce peut porter des dimensions personnalisables (ex : manche, lame,
-- rivet), chacune avec ses options. Chaque option peut avoir un calque
-- (image PNG/WebP transparente, même cadrage pour toutes) et un supplément
-- de prix. L'image finale est recomposée côté client en empilant les calques
-- des options choisies, dimension par dimension, selon `plan` (1 = fond).
-- Pas de FOREIGN KEY (règle CLAUDE.md, errno 150 sur o2switch) : les
-- suppressions en cascade sont faites à la main dans prevente.php.

CREATE TABLE IF NOT EXISTS artisan_prevente_dimensions (
  id              VARCHAR(40)  NOT NULL PRIMARY KEY,
  piece_id        VARCHAR(40)  NOT NULL,
  libelle         VARCHAR(100) NOT NULL DEFAULT '',
  ordre_affichage INT UNSIGNED NOT NULL DEFAULT 0,   -- ordre dans le panneau de choix
  plan            INT UNSIGNED NOT NULL DEFAULT 1,   -- ordre d'empilement des calques (1 = tout au fond)
  created_at      DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at      DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX idx_pdim_piece (piece_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS artisan_prevente_options (
  id               VARCHAR(40)  NOT NULL PRIMARY KEY,
  dimension_id     VARCHAR(40)  NOT NULL,
  libelle          VARCHAR(100) NOT NULL DEFAULT '',
  supplement_cents INT UNSIGNED NOT NULL DEFAULT 0,  -- s'ajoute au prix de base de la pièce
  calque_url       VARCHAR(500) NULL,                -- NULL = option sans impact visuel (ex : taille)
  par_defaut       TINYINT(1)   NOT NULL DEFAULT 0,
  ordre            INT UNSIGNED NOT NULL DEFAULT 0,
  created_at       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX idx_popt_dim (dimension_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Configuration choisie par l'acheteur, figée au moment du paiement
-- (instantané : libellés + suppléments tels qu'au paiement, même si
-- l'artisan modifie ses options ensuite).
ALTER TABLE artisan_prevente_commandes
  ADD COLUMN configuration_json LONGTEXT NULL AFTER quantite;
