labfy-investigation/database/schema_v16.sql

39 lines
1.7 KiB
SQL

/* Migration V16 — saisie manuelle contrôlée des champs d'identité omis. */
CREATE TABLE identity_field_observations_v16 (
id TEXT PRIMARY KEY,
observation_id TEXT NOT NULL,
field_code TEXT NOT NULL,
raw_value TEXT,
corrected_value TEXT,
normalized_value TEXT,
confidence REAL CHECK(confidence IS NULL OR confidence BETWEEN 0 AND 100),
review_status TEXT NOT NULL CHECK(review_status IN ('accepted','modified')),
origin TEXT NOT NULL CHECK(origin IN
('ocr','mrz','manual_override','manual_entry')),
evidence_id TEXT NOT NULL,
ocr_run_id TEXT NOT NULL,
page_number INTEGER NOT NULL CHECK(page_number > 0),
source_x INTEGER, source_y INTEGER, source_width INTEGER,
source_height INTEGER, source_image_width INTEGER,
source_image_height INTEGER,
display_order INTEGER NOT NULL CHECK(display_order >= 0),
reviewed_at TEXT NOT NULL CHECK(length(reviewed_at)=20),
review_note TEXT,
CHECK (
(origin = 'manual_entry' AND raw_value IS NULL
AND corrected_value IS NOT NULL AND confidence IS NULL)
OR
(origin <> 'manual_entry' AND raw_value IS NOT NULL)
),
FOREIGN KEY(observation_id) REFERENCES identity_document_observations(id)
ON DELETE CASCADE,
FOREIGN KEY(evidence_id) REFERENCES preuves(id) ON DELETE CASCADE,
FOREIGN KEY(ocr_run_id) REFERENCES identity_ocr_runs(id) ON DELETE CASCADE
);
INSERT INTO identity_field_observations_v16
SELECT * FROM identity_field_observations;
DROP TABLE identity_field_observations;
ALTER TABLE identity_field_observations_v16
RENAME TO identity_field_observations;
CREATE INDEX idx_identity_fields_observation
ON identity_field_observations(observation_id,display_order);