-- QuantumTest 表结构 DDL (MySQL 8.0+)
-- 生成时间: 2026-05-06
-- 执行前请确保已创建数据库: CREATE DATABASE IF NOT EXISTS case_platform DEFAULT CHARACTER SET utf8mb4;

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ─── test_cases ───────────────────────────────────────────────────────────────
DROP TABLE IF EXISTS `test_cases`;
CREATE TABLE `test_cases` (
  `id`               VARCHAR(50)  NOT NULL COMMENT '节点唯一ID',
  `case_id`          VARCHAR(50)  DEFAULT NULL COMMENT '用例编号，如 TC-001',
  `text`             VARCHAR(200) NOT NULL COMMENT '用例标题',
  `module`           VARCHAR(100) DEFAULT NULL COMMENT '所属模块',
  `type`             VARCHAR(50)  NOT NULL DEFAULT 'General' COMMENT '类型: General/Web/API/Mobile',
  `priority`         VARCHAR(20)  NOT NULL DEFAULT 'P2' COMMENT '优先级: P0/P1/P2/P3',
  `review_status`    VARCHAR(50)  NOT NULL DEFAULT 'Draft' COMMENT '评审状态: Draft/PendingReview/Reviewed/Deprecated',
  `execution_status` VARCHAR(50)  NOT NULL DEFAULT 'UNTESTED' COMMENT '执行状态: UNTESTED/PASS/FAIL/BLOCK',
  `maintainer`       VARCHAR(100) DEFAULT NULL COMMENT '维护人（飞书 OpenID 或姓名）',
  `requirement_id`   VARCHAR(100) DEFAULT NULL COMMENT '关联需求ID',
  `bug_id`           VARCHAR(100) DEFAULT NULL COMMENT '关联缺陷ID',
  `steps`            JSON         DEFAULT NULL COMMENT '测试步骤 [{action, expected}]',
  `tags`             JSON         DEFAULT NULL COMMENT '标签列表 string[]',
  `parent_id`        VARCHAR(50)  DEFAULT NULL COMMENT '父节点ID，NULL 表示根节点',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_case_id` (`case_id`),
  KEY `idx_parent_id` (`parent_id`),
  KEY `idx_module` (`module`),
  KEY `idx_priority` (`priority`),
  KEY `idx_review_status` (`review_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='测试用例（树状结构，通过 parent_id 关联父子节点）';


-- ─── test_plans ───────────────────────────────────────────────────────────────
DROP TABLE IF EXISTS `test_plans`;
CREATE TABLE `test_plans` (
  `id`         VARCHAR(50)  NOT NULL COMMENT '计划唯一ID',
  `name`       VARCHAR(200) NOT NULL COMMENT '计划名称',
  `type`       VARCHAR(50)  NOT NULL COMMENT '计划类型: Self-test/Regression/Requirement/Smoke',
  `case_ids`   JSON         DEFAULT NULL COMMENT '关联用例ID列表 string[]',
  `assignee`   VARCHAR(100) DEFAULT NULL COMMENT '执行人（飞书 OpenID 或姓名）',
  `created_at` VARCHAR(50)  DEFAULT NULL COMMENT '创建时间 ISO8601',
  PRIMARY KEY (`id`),
  KEY `idx_type` (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='测试计划';


-- ─── test_tasks ───────────────────────────────────────────────────────────────
DROP TABLE IF EXISTS `test_tasks`;
CREATE TABLE `test_tasks` (
  `id`         VARCHAR(50)  NOT NULL COMMENT '任务唯一ID（UUID）',
  `name`       VARCHAR(200) NOT NULL COMMENT '任务名称',
  `status`     VARCHAR(50)  NOT NULL DEFAULT 'PENDING' COMMENT '任务状态: PENDING/RUNNING/COMPLETED',
  `plan_id`    VARCHAR(50)  DEFAULT NULL COMMENT '关联测试计划ID',
  `assignee`   VARCHAR(100) DEFAULT NULL COMMENT '执行人',
  `created_at` VARCHAR(50)  DEFAULT NULL COMMENT '创建时间 ISO8601',
  PRIMARY KEY (`id`),
  KEY `idx_plan_id` (`plan_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='测试执行任务';


-- ─── bugs ─────────────────────────────────────────────────────────────────────
DROP TABLE IF EXISTS `bugs`;
CREATE TABLE `bugs` (
  `id`      VARCHAR(50)  NOT NULL COMMENT '缺陷ID，如 BUG-001',
  `title`   VARCHAR(200) NOT NULL COMMENT '缺陷标题',
  `status`  VARCHAR(50)  NOT NULL DEFAULT 'OPEN' COMMENT '缺陷状态: OPEN/RESOLVED/CLOSED',
  `case_id` VARCHAR(50)  DEFAULT NULL COMMENT '关联用例ID',
  PRIMARY KEY (`id`),
  KEY `idx_case_id` (`case_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='缺陷记录';


SET FOREIGN_KEY_CHECKS = 1;
