-- 创建数据库
CREATE DATABASE IF NOT EXISTS `llm_survey` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE `llm_survey`;

-- 删除旧表（如果存在）
DROP TABLE IF EXISTS `survey_response`;
DROP TABLE IF EXISTS `option`;
DROP TABLE IF EXISTS `question`;
DROP TABLE IF EXISTS `user`;

-- 创建用户表
CREATE TABLE IF NOT EXISTS `user` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(50) NOT NULL COMMENT '姓名',
    `phone` VARCHAR(20) NOT NULL COMMENT '手机号',
    `position_type` VARCHAR(20) NOT NULL COMMENT '岗位性质',
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    UNIQUE KEY `uk_phone` (`phone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';

-- 创建问题表
CREATE TABLE IF NOT EXISTS `question` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `number` INT NOT NULL COMMENT '问题序号',
    `content` TEXT NOT NULL COMMENT '问题内容',
    `type` VARCHAR(20) NOT NULL COMMENT '问题类型',
    `is_required` BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否必答',
    `next` JSON DEFAULT NULL COMMENT '跳转逻辑',
    `is_last` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否是最后一题',
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    UNIQUE KEY `uk_number` (`number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问题表';

-- 创建选项表
CREATE TABLE IF NOT EXISTS `option` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `question_id` BIGINT NOT NULL COMMENT '关联的问题ID',
    `code` VARCHAR(10) NOT NULL COMMENT '选项代码',
    `content` TEXT NOT NULL COMMENT '选项内容',
    `requires_text` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否需要填写文本',
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    FOREIGN KEY (`question_id`) REFERENCES `question` (`id`),
    UNIQUE KEY `uk_question_code` (`question_id`, `code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问题选项表';

-- 创建问卷答案表
CREATE TABLE IF NOT EXISTS `survey_response` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `question_id` BIGINT NOT NULL COMMENT '问题ID',
    `selected_options` JSON DEFAULT NULL COMMENT '选中的选项代码列表',
    `text_answer` TEXT DEFAULT NULL COMMENT '文本答案（用于文本题或需要填写文本的选项）',
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
    FOREIGN KEY (`question_id`) REFERENCES `question` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问卷答案表';

-- 清空现有数据
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `survey_response`;
TRUNCATE TABLE `option`;
TRUNCATE TABLE `question`;
TRUNCATE TABLE `user`;
SET FOREIGN_KEY_CHECKS = 1;

-- 插入通用认知问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (1, '您对大模型（如ChatGPT、通义千问、DeepSeek）的了解程度：', 'SINGLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`) VALUES
(LAST_INSERT_ID(), 'A', '从未接触过'),
(LAST_INSERT_ID(), 'B', '仅在日常简单使用过通用功能（如问答）'),
(LAST_INSERT_ID(), 'C', '在工作中尝试过基础应用'),
(LAST_INSERT_ID(), 'D', '深度研究过技术原理');

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (2, '您觉得大模型可以做到下面哪些事？', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '精准知识问答', FALSE),
(LAST_INSERT_ID(), 'B', '文档生成/代码编写/图片生成', FALSE),
(LAST_INSERT_ID(), 'C', '数据清洗与分析', FALSE),
(LAST_INSERT_ID(), 'D', '客户沟通与服务', FALSE),
(LAST_INSERT_ID(), 'E', '风险识别与预警', FALSE),
(LAST_INSERT_ID(), 'F', '流程自动化', FALSE),
(LAST_INSERT_ID(), 'G', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (3, '您最关注大模型应用的哪些风险？', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '数据隐私泄露', FALSE),
(LAST_INSERT_ID(), 'B', '生成内容不准确', FALSE),
(LAST_INSERT_ID(), 'C', '合规审查风险', FALSE),
(LAST_INSERT_ID(), 'D', '技术使用门槛高', FALSE),
(LAST_INSERT_ID(), 'E', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (4, '您的主要工作内容是：', 'SINGLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`) VALUES
(LAST_INSERT_ID(), 'A', '研发（产品/开发/算法/测试/运维）'),
(LAST_INSERT_ID(), 'B', '项目管理（项目立项/进度跟踪/风险管理）'),
(LAST_INSERT_ID(), 'C', '保险（产品/核保/理赔/精算）'),
(LAST_INSERT_ID(), 'D', '财务（会计/税务/审计）'),
(LAST_INSERT_ID(), 'E', '客服（咨询/投诉/回访）'),
(LAST_INSERT_ID(), 'F', '运营（新媒体运营/广告宣传/活动策划/数据分析）'),
(LAST_INSERT_ID(), 'G', '市场拓展（渠道拓展/商务沟通/产品推广）'),
(LAST_INSERT_ID(), 'H', '人力资源（招聘/培训/绩效/薪酬）'),
(LAST_INSERT_ID(), 'I', '综合事务（行政/法务）'),
(LAST_INSERT_ID(), 'J', '公司高管（战略规划/组织架构/制度建设）');

-- 研发部门专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (5, '您在开发过程中最耗时的重复性工作：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '文档编写', FALSE),
(LAST_INSERT_ID(), 'B', '产品原型、界面设计', FALSE),
(LAST_INSERT_ID(), 'C', '代码编写', FALSE),
(LAST_INSERT_ID(), 'D', '调试与测试', FALSE),
(LAST_INSERT_ID(), 'E', '系统监控与维护', FALSE),
(LAST_INSERT_ID(), 'F', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (6, '您希望大模型如何与现有系统集成：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '回答技术问题', FALSE),
(LAST_INSERT_ID(), 'B', '自动生成代码片段', FALSE),
(LAST_INSERT_ID(), 'C', '智能测试用例生成', FALSE),
(LAST_INSERT_ID(), 'D', '生成需求文档、技术文档', FALSE),
(LAST_INSERT_ID(), 'E', '完整项目生成（如Cursor等）', FALSE),
(LAST_INSERT_ID(), 'F', '代码重构与优化', FALSE),
(LAST_INSERT_ID(), 'G', '辅助设计算法', FALSE),
(LAST_INSERT_ID(), 'H', '其他', TRUE);

-- 项目管理专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (7, '项目管理中最常遇到的挑战是：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '项目进度跟踪与更新', FALSE),
(LAST_INSERT_ID(), 'B', '风险评估与管控', FALSE),
(LAST_INSERT_ID(), 'C', '项目报告生成', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (8, '您希望如何利用大模型提升项目管理效率：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '自动生成立项报告、进度报告、总结报告等', FALSE),
(LAST_INSERT_ID(), 'B', '风险预测与预警', FALSE),
(LAST_INSERT_ID(), 'C', '项目资料自动化整理', FALSE),
(LAST_INSERT_ID(), 'D', '知识库管理', FALSE),
(LAST_INSERT_ID(), 'E', '其他', TRUE);

-- 保险专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (9, '理赔处理中的主要瓶颈是：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '理赔文档处理', FALSE),
(LAST_INSERT_ID(), 'B', '医疗票据审核与核对', FALSE),
(LAST_INSERT_ID(), 'C', '客户资料信息录入与处理', FALSE),
(LAST_INSERT_ID(), 'D', '理赔规则理解与应用', FALSE),
(LAST_INSERT_ID(), 'E', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (10, '大模型可以优化哪些保险工作环节：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '新员工入职培训', FALSE),
(LAST_INSERT_ID(), 'B', '保险产品设计的优化', FALSE),
(LAST_INSERT_ID(), 'C', '自动生成理赔报告与告知书', FALSE),
(LAST_INSERT_ID(), 'D', '自动化资料审核（如OCR识别票据数据、自动识别既往症等）', FALSE),
(LAST_INSERT_ID(), 'E', '异常案件智能预警', FALSE),
(LAST_INSERT_ID(), 'F', '其他', TRUE);

-- 财务专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (11, '日常工作中最重复的任务是：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '财务数据整理与报表生成', FALSE),
(LAST_INSERT_ID(), 'B', '发票和报销单审核', FALSE),
(LAST_INSERT_ID(), 'C', '财务审计与合规检查', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (12, '大模型能如何协助提升财务工作效率：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '各种报表格式的自动转换', FALSE),
(LAST_INSERT_ID(), 'B', '自动生成财务报表与分析摘要', FALSE),
(LAST_INSERT_ID(), 'C', '自动化审计和合规检查', FALSE),
(LAST_INSERT_ID(), 'D', '财务数据智能分析与预测', FALSE),
(LAST_INSERT_ID(), 'E', '其他', TRUE);

-- 客服专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (13, '客户咨询中最常遇到的重复性问题：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '参保资格咨询', FALSE),
(LAST_INSERT_ID(), 'B', '理赔进度查询', FALSE),
(LAST_INSERT_ID(), 'C', '材料补交通知', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (14, '您希望大模型如何辅助客服工作：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '自动生成客户回复模板', FALSE),
(LAST_INSERT_ID(), 'B', '客户咨询自动分类与转接', FALSE),
(LAST_INSERT_ID(), 'C', '智能分析客户情绪与需求', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

-- 运营专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (15, '在运营工作中，最需要自动化支持的任务是：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '热点讯息的获取和跟踪', FALSE),
(LAST_INSERT_ID(), 'B', '数据分析与报告生成', FALSE),
(LAST_INSERT_ID(), 'C', '社交媒体内容创作', FALSE),
(LAST_INSERT_ID(), 'D', '活动效果评估与预测', FALSE),
(LAST_INSERT_ID(), 'E', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (16, '大模型可以如何帮助提升运营效率：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '自动抓取热点讯息', FALSE),
(LAST_INSERT_ID(), 'B', '自动生成社交媒体内容', FALSE),
(LAST_INSERT_ID(), 'C', '用户评论分析与舆情监测', FALSE),
(LAST_INSERT_ID(), 'D', '活动数据自动分析与报告生成', FALSE),
(LAST_INSERT_ID(), 'E', '其他', TRUE);

-- 市场拓展专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (17, '在市场拓展和商务沟通中，您最常遇到的挑战是：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '市场分析和竞争对手跟踪', FALSE),
(LAST_INSERT_ID(), 'B', '渠道拓展计划的自动化和优化', FALSE),
(LAST_INSERT_ID(), 'C', '商务沟通中的信息处理与反馈跟踪', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (18, '您希望大模型如何帮助提升市场拓展效率：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '自动生成市场分析报告与趋势预测', FALSE),
(LAST_INSERT_ID(), 'B', '根据目标客户数据生成个性化营销策略', FALSE),
(LAST_INSERT_ID(), 'C', '自动化生成商务沟通邮件和提案文档', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

-- 人力资源专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (19, '人事部门最耗时的日常任务是：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '招聘简历筛选与面试安排', FALSE),
(LAST_INSERT_ID(), 'B', '员工培训与学习进度管理', FALSE),
(LAST_INSERT_ID(), 'C', '绩效评估与报告生成', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (20, '您希望大模型如何协助提升人事工作效率：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '自动筛选招聘简历并推荐候选人', FALSE),
(LAST_INSERT_ID(), 'B', '自动化培训内容推送与学习路径规划', FALSE),
(LAST_INSERT_ID(), 'C', '绩效评估与员工反馈的自动化分析', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

-- 综合管理专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (21, '在行政工作中，最耗时的任务是：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '合同审查与管理', FALSE),
(LAST_INSERT_ID(), 'B', '会议纪要整理', FALSE),
(LAST_INSERT_ID(), 'C', '文档管理与更新', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (22, '您希望大模型如何协助提升行政工作效率：', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '自动生成合同和协议模板', FALSE),
(LAST_INSERT_ID(), 'B', '自动化会议纪要整理与分发', FALSE),
(LAST_INSERT_ID(), 'C', '自动化文档归档与管理', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

-- 公司高管专属问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (23, '您认为大模型在哪些战略层面的决策中可以发挥作用？', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '市场趋势预测与分析', FALSE),
(LAST_INSERT_ID(), 'B', '组织结构优化与调整', FALSE),
(LAST_INSERT_ID(), 'C', '业务流程优化与重组', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (24, '在公司管理工作中，您最希望大模型协助哪些任务？', 'MULTIPLE_CHOICE', TRUE, FALSE);

INSERT INTO `option` (`question_id`, `code`, `content`, `requires_text`) VALUES
(LAST_INSERT_ID(), 'A', '数据分析与报告自动生成', FALSE),
(LAST_INSERT_ID(), 'B', '战略规划与方案优化', FALSE),
(LAST_INSERT_ID(), 'C', '业务协同与跨部门信息流通', FALSE),
(LAST_INSERT_ID(), 'D', '其他', TRUE);

-- 开放建议问题
INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (25, '您对大模型培训的具体期待：', 'TEXT', FALSE, FALSE);

INSERT INTO `question` (`number`, `content`, `type`, `is_required`, `is_last`)
VALUES (26, '您认为公司引入AI需提前防范的风险：', 'TEXT', FALSE, TRUE);

-- 设置问题跳转逻辑
UPDATE `question`
SET `next` = JSON_OBJECT(
    'A', 5,  -- 研发部门跳转到问题5
    'B', 7,  -- 项目管理跳转到问题7
    'C', 9,  -- 保险部门跳转到问题9
    'D', 11, -- 财务部门跳转到问题11
    'E', 13, -- 客服部门跳转到问题13
    'F', 15, -- 运营部门跳转到问题15
    'G', 17, -- 市场拓展跳转到问题17
    'H', 19, -- 人力资源跳转到问题19
    'I', 21, -- 综合管理跳转到问题21
    'J', 23  -- 公司高管跳转到问题23
)
WHERE `number` = 4;

-- 设置每个领域最后一题的跳转逻辑
-- 研发部门
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 6;

-- 项目管理
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 8;

-- 保险部门
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 10;

-- 财务部门
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 12;

-- 客服部门
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 14;

-- 运营部门
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 16;

-- 市场拓展
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 18;

-- 人力资源
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 20;

-- 综合管理
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 22;

-- 公司高管
UPDATE `question` SET `next` = JSON_OBJECT('*', 25) WHERE `number` = 24;

-- 第一个开放性问题跳转到第二个
UPDATE `question` SET `next` = JSON_OBJECT('*', 26) WHERE `number` = 25;

-- 设置最后一题标记
UPDATE `question` SET `is_last` = TRUE WHERE `number` = 26;