-- ============================================================ -- 元景项目-初始迭代 scense 库测试用例域建表 DDL -- 修复 Bug [e2Lck6zIRCXB5g7_HPZn0] -- 环境根因:sd_test_cases 用例库不可达(list_cases 返回字段全空), -- scense 库无该表。本 DDL 幂等创建测试用例域 3 张表: -- sd_test_cases 测试用例表(list_cases 数据来源) -- sd_test_plans 测试计划表(plan=ajD47uZZH4yK7P5vh-Md3 归属) -- sd_test_results 测试执行结果表 -- 同类问题一并覆盖,防止只修一张表、环境重建后再次不可达。 -- 执行方式:部署时由 scripts/init_test_db.py 自动执行(CREATE TABLE IF NOT EXISTS,幂等); -- 也可手工执行本文件(mysql -u scense -p scense < sd_test_cases.sql)。 -- ============================================================ -- ---------- sd_test_cases 测试用例表 ---------- CREATE TABLE IF NOT EXISTS `sd_test_cases` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `case_id` VARCHAR(64) NOT NULL COMMENT '用例编码(业务唯一,如 TC-0001)', `title` VARCHAR(255) NOT NULL COMMENT '用例标题', `description` TEXT NULL COMMENT '用例描述', `module` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '所属模块(world/scene/entity/script_engine/world_snapshot/world_sync)', `plan_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '所属测试计划ID(sd_test_plans.plan_id)', `priority` VARCHAR(16) NOT NULL DEFAULT 'P2' COMMENT '优先级:P0=最高/P1=高/P2=中/P3=低', `preconditions` TEXT NULL COMMENT '前置条件', `steps` TEXT NULL COMMENT '测试步骤(多行文本)', `expected_result` TEXT NULL COMMENT '预期结果', `actual_result` TEXT NULL COMMENT '实际结果(执行后回填)', `status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT '用例状态:draft/active/closed(字典 sd_test_case_status)', `execute_status` VARCHAR(16) NOT NULL DEFAULT 'not_run' COMMENT '执行状态:not_run/pass/fail/blocked(字典 sd_test_exec_status)', `created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人', `updated_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新人', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_case_id` (`case_id`), KEY `idx_plan_id` (`plan_id`), KEY `idx_module` (`module`), KEY `idx_status` (`status`), KEY `idx_execute_status` (`execute_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='测试用例表(list_cases 数据来源)'; -- ---------- sd_test_plans 测试计划表 ---------- CREATE TABLE IF NOT EXISTS `sd_test_plans` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `plan_id` VARCHAR(64) NOT NULL COMMENT '测试计划ID(如 ajD47uZZH4yK7P5vh-Md3)', `plan_name` VARCHAR(255) NOT NULL COMMENT '计划名称', `iteration_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '所属迭代ID', `description` TEXT NULL COMMENT '计划描述', `status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT '计划状态:draft/approved/in_progress/done(字典 sd_test_plan_status)', `created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_plan_id` (`plan_id`), KEY `idx_iteration_id` (`iteration_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='测试计划表'; -- ---------- sd_test_results 测试执行结果表 ---------- CREATE TABLE IF NOT EXISTS `sd_test_results` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `result_id` VARCHAR(64) NOT NULL COMMENT '执行结果ID(业务唯一)', `case_id` VARCHAR(64) NOT NULL COMMENT '用例编码(关联 sd_test_cases.case_id)', `plan_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '所属测试计划ID', `run_status` VARCHAR(16) NOT NULL DEFAULT 'not_run' COMMENT '执行结果:pass/fail/blocked/skipped(字典 sd_test_run_status)', `actual_result` TEXT NULL COMMENT '实际结果描述', `bug_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '失败联动产生的Bug ID(若有)', `executed_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '执行人', `executed_at` DATETIME NULL COMMENT '执行时间', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_result_id` (`result_id`), KEY `idx_case_id` (`case_id`), KEY `idx_plan_id` (`plan_id`), KEY `idx_run_status` (`run_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='测试执行结果表'; -- ---------- 字典:用例状态 ---------- INSERT IGNORE INTO `sd_dict` (`dict_code`, `dict_name`, `item_code`, `item_name`, `sort_no`, `enabled`) VALUES ('sd_test_case_status', '测试用例状态', 'draft', '草稿', 1, 1), ('sd_test_case_status', '测试用例状态', 'active', '启用', 2, 1), ('sd_test_case_status', '测试用例状态', 'closed', '关闭', 3, 1);