-- Phase 27 / FEAT-05: DTC history synced to remote server. -- Pi pushes current DTC snapshot; server diffs against stored state. CREATE TABLE IF NOT EXISTS dtc_events ( id SERIAL PRIMARY KEY, device_id INTEGER NOT NULL REFERENCES devices(id) ON DELETE CASCADE, code VARCHAR(10) NOT NULL, description TEXT NOT NULL DEFAULT '', mil_on BOOLEAN NOT NULL DEFAULT FALSE, is_active BOOLEAN NOT NULL DEFAULT TRUE, first_seen_at TIMESTAMPTZ NOT NULL DEFAULT now(), last_seen_at TIMESTAMPTZ NOT NULL DEFAULT now(), cleared_at TIMESTAMPTZ, UNIQUE (device_id, code) ); CREATE INDEX IF NOT EXISTS idx_dtc_events_device_active ON dtc_events (device_id, is_active);