-- Ticket08:记录每个数据来源的实际接收边界,并以独占租约防止并发重叠。 CREATE TABLE t_test_reception_interval ( interval_id BIGINT NOT NULL AUTO_INCREMENT, test_id BIGINT NOT NULL, binding_id BIGINT NULL, source_type VARCHAR(32) NOT NULL, source_id BIGINT NOT NULL, source_channel_code VARCHAR(64) NULL, action_at_utc DATETIME(3) NOT NULL, start_boundary_at_utc DATETIME(3) NOT NULL, end_boundary_at_utc DATETIME(3) NULL, boundary_note VARCHAR(255) NULL, interval_status VARCHAR(32) NOT NULL DEFAULT 'OPEN', PRIMARY KEY (interval_id), KEY idx_reception_interval_test (test_id, source_type, source_id, action_at_utc), KEY idx_reception_interval_source (source_type, source_id, source_channel_code, start_boundary_at_utc), CONSTRAINT fk_reception_interval_test FOREIGN KEY (test_id) REFERENCES t_test (test_id), CONSTRAINT fk_reception_interval_binding FOREIGN KEY (binding_id) REFERENCES t_test_channel_binding (binding_id), CONSTRAINT chk_reception_interval_source CHECK (source_type IN ('CABINET_CHANNEL', 'COLLECTOR_CHANNEL')), CONSTRAINT chk_reception_interval_status CHECK (interval_status IN ('OPEN', 'CLOSED')) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='测试数据接收区间'; CREATE TABLE t_collector_channel_lease ( collector_id BIGINT NOT NULL, channel_code VARCHAR(64) NOT NULL, test_id BIGINT NOT NULL, binding_id BIGINT NOT NULL, acquired_by BIGINT NULL, acquired_at_utc DATETIME(3) NOT NULL, PRIMARY KEY (collector_id, channel_code), KEY idx_collector_lease_test (test_id), CONSTRAINT fk_collector_lease_collector FOREIGN KEY (collector_id) REFERENCES t_collector (collector_id), CONSTRAINT fk_collector_lease_test FOREIGN KEY (test_id) REFERENCES t_test (test_id), CONSTRAINT fk_collector_lease_binding FOREIGN KEY (binding_id) REFERENCES t_test_channel_binding (binding_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动采集器通道独占锁'; ALTER TABLE t_test ADD KEY idx_test_reception_status (reception_status, test_status); -- 为独立动作补充按钮权限;仅写系统菜单元数据,不导入演示业务数据。 SET @reception_menu_id := (SELECT COALESCE(MAX(menu_id), 0) + 1 FROM sys_menu); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) SELECT @reception_menu_id, '开始接收', menu_id, 6, '', NULL, NULL, '', 1, 0, 'F', '0', '0', 'system:test:start', '#', 'admin', NOW(), '', NULL, '测试开始接收权限' FROM sys_menu WHERE perms = 'system:test:list' LIMIT 1;