-- Migration 030 : fil d'activite "pertinente" pour la top bar (28/07/2026, retour utilisateur).
-- Distinct de journal_activite (piste d'audit technique generique, avant/apres JSON, alimentee
-- automatiquement par Model::insert()/update()/delete() - reste inchangee, sert /Historique).
-- Ici : evenements metier choisis explicitement par chaque controleur concerne, avec un texte
-- humain deja pret ("Bon ajoute - CLIENT X, 350,00 Dhs") et un lien vers la VRAIE modale de
-- detail de l'appli (jamais un diff JSON). L'acteur est resolu selon la nature de la ligne
-- source (voir ActivitePertinente::log()) plutot que suppose toujours egal a $_SESSION['id'].

CREATE TABLE IF NOT EXISTS activite_pertinente (
  id int(11) NOT NULL AUTO_INCREMENT,
  type varchar(50) NOT NULL,
  table_nom varchar(100) NOT NULL,
  id_ligne int(11) NOT NULL,
  type_acteur enum('user','employe') NOT NULL DEFAULT 'user',
  id_acteur int(11) NOT NULL,
  nom_acteur varchar(150) NOT NULL,
  resume varchar(255) NOT NULL,
  lien varchar(255) NOT NULL,
  id_client int(11) NULL DEFAULT NULL,
  date_action datetime NOT NULL,
  vu tinyint(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (id),
  KEY idx_activite_pertinente_type (type),
  KEY idx_activite_pertinente_date (date_action)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Preference d'affichage par utilisateur (28/07/2026) : semantique "masque", pas "whitelist" -
-- une ligne presente = ce type est cache pour cet utilisateur. Par defaut (aucune ligne), TOUT
-- est visible - un nouveau type d'evenement ajoute plus tard reste visible sans configuration,
-- au lieu d'etre invisible tant que l'utilisateur ne l'active pas explicitement.
CREATE TABLE IF NOT EXISTS parametre_activite_masquee (
  id int(11) NOT NULL AUTO_INCREMENT,
  id_user int(11) NOT NULL,
  type varchar(50) NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uniq_activite_masquee_user_type (id_user, type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
