Base de données
Le SQL complet de tc-forensic : 14 tables tc_forensic_*.
#Installation
Importe le fichier une seule fois dans la base utilisée par oxmysql. Il est idempotent. Les tables sont aussi créées automatiquement au démarrage de la ressource.
#Tables
| Table | Contenu |
|---|---|
tc_forensic_profiles | Fichier génétique : codes ADN / empreintes par personnage |
tc_forensic_photos | Photos de l'appareil photo |
tc_forensic_folders | Dossiers de photos |
tc_forensic_analyses | Analyses du laboratoire |
tc_forensic_cases | Dossiers d'enquête |
tc_forensic_case_people | Personnes liées à un dossier |
tc_forensic_case_vehicles | Véhicules liés à un dossier |
tc_forensic_case_items | Pièces rattachées à un dossier |
tc_forensic_case_notes | Notes d'un dossier |
tc_forensic_case_links | Liens du tableau d'enquête |
tc_forensic_case_officers | Officiers assignés à un dossier |
tc_forensic_settings | Réglages en jeu (ex. laboratoires) |
tc_forensic_evidence | Preuves internes (hors Vision) |
tc_forensic_custody | Chaîne de possession (hors Vision) |
Sur Vision, les preuves restent dans les tables evidence* du core ; tc_forensic_evidence et tc_forensic_custody restent vides.
#SQL complet
Afficher install.sql (187 lignes)
install.sqlTélécharger
-- ============================================================================
-- tc-forensic : toutes les tables du script (idempotent, utf8mb4).
-- Les tables sont aussi créées automatiquement au démarrage de la ressource.
-- Base Vision existante (anciennes tables ofr_*) : exécuter migrate_from_oria.sql AVANT le premier démarrage.
-- ============================================================================
CREATE TABLE IF NOT EXISTS tc_forensic_profiles (
identifier VARCHAR(64) NOT NULL PRIMARY KEY,
name VARCHAR(96) NOT NULL,
dob VARCHAR(32) DEFAULT NULL,
sex VARCHAR(8) DEFAULT NULL,
dna_hash VARCHAR(24) DEFAULT NULL,
fp_hash VARCHAR(24) DEFAULT NULL,
dna_at INT DEFAULT NULL,
fp_at INT DEFAULT NULL,
sampled_by VARCHAR(96) DEFAULT NULL,
notes TEXT DEFAULT NULL,
created_at INT NOT NULL,
INDEX idx_tcf_dna (dna_hash),
INDEX idx_tcf_fp (fp_hash)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_photos (
id INT AUTO_INCREMENT PRIMARY KEY,
data MEDIUMTEXT NOT NULL,
thumb MEDIUMTEXT DEFAULT NULL,
icon TEXT DEFAULT NULL,
caption VARCHAR(160) DEFAULT NULL,
author_ident VARCHAR(64) DEFAULT NULL,
author_name VARCHAR(96) DEFAULT NULL,
x FLOAT DEFAULT NULL, y FLOAT DEFAULT NULL, z FLOAT DEFAULT NULL,
street VARCHAR(96) DEFAULT NULL,
traces INT NOT NULL DEFAULT 0,
created_at INT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_folders (
id INT AUTO_INCREMENT PRIMARY KEY,
label VARCHAR(64) NOT NULL,
photos TEXT NOT NULL,
created_by VARCHAR(96) DEFAULT NULL,
created_at INT NOT NULL,
updated_at INT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_analyses (
id INT AUTO_INCREMENT PRIMARY KEY,
kind VARCHAR(16) NOT NULL,
source_kind VARCHAR(16) NOT NULL,
source_label VARCHAR(128) DEFAULT NULL,
evidence_id INT DEFAULT NULL,
payload TEXT DEFAULT NULL,
result MEDIUMTEXT DEFAULT NULL,
status VARCHAR(12) NOT NULL DEFAULT 'pending',
requester_ident VARCHAR(64) DEFAULT NULL,
requester_name VARCHAR(96) DEFAULT NULL,
job VARCHAR(32) DEFAULT NULL,
case_id INT DEFAULT NULL,
created_at INT NOT NULL,
ready_at INT NOT NULL,
INDEX idx_tcf_an_status (status),
INDEX idx_tcf_an_case (case_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_cases (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(120) NOT NULL,
category VARCHAR(48) DEFAULT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'open',
priority TINYINT NOT NULL DEFAULT 2,
summary TEXT DEFAULT NULL,
location VARCHAR(120) DEFAULT NULL,
x FLOAT DEFAULT NULL, y FLOAT DEFAULT NULL, z FLOAT DEFAULT NULL,
lead_ident VARCHAR(64) DEFAULT NULL,
lead_name VARCHAR(96) DEFAULT NULL,
job VARCHAR(32) DEFAULT NULL,
created_at INT NOT NULL,
updated_at INT NOT NULL,
INDEX idx_tcf_case_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_case_people (
id INT AUTO_INCREMENT PRIMARY KEY,
case_id INT NOT NULL,
identifier VARCHAR(64) NOT NULL,
name VARCHAR(96) NOT NULL,
role VARCHAR(32) NOT NULL,
notes VARCHAR(500) DEFAULT NULL,
added_by VARCHAR(96) DEFAULT NULL,
created_at INT NOT NULL,
UNIQUE KEY uniq_tcf_cp (case_id, identifier),
INDEX idx_tcf_cp_ident (identifier)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_case_vehicles (
id INT AUTO_INCREMENT PRIMARY KEY,
case_id INT NOT NULL,
plate VARCHAR(12) NOT NULL,
model VARCHAR(48) DEFAULT NULL,
notes VARCHAR(500) DEFAULT NULL,
added_by VARCHAR(96) DEFAULT NULL,
created_at INT NOT NULL,
UNIQUE KEY uniq_tcf_cv (case_id, plate)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_case_items (
id INT AUTO_INCREMENT PRIMARY KEY,
case_id INT NOT NULL,
kind VARCHAR(16) NOT NULL,
ref_id INT NOT NULL,
label VARCHAR(128) DEFAULT NULL,
notes VARCHAR(500) DEFAULT NULL,
added_by VARCHAR(96) DEFAULT NULL,
created_at INT NOT NULL,
UNIQUE KEY uniq_tcf_ci (case_id, kind, ref_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_case_notes (
id INT AUTO_INCREMENT PRIMARY KEY,
case_id INT NOT NULL,
kind VARCHAR(12) NOT NULL DEFAULT 'note',
body TEXT NOT NULL,
author_ident VARCHAR(64) DEFAULT NULL,
author_name VARCHAR(96) DEFAULT NULL,
created_at INT NOT NULL,
INDEX idx_tcf_cn_case (case_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_case_links (
id INT AUTO_INCREMENT PRIMARY KEY,
case_id INT NOT NULL,
a_kind VARCHAR(16) NOT NULL,
a_ref VARCHAR(64) NOT NULL,
b_kind VARCHAR(16) NOT NULL,
b_ref VARCHAR(64) NOT NULL,
label VARCHAR(64) DEFAULT NULL,
created_at INT NOT NULL,
INDEX idx_tcf_cl_case (case_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_case_officers (
case_id INT NOT NULL,
identifier VARCHAR(64) NOT NULL,
name VARCHAR(96) NOT NULL,
PRIMARY KEY (case_id, identifier)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_settings (
name VARCHAR(32) NOT NULL PRIMARY KEY,
data LONGTEXT NOT NULL,
updated_by VARCHAR(96) DEFAULT NULL,
updated_at INT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ----------------------------------------------------------------------------
-- Preuves internes (utilisées quand le core Vision n'est pas là : ESX, QBCore, Qbox, standalone).
-- Sur Vision, les preuves restent dans les tables `evidence*` du core et ces deux tables restent vides.
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS tc_forensic_evidence (
id INT AUTO_INCREMENT PRIMARY KEY,
scene_id VARCHAR(64) DEFAULT NULL,
type VARCHAR(32) NOT NULL,
coords_x DOUBLE NOT NULL DEFAULT 0,
coords_y DOUBLE NOT NULL DEFAULT 0,
coords_z DOUBLE NOT NULL DEFAULT 0,
metadata LONGTEXT DEFAULT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'on_scene',
collected_by VARCHAR(64) DEFAULT NULL,
collected_by_name VARCHAR(96) DEFAULT NULL,
created_at DATETIME NOT NULL,
collected_at DATETIME DEFAULT NULL,
expires_at DATETIME DEFAULT NULL,
INDEX idx_tcf_ev_scene (status, type, id),
INDEX idx_tcf_ev_coords (coords_x, coords_y)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS tc_forensic_custody (
id INT AUTO_INCREMENT PRIMARY KEY,
evidence_id INT NOT NULL,
action VARCHAR(32) NOT NULL,
actor_id VARCHAR(64) DEFAULT NULL,
actor_name VARCHAR(96) DEFAULT NULL,
notes TEXT DEFAULT NULL,
created_at DATETIME NOT NULL,
INDEX idx_tcf_cu_ev (evidence_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;Photos
Les photos sont stockées en base (MEDIUMTEXT). Pense à surveiller la taille de tc_forensic_photos sur un serveur très actif ; Config.Camera.quality et width contrôlent le poids de chaque photo.