-- =====================================================================
--  ALTALYS PROTECTION — Fiches de controle de site
--  Une fois validee, la fiche est scellee : elle ne peut plus etre
--  modifiee. La direction peut y ajouter une observation.
--  Import via phpMyAdmin > moso8599_altalys > Importer
-- =====================================================================
SET NAMES utf8mb4;

-- ---------------------------------------------------------------------
-- FICHES DE CONTROLE
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `controles_site` (
  `id`            BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `numero`        VARCHAR(20)  NULL,
  `site_id`       BIGINT UNSIGNED NOT NULL,
  `site_nom`      VARCHAR(160) NULL,
  `agent_id`      BIGINT UNSIGNED NULL,
  `type_visite`   ENUM('controleur','responsable','client','cnaps','autre') NOT NULL DEFAULT 'controleur',
  `controleur`    VARCHAR(140) NULL,
  `date_controle` DATETIME NOT NULL,
  `heure_arrivee` TIME NULL,
  `heure_depart`  TIME NULL,
  `resultat`      ENUM('conforme','reserves','non_conforme') NOT NULL DEFAULT 'conforme',
  `observations`  MEDIUMTEXT NULL,
  `actions`       MEDIUMTEXT NULL,
  `latitude`      DECIMAL(10,7) NULL,
  `longitude`     DECIMAL(10,7) NULL,
  `signature`     MEDIUMTEXT NULL,
  `empreinte`     CHAR(64) NULL,
  `cree_par`      VARCHAR(120) NULL,
  `cree_le`       DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_site` (`site_id`,`date_controle`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Reponses point par point
CREATE TABLE IF NOT EXISTS `controle_points` (
  `id`         BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `controle_id` BIGINT UNSIGNED NOT NULL,
  `rubrique`   VARCHAR(80)  NOT NULL,
  `libelle`    VARCHAR(200) NOT NULL,
  `reponse`    ENUM('ok','nok','na') NOT NULL DEFAULT 'ok',
  `remarque`   VARCHAR(255) NULL,
  `ordre`      INT NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  KEY `idx_ctrl` (`controle_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Observations de la direction (la fiche elle-meme reste intacte)
CREATE TABLE IF NOT EXISTS `controle_observations` (
  `id`          BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `controle_id` BIGINT UNSIGNED NOT NULL,
  `auteur`      VARCHAR(120) NOT NULL,
  `texte`       TEXT NOT NULL,
  `cree_le`     DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `lu_le`       DATETIME NULL,
  PRIMARY KEY (`id`),
  KEY `idx_ctrl` (`controle_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- TRAME DES POINTS A CONTROLER (modifiable)
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `controle_trame` (
  `id`       BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `rubrique` VARCHAR(80)  NOT NULL,
  `libelle`  VARCHAR(200) NOT NULL,
  `ordre`    INT NOT NULL DEFAULT 0,
  `actif`    TINYINT(1) NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

DELETE FROM `controle_trame`;
INSERT INTO `controle_trame` (`rubrique`,`libelle`,`ordre`) VALUES
-- Agent
('Agent','Agent present au poste a l''heure prevue',1),
('Agent','Identite de l''agent conforme au planning',2),
('Agent','Carte professionnelle en cours de validite et presentee',3),
('Agent','Insigne d''identification porte de maniere visible',4),
('Agent','Qualifications requises pour le poste (SSIAP, cynophile)',5),
('Agent','Comportement et attitude professionnels',6),
('Agent','Connaissance des consignes du site',7),
-- Tenue et EPI
('Tenue et equipements','Tenue complete, propre et conforme',10),
('Tenue et equipements','Chaussures de securite portees',11),
('Tenue et equipements','Vetement de haute visibilite si requis',12),
('Tenue et equipements','Casque de chantier si requis',13),
('Tenue et equipements','Equipements de protection en bon etat',14),
('Tenue et equipements','Moyen de communication en fonctionnement',15),
('Tenue et equipements','Lampe individuelle disponible et fonctionnelle',16),
-- Poste
('Poste de travail','Local ou guerite en etat de proprete',20),
('Poste de travail','Consignes du site affichees et accessibles',21),
('Poste de travail','Registre de main courante tenu a jour',22),
('Poste de travail','Cles et badges inventories et securises',23),
('Poste de travail','Trousse de premiers secours presente',24),
('Poste de travail','Extincteur accessible et non perime',25),
('Poste de travail','Moyens d''alerte operationnels',26),
-- Prestation
('Execution de la prestation','Rondes effectuees aux frequences prevues',30),
('Execution de la prestation','Points de controle pointes',31),
('Execution de la prestation','Controle d''acces conforme aux consignes',32),
('Execution de la prestation','Main courante renseignee correctement',33),
('Execution de la prestation','Prise et fin de service enregistrees',34),
('Execution de la prestation','Remontee d''information a l''encadrement',35),
-- Site
('Etat du site','Cloture et acces en bon etat',40),
('Etat du site','Eclairage exterieur fonctionnel',41),
('Etat du site','Issues de secours degagees',42),
('Etat du site','Absence de degradation constatee',43),
('Etat du site','Videosurveillance operationnelle',44),
('Etat du site','Signalisation de securite en place',45),
-- Conformite
('Conformite reglementaire','Affichage de l''autorisation d''exercer',50),
('Conformite reglementaire','Registre du personnel accessible',51),
('Conformite reglementaire','Consignes de securite signees par l''agent',52),
('Conformite reglementaire','Plan de prevention disponible si requis',53);

INSERT INTO `parametres` (`cle`,`valeur`) VALUES
 ('controle_prefixe','FC')
ON DUPLICATE KEY UPDATE `cle` = `cle`;
