TC ScriptDocumentation

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.

Télécharger install.sql

#Tables

TableContenu
tc_forensic_profilesFichier génétique : codes ADN / empreintes par personnage
tc_forensic_photosPhotos de l'appareil photo
tc_forensic_foldersDossiers de photos
tc_forensic_analysesAnalyses du laboratoire
tc_forensic_casesDossiers d'enquête
tc_forensic_case_peoplePersonnes liées à un dossier
tc_forensic_case_vehiclesVéhicules liés à un dossier
tc_forensic_case_itemsPièces rattachées à un dossier
tc_forensic_case_notesNotes d'un dossier
tc_forensic_case_linksLiens du tableau d'enquête
tc_forensic_case_officersOfficiers assignés à un dossier
tc_forensic_settingsRéglages en jeu (ex. laboratoires)
tc_forensic_evidencePreuves internes (hors Vision)
tc_forensic_custodyChaî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.

Dernière mise à jour : 7 novembre 2026© 2026 TC Script