-- ============================================================================
-- 数字员工 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='数字员工测试场景剧本';
