-- #migration 2026_07_28_137
-- Contrat de collaboration entre artisans : une fois qu'une réponse à une
-- demande de collaboration est acceptée par l'auteur, un "match" est créé.
-- Chaque partie répond en aveugle à un questionnaire fermé et symétrique ;
-- les réponses ne se révèlent mutuellement qu'une fois les deux soumises,
-- avec détection automatique de désaccord avant génération du contrat final.
-- Uluana n'est jamais partie au contrat généré (voir contract_text).

CREATE TABLE IF NOT EXISTS collaboration_matches (
  id           INT AUTO_INCREMENT PRIMARY KEY,
  request_id   INT NOT NULL,
  reply_id     INT NOT NULL,
  requester_id VARCHAR(64) NOT NULL,   -- auteur de la demande initiale
  partner_id   VARCHAR(64) NOT NULL,   -- auteur de la réponse acceptée
  status       ENUM('active','finalized') NOT NULL DEFAULT 'active',
  created_at   TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uniq_reply (reply_id),
  KEY idx_requester (requester_id),
  KEY idx_partner (partner_id)
);

CREATE TABLE IF NOT EXISTS collaboration_contract_answers (
  id           INT AUTO_INCREMENT PRIMARY KEY,
  match_id     INT NOT NULL,
  user_id      VARCHAR(64) NOT NULL,
  answers_json TEXT NOT NULL,
  submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  UNIQUE KEY uniq_match_user (match_id, user_id)
);

CREATE TABLE IF NOT EXISTS collaboration_contracts (
  id            INT AUTO_INCREMENT PRIMARY KEY,
  match_id      INT NOT NULL,
  contract_text LONGTEXT NOT NULL,
  finalized_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uniq_match (match_id)
);
