diff --git a/docs/init.sql b/docs/init.sql new file mode 100644 index 0000000..f503ec1 --- /dev/null +++ b/docs/init.sql @@ -0,0 +1,88 @@ +/*create database beacon DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +create user 'beacon'@'%' identified by '5VR2Fz7gAmKF0bv7'; +grant all privileges on beacon.* TO 'beacon'@'%'; +FLUSH PRIVILEGES;*/ + +-- 复合案例定义表 +CREATE TABLE `composite_cases` +( + `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键', + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者', + `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `updated_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者', + `version` SMALLINT NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', + `is_del` TINYINT NOT NULL DEFAULT '0' COMMENT '是否删除:0正常 1删除', + `ext_json` VARCHAR(2048) NOT NULL DEFAULT '' COMMENT '扩展字段', + + `name` VARCHAR(255) NOT NULL COMMENT '案例名称,例如:用户注册与登录流程', + `description` TEXT NULL COMMENT '案例描述', + `status` VARCHAR(50) DEFAULT 'active', + + INDEX idx_name (`name`), + INDEX idx_create_at (`created_at`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8mb4 COMMENT = '复合案例定义表'; + +-- 复合案例步骤表 +CREATE TABLE `composite_case_steps` +( + `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键', + `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建者', + `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `updated_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新者', + `version` SMALLINT NOT NULL DEFAULT '0' COMMENT '乐观锁版本号', + `is_del` TINYINT NOT NULL DEFAULT '0' COMMENT '是否删除:0正常 1删除', + `ext_json` VARCHAR(2048) NOT NULL DEFAULT '' COMMENT '扩展字段', + + `composite_case_id` BIGINT NOT NULL COMMENT '所属复合案例ID', + `step_name` VARCHAR(128) NOT NULL COMMENT '步骤名称', + `step_order` INT NOT NULL COMMENT '步骤执行顺序', + `step_type` VARCHAR(64) NOT NULL COMMENT '步骤类型,例如:api, ui, sql, python', + `activity_name` VARCHAR(128) NOT NULL COMMENT 'Temporal Activity函数名,例如:RunApiTest, RunUiTest', + `parameters_json` JSON NULL COMMENT '步骤特定参数,例如:{"endpoint": "/users", "method": "GET"}', + `is_required` BOOLEAN DEFAULT TRUE COMMENT '是否必需步骤', + `step_description` TEXT NULL COMMENT '步骤描述', + `selector` VARCHAR(255) NULL COMMENT 'UI元素选择器', + `input_value` VARCHAR(255) NULL COMMENT '输入值', + `event_type` VARCHAR(50) NULL COMMENT '事件类型', + `offset_x` INT NULL COMMENT 'X轴偏移量', + `offset_y` INT NULL COMMENT 'Y轴偏移量', + `wait_time_seconds` INT NULL COMMENT '等待时间(秒)', + `success_next_step_order` INT NULL COMMENT '成功时跳转到的步骤顺序', + `failure_next_step_order` INT NULL COMMENT '失败时跳转到的步骤顺序', + `run_condition` JSON NULL COMMENT '执行条件,例如:{"previous_step_id": "step_xyz", "status": "success"}', + + FOREIGN KEY (`composite_case_id`) REFERENCES `composite_cases` (`id`) ON DELETE CASCADE, + INDEX idx_composite_case_id (`composite_case_id`), + INDEX idx_step_order (`composite_case_id`, `step_order`), + INDEX idx_step_type (`step_type`), + UNIQUE KEY uk_case_step_order (`composite_case_id`, `step_order`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8mb4 COMMENT = '复合案例步骤表'; + +ALTER TABLE composite_cases + ADD COLUMN deleted_at DATETIME NULL AFTER updated_at; + +-- 为composite_case_steps表添加缺失的字段 +ALTER TABLE composite_case_steps + ADD COLUMN step_description TEXT NULL AFTER step_name COMMENT '步骤描述'; + +ALTER TABLE composite_case_steps + ADD COLUMN selector VARCHAR(255) NULL AFTER is_required COMMENT 'UI元素选择器'; + +ALTER TABLE composite_case_steps + ADD COLUMN input_value VARCHAR(255) NULL AFTER selector COMMENT '输入值'; + +ALTER TABLE composite_case_steps + ADD COLUMN event_type VARCHAR(50) NULL AFTER input_value COMMENT '事件类型'; + +ALTER TABLE composite_case_steps + ADD COLUMN offset_x INT NULL AFTER event_type COMMENT 'X轴偏移量'; + +ALTER TABLE composite_case_steps + ADD COLUMN offset_y INT NULL AFTER offset_x COMMENT 'Y轴偏移量'; + +ALTER TABLE composite_case_steps + ADD COLUMN wait_time_seconds INT NULL AFTER offset_y COMMENT '等待时间(秒)';