feat: sync vehicle monitoring and accumulated platform updates
Add monitoring metrics, numeric sorting, report-time display, vehicle number labels, and map layout fixes. Include accumulated mileage, hydrogen, OneOS authentication, open platform, ingestion, deployment, and UI updates. Exclude temporary files, generated reports, and credentials. Validate frontend 632 tests and production build, API packages, vehicle-map tests, and release installer tests. Gateway suite has one pre-existing date-sensitive identity throttling test failure reproduced on the parent commit.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
-- Profile-jump identities are intentionally separate from legacy HMAC identities.
|
||||
-- No username-based backfill. Existing-account binding requires reviewed explicit IDs.
|
||||
CREATE TABLE IF NOT EXISTS platform_external_identity (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
issuer VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
|
||||
tenant_id VARCHAR(96) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
|
||||
external_user_id VARCHAR(96) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
UNIQUE KEY uq_external_identity (issuer,tenant_id,external_user_id),
|
||||
UNIQUE KEY uq_external_platform_user (user_id),
|
||||
CONSTRAINT fk_external_identity_user FOREIGN KEY(user_id) REFERENCES platform_user(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
@@ -0,0 +1,54 @@
|
||||
-- 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;
|
||||
@@ -0,0 +1,19 @@
|
||||
CREATE TABLE IF NOT EXISTS platform_customer_mileage_rules (
|
||||
scope_key VARCHAR(160) NOT NULL PRIMARY KEY,
|
||||
version BIGINT NOT NULL,
|
||||
rules_json JSON NOT NULL,
|
||||
updated_by VARCHAR(160) NOT NULL,
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS platform_customer_vehicle_assignment (
|
||||
tenant_ref VARCHAR(100) NOT NULL,
|
||||
vin VARCHAR(32) NOT NULL,
|
||||
plate VARCHAR(40) NOT NULL DEFAULT '',
|
||||
customer_name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
department_name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
responsible_person VARCHAR(255) NOT NULL DEFAULT '',
|
||||
observed_at DATETIME(3) NOT NULL,
|
||||
PRIMARY KEY (tenant_ref, vin),
|
||||
KEY idx_observed (observed_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
@@ -0,0 +1,19 @@
|
||||
CREATE TABLE IF NOT EXISTS platform_customer_hydrogen_daily (
|
||||
vin VARCHAR(32) NOT NULL,
|
||||
stat_date DATE NOT NULL,
|
||||
protocol VARCHAR(32) NOT NULL,
|
||||
source_key VARCHAR(256) NOT NULL,
|
||||
hydrogen_km DECIMAL(18,3) NOT NULL,
|
||||
observed_km DECIMAL(18,3) NOT NULL,
|
||||
classified_km DECIMAL(18,3) NOT NULL,
|
||||
sample_count BIGINT NOT NULL,
|
||||
known_sample_count BIGINT NOT NULL,
|
||||
interval_count BIGINT NOT NULL,
|
||||
rejected_intervals BIGINT NOT NULL,
|
||||
first_event_time DATETIME(3) NOT NULL,
|
||||
last_event_time DATETIME(3) NOT NULL,
|
||||
algorithm_version VARCHAR(64) NOT NULL,
|
||||
calculated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY(vin,stat_date,protocol,source_key),
|
||||
KEY idx_date(stat_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
@@ -0,0 +1,11 @@
|
||||
CREATE TABLE IF NOT EXISTS platform_customer_hydrogen_job (
|
||||
stat_date DATE NOT NULL PRIMARY KEY,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
requested_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
started_at DATETIME(3) NULL,
|
||||
completed_at DATETIME(3) NULL,
|
||||
lease_until DATETIME(3) NULL,
|
||||
lease_owner VARCHAR(64) NOT NULL DEFAULT '',
|
||||
attempts INT NOT NULL DEFAULT 0,
|
||||
error_message VARCHAR(500) NOT NULL DEFAULT ''
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
Reference in New Issue
Block a user