BEGIN; ALTER TABLE firmware_assignment DROP CONSTRAINT firmware_assignment_status_check; UPDATE firmware_assignment SET status=CASE status WHEN 'PENDING' THEN 'ASSIGNED' WHEN 'COMMAND_QUEUED' THEN 'ASSIGNED' WHEN 'SUCCEEDED' THEN 'CONFIRMED' ELSE status END; ALTER TABLE firmware_assignment ADD COLUMN progress_percent integer CHECK(progress_percent BETWEEN 0 AND 100), ADD COLUMN last_result jsonb NOT NULL DEFAULT '{}'::jsonb CHECK(jsonb_typeof(last_result)='object'), ADD COLUMN last_reported_at timestamptz, ADD CONSTRAINT firmware_assignment_status_check CHECK(status IN ('ASSIGNED','DOWNLOADING','INSTALLING','CONFIRMED','FAILED','ROLLED_BACK')); COMMIT;