56 lines
2.5 KiB
SQL
56 lines
2.5 KiB
SQL
CREATE TABLE IF NOT EXISTS vehicle_reconciliation_run (
|
|
run_id VARCHAR(64) NOT NULL PRIMARY KEY,
|
|
status VARCHAR(24) NOT NULL,
|
|
detected_count INT UNSIGNED NOT NULL DEFAULT 0,
|
|
new_count INT UNSIGNED NOT NULL DEFAULT 0,
|
|
active_count INT UNSIGNED NOT NULL DEFAULT 0,
|
|
recovered_count INT UNSIGNED NOT NULL DEFAULT 0,
|
|
rule_counts_json JSON NOT NULL,
|
|
error_message VARCHAR(512) NOT NULL DEFAULT '',
|
|
started_at DATETIME(3) NOT NULL,
|
|
finished_at DATETIME(3) NOT NULL,
|
|
INDEX idx_reconciliation_run_finished (finished_at, status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS vehicle_reconciliation_issue (
|
|
id VARCHAR(64) NOT NULL PRIMARY KEY,
|
|
fingerprint CHAR(64) NOT NULL,
|
|
rule_code VARCHAR(64) NOT NULL,
|
|
category VARCHAR(32) NOT NULL,
|
|
severity VARCHAR(16) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
vin VARCHAR(64) NOT NULL DEFAULT '',
|
|
plate VARCHAR(64) NOT NULL DEFAULT '',
|
|
protocol_a VARCHAR(32) NOT NULL DEFAULT '',
|
|
protocol_b VARCHAR(32) NOT NULL DEFAULT '',
|
|
title VARCHAR(160) NOT NULL,
|
|
summary VARCHAR(500) NOT NULL,
|
|
evidence_json JSON NOT NULL,
|
|
first_seen_at DATETIME(3) NOT NULL,
|
|
last_seen_at DATETIME(3) NOT NULL,
|
|
occurrence_count BIGINT UNSIGNED NOT NULL DEFAULT 1,
|
|
recovered_at DATETIME(3) NULL,
|
|
resolution_note VARCHAR(500) NOT NULL DEFAULT '',
|
|
resolved_by VARCHAR(128) NOT NULL DEFAULT '',
|
|
version INT UNSIGNED NOT NULL DEFAULT 1,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
UNIQUE KEY uk_reconciliation_fingerprint (fingerprint),
|
|
INDEX idx_reconciliation_status (status, severity, last_seen_at),
|
|
INDEX idx_reconciliation_rule (rule_code, last_seen_at),
|
|
INDEX idx_reconciliation_vehicle (vin, last_seen_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS vehicle_reconciliation_action (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
issue_id VARCHAR(64) NOT NULL,
|
|
action VARCHAR(32) NOT NULL,
|
|
from_status VARCHAR(32) NOT NULL,
|
|
to_status VARCHAR(32) NOT NULL,
|
|
actor VARCHAR(128) NOT NULL,
|
|
note VARCHAR(500) NOT NULL DEFAULT '',
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
INDEX idx_reconciliation_action_issue (issue_id, created_at),
|
|
INDEX idx_reconciliation_action_actor (actor, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|