-- External reported mileage is isolated from telemetry-derived mileage. CREATE TABLE IF NOT EXISTS gzev_mileage_day ( account VARCHAR(64) NOT NULL, stat_date DATE NOT NULL, row_count INT NOT NULL, missing_count INT NOT NULL, last_success_at DATETIME(3) NOT NULL, snapshot_hash CHAR(64) NOT NULL, PRIMARY KEY(account,stat_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS gzev_mileage_snapshot ( account VARCHAR(64) NOT NULL, stat_date DATE NOT NULL, snapshot_hash CHAR(64) NOT NULL, fetched_at DATETIME(3) NOT NULL, raw_pages JSON NOT NULL, PRIMARY KEY(account,stat_date,snapshot_hash) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS gzev_daily_mileage ( account VARCHAR(64) NOT NULL, vin VARCHAR(17) NOT NULL, stat_date DATE NOT NULL, plate_number VARCHAR(32) NOT NULL, vehicle_seq VARCHAR(64) NOT NULL, production_company VARCHAR(255) NOT NULL, operation_company VARCHAR(255) NOT NULL, brand VARCHAR(128) NOT NULL, model VARCHAR(128) NOT NULL, total_km DECIMAL(14,3) NULL, hydrogen_km DECIMAL(14,3) NULL, charge_km DECIMAL(14,3) NULL, quality_status VARCHAR(24) NOT NULL, raw_row JSON NOT NULL, fetched_at DATETIME(3) NOT NULL, PRIMARY KEY(account,vin,stat_date), KEY idx_gzev_plate_date(account,plate_number,stat_date), KEY idx_gzev_date(account,stat_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS gzev_auth_alert ( account VARCHAR(64) NOT NULL PRIMARY KEY, active BOOLEAN NOT NULL DEFAULT TRUE, first_failed_at DATETIME(3) NOT NULL, last_attempt_at DATETIME(3) NULL, last_sent_at DATETIME(3) NULL, last_error VARCHAR(255) NOT NULL DEFAULT '', resolved_at DATETIME(3) NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS gzev_mileage_attempt ( account VARCHAR(64) NOT NULL, stat_date DATE NOT NULL, retry_after DATETIME(3) NOT NULL, PRIMARY KEY(account,stat_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;