feat(platform): consolidate production vehicle data workflows
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
CREATE TABLE IF NOT EXISTS business_scope_sync_run (
|
||||
run_id CHAR(32) NOT NULL PRIMARY KEY,
|
||||
source_system VARCHAR(32) NOT NULL,
|
||||
source_version VARCHAR(96) NOT NULL,
|
||||
status VARCHAR(24) NOT NULL,
|
||||
candidate_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
accepted_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
rejected_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
source_checksum CHAR(64) NOT NULL,
|
||||
started_at DATETIME(3) NOT NULL,
|
||||
finished_at DATETIME(3) NOT NULL,
|
||||
error_message VARCHAR(512) NOT NULL DEFAULT '',
|
||||
INDEX idx_business_scope_run_finished (finished_at, status),
|
||||
INDEX idx_business_scope_run_version (source_version)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS business_customer_vehicle_scope (
|
||||
source_version VARCHAR(96) NOT NULL,
|
||||
customer_id BIGINT NOT NULL,
|
||||
vin VARCHAR(64) NOT NULL,
|
||||
vehicle_id BIGINT NOT NULL,
|
||||
contract_id BIGINT NULL,
|
||||
contract_code VARCHAR(255) NOT NULL DEFAULT '',
|
||||
plate_number VARCHAR(64) NOT NULL DEFAULT '',
|
||||
project_name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
operation_status VARCHAR(32) NOT NULL DEFAULT '',
|
||||
scope_start_at DATETIME(3) NOT NULL,
|
||||
source_updated_at DATETIME(3) NULL,
|
||||
published_at DATETIME(3) NOT NULL,
|
||||
PRIMARY KEY (source_version, customer_id, vin),
|
||||
UNIQUE KEY uk_business_scope_version_vehicle (source_version, vehicle_id),
|
||||
INDEX idx_business_scope_customer (customer_id, source_version, vin),
|
||||
INDEX idx_business_scope_vin (vin, source_version, customer_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS business_scope_rejection (
|
||||
run_id CHAR(32) NOT NULL,
|
||||
row_number INT UNSIGNED NOT NULL,
|
||||
vehicle_id BIGINT NULL,
|
||||
vin VARCHAR(64) NOT NULL DEFAULT '',
|
||||
customer_id BIGINT NULL,
|
||||
contract_id BIGINT NULL,
|
||||
reason_code VARCHAR(64) NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL,
|
||||
PRIMARY KEY (run_id, row_number),
|
||||
INDEX idx_business_scope_rejection_reason (reason_code, created_at),
|
||||
CONSTRAINT fk_business_scope_rejection_run
|
||||
FOREIGN KEY (run_id) REFERENCES business_scope_sync_run(run_id)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS business_scope_state (
|
||||
id TINYINT UNSIGNED NOT NULL PRIMARY KEY,
|
||||
active_version VARCHAR(96) NULL,
|
||||
source_checksum CHAR(64) NULL,
|
||||
candidate_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
accepted_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
rejected_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
generated_at DATETIME(3) NULL,
|
||||
published_at DATETIME(3) NULL,
|
||||
last_success_at DATETIME(3) NULL,
|
||||
CONSTRAINT chk_business_scope_singleton CHECK (id = 1)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO business_scope_state(id) VALUES (1)
|
||||
ON DUPLICATE KEY UPDATE id = VALUES(id);
|
||||
@@ -0,0 +1,23 @@
|
||||
[Unit]
|
||||
Description=Lingniu Vehicle Platform OneOS Scope Sync
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
WorkingDirectory=/opt/lingniu-vehicle-platform/current
|
||||
EnvironmentFile=/opt/lingniu-go-native/env/base.env
|
||||
EnvironmentFile=/opt/lingniu-vehicle-platform/env/platform.env
|
||||
ExecStart=/opt/lingniu-vehicle-platform/current/oneos-scope-sync
|
||||
Nice=10
|
||||
IOSchedulingClass=best-effort
|
||||
IOSchedulingPriority=6
|
||||
TimeoutStartSec=90
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Run OneOS customer vehicle scope sync every two minutes
|
||||
|
||||
[Timer]
|
||||
OnBootSec=3min
|
||||
OnUnitActiveSec=2min
|
||||
RandomizedDelaySec=15s
|
||||
AccuracySec=1s
|
||||
Persistent=true
|
||||
Unit=lingniu-vehicle-oneos-scope-sync.service
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
Reference in New Issue
Block a user