feat(ft546): add WCS adapter configuration profiles

This commit is contained in:
zgw
2026-08-11 11:41:50 +08:00
parent f9ebbcf51c
commit 11a21e0688
9 changed files with 605 additions and 0 deletions

View File

@@ -0,0 +1,127 @@
SET XACT_ABORT ON;
BEGIN TRANSACTION;
IF OBJECT_ID('dbo.project_device_endpoint', 'U') IS NULL
BEGIN
CREATE TABLE dbo.project_device_endpoint (
device_id varchar(64) NOT NULL PRIMARY KEY,
device_type varchar(32) NOT NULL,
adapter_type varchar(64) NOT NULL,
endpoint_ip varchar(128) NOT NULL,
endpoint_port int NOT NULL,
protocol_station int NULL,
enabled_flag bit NOT NULL
CONSTRAINT df_project_device_endpoint_enabled DEFAULT (0),
state_version bigint NOT NULL,
updated_time datetime2(3) NOT NULL,
CONSTRAINT ck_project_device_endpoint_port CHECK (
endpoint_port > 0 AND endpoint_port <= 65535),
CONSTRAINT ck_project_device_endpoint_station CHECK (
protocol_station IS NULL OR protocol_station >= 0),
CONSTRAINT ck_project_device_endpoint_version CHECK (state_version >= 0)
);
END;
IF OBJECT_ID('dbo.project_protocol_profile', 'U') IS NULL
BEGIN
CREATE TABLE dbo.project_protocol_profile (
device_id varchar(64) NOT NULL,
profile_version bigint NOT NULL,
device_type varchar(32) NOT NULL,
adapter_type varchar(64) NOT NULL,
corpus_manifest_hash varchar(128) NOT NULL,
profile_json nvarchar(max) NOT NULL,
active_flag bit NOT NULL
CONSTRAINT df_project_protocol_profile_active DEFAULT (0),
created_time datetime2(3) NOT NULL,
activated_time datetime2(3) NULL,
CONSTRAINT pk_project_protocol_profile PRIMARY KEY (
device_id, profile_version),
CONSTRAINT fk_project_protocol_profile_endpoint FOREIGN KEY (device_id)
REFERENCES dbo.project_device_endpoint(device_id),
CONSTRAINT ck_project_protocol_profile_version CHECK (
profile_version > 0)
);
END;
IF NOT EXISTS (
SELECT 1 FROM sys.indexes
WHERE object_id = OBJECT_ID('dbo.project_protocol_profile')
AND name = 'uk_project_protocol_profile_active')
BEGIN
CREATE UNIQUE INDEX uk_project_protocol_profile_active
ON dbo.project_protocol_profile(device_id)
WHERE active_flag = 1;
END;
IF OBJECT_ID('dbo.project_plc_address', 'U') IS NULL
BEGIN
CREATE TABLE dbo.project_plc_address (
device_id varchar(64) NOT NULL,
profile_version bigint NOT NULL,
register_name varchar(64) NOT NULL,
plc_address varchar(64) NOT NULL,
value_type varchar(32) NOT NULL,
semantic_code varchar(128) NOT NULL,
write_order int NULL,
CONSTRAINT pk_project_plc_address PRIMARY KEY (
device_id, profile_version, register_name),
CONSTRAINT fk_project_plc_address_profile FOREIGN KEY (
device_id, profile_version)
REFERENCES dbo.project_protocol_profile(
device_id, profile_version),
CONSTRAINT uk_project_plc_address_owner UNIQUE (
device_id, profile_version, plc_address),
CONSTRAINT ck_project_plc_address_order CHECK (
write_order IS NULL OR write_order > 0)
);
END;
IF OBJECT_ID('dbo.project_protocol_capability_evidence', 'U') IS NULL
BEGIN
CREATE TABLE dbo.project_protocol_capability_evidence (
evidence_id varchar(128) NOT NULL PRIMARY KEY,
device_id varchar(64) NOT NULL,
profile_version bigint NOT NULL,
capability_code varchar(64) NOT NULL,
corpus_manifest_hash varchar(128) NOT NULL,
passing_test_run_id varchar(128) NOT NULL,
git_commit varchar(128) NOT NULL,
regression_passed_flag bit NOT NULL,
approved_by varchar(128) NOT NULL,
approved_time datetime2(3) NOT NULL,
expires_time datetime2(3) NOT NULL,
created_time datetime2(3) NOT NULL,
CONSTRAINT fk_project_capability_evidence_profile FOREIGN KEY (
device_id, profile_version)
REFERENCES dbo.project_protocol_profile(
device_id, profile_version),
CONSTRAINT uk_project_capability_evidence_binding UNIQUE (
device_id, profile_version, capability_code,
corpus_manifest_hash, passing_test_run_id),
CONSTRAINT ck_project_capability_evidence_expiry CHECK (
expires_time > approved_time)
);
END;
IF OBJECT_ID('dbo.project_wms_mapping', 'U') IS NULL
BEGIN
CREATE TABLE dbo.project_wms_mapping (
mapping_id varchar(128) NOT NULL PRIMARY KEY,
external_operation varchar(64) NOT NULL,
external_order_type varchar(64) NULL,
canonical_order_type varchar(32) NOT NULL,
source_field varchar(128) NOT NULL,
destination_field varchar(128) NOT NULL,
callback_url_config_key varchar(128) NULL,
active_flag bit NOT NULL
CONSTRAINT df_project_wms_mapping_active DEFAULT (0),
state_version bigint NOT NULL,
updated_time datetime2(3) NOT NULL,
CONSTRAINT uk_project_wms_mapping_operation UNIQUE (
external_operation, external_order_type),
CONSTRAINT ck_project_wms_mapping_version CHECK (state_version >= 0)
);
END;
COMMIT TRANSACTION;