-- ============================================================================ -- 龙虾 E2E 测试三张表(多租户) -- 1) lobster_e2e_run ─ E2E 运行头表 -- 2) lobster_e2e_run_node ─ E2E 节点明细 -- 3) lobster_test_scenario ─ 测试场景剧本(数据驱动回归) -- ============================================================================ DROP TABLE IF EXISTS `lobster_e2e_run`; CREATE TABLE `lobster_e2e_run` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `run_id` VARCHAR(64) NOT NULL COMMENT '运行ID(UUID)', `company_id` BIGINT NULL COMMENT '公司ID', `template_id` BIGINT NULL COMMENT '工作流模板ID', `instance_id` BIGINT NULL COMMENT '工作流实例ID', `scenario_id` BIGINT NULL COMMENT '测试场景ID', `business_desc` VARCHAR(500) NULL COMMENT '业务描述(若是即时生成)', `total_score` DECIMAL(5,2) NULL COMMENT '综合评分(0-100)', `passed_node_cnt` INT DEFAULT 0 COMMENT '通过节点数', `total_node_cnt` INT DEFAULT 0 COMMENT '总节点数', `duration_ms` BIGINT DEFAULT 0 COMMENT '总耗时ms', `status` VARCHAR(20) DEFAULT 'RUNNING' COMMENT 'RUNNING|SUCCESS|FAILED', `error_msg` TEXT NULL COMMENT '错误信息', `evolution_count` INT DEFAULT 0 COMMENT '生成的进化建议数', `create_by` VARCHAR(64) NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_run_id` (`run_id`), KEY `idx_template` (`template_id`), KEY `idx_status_time` (`status`, `create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='龙虾E2E测试运行头表'; DROP TABLE IF EXISTS `lobster_e2e_run_node`; CREATE TABLE `lobster_e2e_run_node` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `run_id` VARCHAR(64) NOT NULL COMMENT '关联 lobster_e2e_run.run_id', `node_seq` INT NOT NULL COMMENT '节点序号', `node_code` VARCHAR(64) NOT NULL COMMENT '节点编码', `node_type` VARCHAR(32) NULL COMMENT '节点类型', `node_name` VARCHAR(128) NULL, `turn_no` INT DEFAULT 1 COMMENT '单节点轮次(多轮对话)', `user_input` TEXT NULL COMMENT '用户输入', `ai_output` TEXT NULL COMMENT 'AI输出', `score` DECIMAL(5,2) NULL COMMENT '本节点本轮评分', `score_detail` TEXT NULL COMMENT '维度评分JSON', `duration_ms` BIGINT DEFAULT 0, `model_used` VARCHAR(64) NULL COMMENT '使用的模型', `evolution_hint` TEXT NULL COMMENT '进化建议草稿', `passed` TINYINT(1) DEFAULT 1 COMMENT '0=未达标 1=达标', `error_msg` TEXT NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_run_seq` (`run_id`, `node_seq`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='龙虾E2E测试节点明细'; DROP TABLE IF EXISTS `lobster_test_scenario`; CREATE TABLE `lobster_test_scenario` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `company_id` BIGINT NULL, `scenario_name` VARCHAR(128) NOT NULL COMMENT '场景名', `business_desc` VARCHAR(500) NULL COMMENT '业务描述(留空则用 template_id)', `template_id` BIGINT NULL COMMENT '关联工作流模板', `user_inputs_json` TEXT NOT NULL COMMENT '用户输入数组JSON', `expected_nodes` TEXT NULL COMMENT '期望命中的节点编码JSON', `min_score` DECIMAL(5,2) DEFAULT 60.00 COMMENT '最低通过分', `enabled` TINYINT(1) DEFAULT 1 COMMENT '是否启用回归', `cron` VARCHAR(64) NULL COMMENT '自定义cron(空则跟随全局)', `last_run_id` VARCHAR(64) NULL, `last_run_status` VARCHAR(20) NULL, `last_run_time` DATETIME NULL, `create_by` VARCHAR(64) NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_enabled` (`enabled`), KEY `idx_company` (`company_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='龙虾测试场景剧本';