feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

View File

@@ -0,0 +1,841 @@
-- MySQL dump 10.13 Distrib 8.0.43, for Linux (aarch64)
--
-- Host: localhost Database: kaopeilian
-- ------------------------------------------------------
-- Server version 8.0.43
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `kaopeilian`
--
/*!40000 DROP DATABASE IF EXISTS `kaopeilian`*/;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `kaopeilian` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `kaopeilian`;
--
-- Table structure for table `course_exam_settings`
--
DROP TABLE IF EXISTS `course_exam_settings`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `course_exam_settings` (
`id` int NOT NULL AUTO_INCREMENT,
`course_id` int NOT NULL COMMENT '课程ID',
`single_choice_count` int NOT NULL DEFAULT '10' COMMENT '单选题数量',
`multiple_choice_count` int NOT NULL DEFAULT '5' COMMENT '多选题数量',
`true_false_count` int NOT NULL DEFAULT '5' COMMENT '判断题数量',
`fill_blank_count` int NOT NULL DEFAULT '0' COMMENT '填空题数量',
`duration_minutes` int NOT NULL DEFAULT '60' COMMENT '考试时长(分钟)',
`difficulty_level` int NOT NULL DEFAULT '3' COMMENT '难度系数(1-5)',
`passing_score` int NOT NULL DEFAULT '60' COMMENT '及格分数',
`is_enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`show_answer_immediately` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否立即显示答案',
`allow_retake` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否允许重考',
`max_retake_times` int DEFAULT NULL COMMENT '最大重考次数',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
`deleted_at` datetime DEFAULT NULL,
`deleted_by` int DEFAULT NULL COMMENT '删除人ID',
PRIMARY KEY (`id`),
UNIQUE KEY `course_id` (`course_id`),
KEY `ix_course_exam_settings_id` (`id`),
CONSTRAINT `course_exam_settings_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程考试设置表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `course_exam_settings`
--
LOCK TABLES `course_exam_settings` WRITE;
/*!40000 ALTER TABLE `course_exam_settings` DISABLE KEYS */;
INSERT INTO `course_exam_settings` (`id`, `course_id`, `single_choice_count`, `multiple_choice_count`, `true_false_count`, `fill_blank_count`, `duration_minutes`, `difficulty_level`, `passing_score`, `is_enabled`, `show_answer_immediately`, `allow_retake`, `max_retake_times`, `created_at`, `updated_at`, `created_by`, `updated_by`, `is_deleted`, `deleted_at`, `deleted_by`) VALUES (1,1,5,3,2,0,60,2,80,1,1,1,3,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(2,2,4,2,2,2,45,1,75,1,1,1,3,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(3,3,3,2,3,2,50,2,80,1,0,1,2,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(4,4,4,3,2,1,55,2,85,1,1,1,3,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(5,5,5,2,2,1,40,1,70,1,1,1,5,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(6,6,3,2,3,2,45,1,75,1,1,1,3,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(7,7,4,2,2,2,50,2,80,1,0,1,2,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(8,8,5,3,2,0,60,3,85,1,1,1,2,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(9,9,4,2,4,0,50,2,80,1,1,1,3,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(10,10,3,2,3,2,45,1,75,1,1,1,3,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(11,11,5,3,2,0,60,3,90,1,0,1,2,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL),(12,12,4,2,4,0,40,1,70,1,1,1,5,'2025-09-23 02:41:33','2025-09-23 02:41:33',1,1,0,NULL,NULL);
/*!40000 ALTER TABLE `course_exam_settings` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `course_materials`
--
DROP TABLE IF EXISTS `course_materials`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `course_materials` (
`id` int NOT NULL AUTO_INCREMENT,
`course_id` int NOT NULL COMMENT '所属课程ID',
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '资料名称',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '资料描述',
`file_url` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件URL',
`file_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件类型',
`file_size` int NOT NULL COMMENT '文件大小(字节)',
`sort_order` int DEFAULT '0' COMMENT '排序序号',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_course_id` (`course_id`),
KEY `idx_is_deleted` (`is_deleted`),
CONSTRAINT `course_materials_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程资料表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `course_materials`
--
LOCK TABLES `course_materials` WRITE;
/*!40000 ALTER TABLE `course_materials` DISABLE KEYS */;
/*!40000 ALTER TABLE `course_materials` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `courses`
--
DROP TABLE IF EXISTS `courses`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `courses` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程名称',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '课程描述',
`category` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '课程分类',
`status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'draft' COMMENT '课程状态',
`cover_image` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '封面图片',
`duration_hours` decimal(5,2) DEFAULT NULL COMMENT '课程时长(小时)',
`difficulty_level` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '难度等级',
`tags` json DEFAULT NULL COMMENT '标签列表',
`published_at` datetime DEFAULT NULL COMMENT '发布时间',
`publisher_id` int DEFAULT NULL COMMENT '发布人ID',
`sort_order` int DEFAULT '0' COMMENT '排序',
`is_featured` tinyint(1) DEFAULT '0' COMMENT '是否推荐',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_status` (`status`),
KEY `idx_category` (`category`),
KEY `idx_is_featured` (`is_featured`),
KEY `idx_is_deleted` (`is_deleted`),
KEY `idx_sort_order` (`sort_order`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程信息表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `courses`
--
LOCK TABLES `courses` WRITE;
/*!40000 ALTER TABLE `courses` DISABLE KEYS */;
INSERT INTO `courses` (`id`, `name`, `description`, `category`, `status`, `cover_image`, `duration_hours`, `difficulty_level`, `tags`, `published_at`, `publisher_id`, `sort_order`, `is_featured`, `is_deleted`, `deleted_at`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES (1,'皮肤生理学基础','学习皮肤结构、功能和常见问题,为专业护理打下坚实基础','technology','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(2,'医美产品知识与应用','全面了解各类医美产品的成分、功效和适用人群,掌握产品推荐技巧','technology','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(3,'美容仪器操作与维护','掌握各类美容仪器的操作方法、注意事项和日常维护保养','technology','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(4,'医美项目介绍与咨询','详细了解各类医美项目的原理、效果和适应症,提升咨询专业度','business','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(5,'轻医美销售技巧','学习专业的销售话术、客户需求分析和成交技巧,提升业绩能力','business','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(6,'客户服务与投诉处理','提升服务意识,掌握客户投诉处理的方法和技巧,维护品牌形象','management','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(7,'社媒营销与私域运营','学习如何通过社交媒体进行品牌推广和客户维护,建立私域流量','business','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(8,'门店运营管理','学习门店日常管理、团队建设和业绩管理的方法和技巧','management','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(9,'卫生消毒与感染控制','学习医美机构的卫生标准和消毒流程,确保服务安全合规','general','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(10,'美容心理学','了解客户心理需求,掌握沟通技巧,提升服务满意度','general','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(11,'法律法规与行业规范','学习医美行业相关法律法规,确保合规经营','general','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(12,'新员工入职培训','新员工必修课程,包含企业文化、基础知识和操作规范','general','published',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24');
/*!40000 ALTER TABLE `courses` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `exam_results`
--
DROP TABLE IF EXISTS `exam_results`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `exam_results` (
`id` int NOT NULL AUTO_INCREMENT,
`exam_id` int NOT NULL COMMENT '考试ID',
`question_id` int NOT NULL COMMENT '题目ID',
`user_answer` json DEFAULT NULL COMMENT '用户答案',
`is_correct` tinyint(1) NOT NULL COMMENT '是否正确',
`score` decimal(5,2) NOT NULL COMMENT '考试得分',
`answer_time` int DEFAULT NULL COMMENT '答题时长(秒)',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_exam_id` (`exam_id`),
KEY `idx_question_id` (`question_id`),
CONSTRAINT `exam_results_ibfk_1` FOREIGN KEY (`exam_id`) REFERENCES `exams` (`id`) ON DELETE CASCADE,
CONSTRAINT `exam_results_ibfk_2` FOREIGN KEY (`question_id`) REFERENCES `questions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='考试结果表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `exam_results`
--
LOCK TABLES `exam_results` WRITE;
/*!40000 ALTER TABLE `exam_results` DISABLE KEYS */;
/*!40000 ALTER TABLE `exam_results` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `exams`
--
DROP TABLE IF EXISTS `exams`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `exams` (
`id` int NOT NULL AUTO_INCREMENT,
`user_id` int NOT NULL COMMENT '用户ID',
`course_id` int NOT NULL COMMENT '课程ID',
`exam_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '考试名称',
`question_count` int DEFAULT NULL COMMENT '题目数量',
`total_score` decimal(5,2) DEFAULT NULL COMMENT '总分',
`pass_score` decimal(5,2) DEFAULT NULL COMMENT '及格分',
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
`duration_minutes` int DEFAULT NULL COMMENT '考试时长(分钟)',
`score` decimal(5,2) DEFAULT NULL COMMENT '得分',
`is_passed` tinyint(1) DEFAULT '0' COMMENT '是否通过',
`status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'pending' COMMENT '考试状态',
`questions` json DEFAULT NULL COMMENT '题目数据(JSON格式)',
`answers` json DEFAULT NULL COMMENT '答案数据(JSON格式)',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_course_id` (`course_id`),
KEY `idx_status` (`status`),
CONSTRAINT `exams_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
CONSTRAINT `exams_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='考试记录表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `exams`
--
LOCK TABLES `exams` WRITE;
/*!40000 ALTER TABLE `exams` DISABLE KEYS */;
/*!40000 ALTER TABLE `exams` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `growth_paths`
--
DROP TABLE IF EXISTS `growth_paths`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `growth_paths` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '成长路径名称',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '路径描述',
`target_role` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目标角色',
`courses` json DEFAULT NULL COMMENT '课程列表',
`estimated_duration_days` int DEFAULT NULL COMMENT '预计完成天数',
`is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用',
`sort_order` int DEFAULT '0' COMMENT '排序顺序',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_is_active` (`is_active`),
KEY `idx_is_deleted` (`is_deleted`),
KEY `idx_sort_order` (`sort_order`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成长路径表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `growth_paths`
--
LOCK TABLES `growth_paths` WRITE;
/*!40000 ALTER TABLE `growth_paths` DISABLE KEYS */;
INSERT INTO `growth_paths` (`id`, `name`, `description`, `target_role`, `courses`, `estimated_duration_days`, `is_active`, `sort_order`, `is_deleted`, `deleted_at`, `created_at`, `updated_at`) VALUES (1,'美容顾问成长路径','从初级美容顾问到资深顾问的完整成长路径,包含专业技能和销售能力提升','资深美容顾问',NULL,NULL,1,0,0,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(2,'美容技师进阶路径','美容技师的技能进阶路径,从基础护理到高级项目操作','高级美容技师',NULL,NULL,1,0,0,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(3,'管理岗位培养路径','从一线员工到管理岗位的培养路径,包含领导力和管理技能','店长/区域经理',NULL,NULL,1,0,0,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(4,'医美咨询师专业路径','医美咨询师的专业发展路径,深度掌握医美项目知识','资深医美咨询师',NULL,NULL,1,0,0,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48');
/*!40000 ALTER TABLE `growth_paths` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `knowledge_points`
--
DROP TABLE IF EXISTS `knowledge_points`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `knowledge_points` (
`id` int NOT NULL AUTO_INCREMENT,
`course_id` int DEFAULT NULL COMMENT '所属课程ID',
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '知识点名称',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '知识点描述',
`parent_id` int DEFAULT NULL COMMENT '父知识点ID',
`level` int DEFAULT '1' COMMENT '层级深度',
`path` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '知识点路径',
`sort_order` int DEFAULT '0' COMMENT '排序顺序',
`weight` decimal(3,2) DEFAULT '1.00' COMMENT '权重',
`is_required` tinyint(1) DEFAULT '1' COMMENT '是否必修',
`estimated_hours` decimal(4,2) DEFAULT NULL COMMENT '预计学习时间(小时)',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_course_id` (`course_id`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_is_deleted` (`is_deleted`),
KEY `idx_sort_order` (`sort_order`),
CONSTRAINT `knowledge_points_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON DELETE CASCADE,
CONSTRAINT `knowledge_points_ibfk_2` FOREIGN KEY (`parent_id`) REFERENCES `knowledge_points` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='知识点表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `knowledge_points`
--
LOCK TABLES `knowledge_points` WRITE;
/*!40000 ALTER TABLE `knowledge_points` DISABLE KEYS */;
/*!40000 ALTER TABLE `knowledge_points` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `material_knowledge_points`
--
DROP TABLE IF EXISTS `material_knowledge_points`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `material_knowledge_points` (
`id` int NOT NULL AUTO_INCREMENT,
`material_id` int NOT NULL COMMENT '资料ID',
`knowledge_point_id` int NOT NULL COMMENT '知识点ID',
`sort_order` int DEFAULT '0' COMMENT '排序顺序',
`is_ai_generated` tinyint(1) DEFAULT '0' COMMENT '是否AI生成',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_material_knowledge` (`material_id`,`knowledge_point_id`),
KEY `idx_material_id` (`material_id`),
KEY `idx_knowledge_point_id` (`knowledge_point_id`),
CONSTRAINT `material_knowledge_points_ibfk_1` FOREIGN KEY (`material_id`) REFERENCES `course_materials` (`id`) ON DELETE CASCADE,
CONSTRAINT `material_knowledge_points_ibfk_2` FOREIGN KEY (`knowledge_point_id`) REFERENCES `knowledge_points` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='资料知识点关联表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `material_knowledge_points`
--
LOCK TABLES `material_knowledge_points` WRITE;
/*!40000 ALTER TABLE `material_knowledge_points` DISABLE KEYS */;
/*!40000 ALTER TABLE `material_knowledge_points` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `position_courses`
--
DROP TABLE IF EXISTS `position_courses`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `position_courses` (
`id` int NOT NULL AUTO_INCREMENT,
`position_id` int NOT NULL COMMENT '岗位ID',
`course_id` int NOT NULL COMMENT '课程ID',
`course_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'required' COMMENT '课程类型(必修/选修)',
`priority` int DEFAULT '0' COMMENT '优先级',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
`deleted_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uix_position_course` (`position_id`,`course_id`,`is_deleted`),
KEY `course_id` (`course_id`),
KEY `ix_position_courses_id` (`id`),
CONSTRAINT `position_courses_ibfk_1` FOREIGN KEY (`position_id`) REFERENCES `positions` (`id`),
CONSTRAINT `position_courses_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='岗位课程关联表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `position_courses`
--
LOCK TABLES `position_courses` WRITE;
/*!40000 ALTER TABLE `position_courses` DISABLE KEYS */;
INSERT INTO `position_courses` (`id`, `position_id`, `course_id`, `course_type`, `priority`, `created_at`, `updated_at`, `created_by`, `updated_by`, `is_deleted`, `deleted_at`) VALUES (1,1,6,'required',1,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(2,1,8,'required',2,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(3,1,11,'required',3,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(4,1,12,'required',4,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(5,3,1,'required',1,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(6,3,2,'required',2,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(7,3,5,'required',3,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(8,3,6,'required',4,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(9,3,10,'required',5,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(10,3,12,'required',6,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(11,4,1,'required',1,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(12,4,2,'required',2,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(13,4,4,'required',3,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(14,4,5,'required',4,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(15,4,9,'required',5,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(16,4,12,'required',6,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(17,5,1,'required',1,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(18,5,2,'required',2,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(19,5,3,'required',3,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(20,5,9,'required',4,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(21,5,12,'required',5,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(22,7,6,'required',1,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(23,7,10,'required',2,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(24,7,12,'required',3,'2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL);
/*!40000 ALTER TABLE `position_courses` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `position_members`
--
DROP TABLE IF EXISTS `position_members`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `position_members` (
`id` int NOT NULL AUTO_INCREMENT,
`position_id` int NOT NULL COMMENT '岗位ID',
`user_id` int NOT NULL COMMENT '用户ID',
`role` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '在岗位中的角色',
`joined_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
`deleted_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uix_position_user` (`position_id`,`user_id`,`is_deleted`),
KEY `user_id` (`user_id`),
KEY `ix_position_members_id` (`id`),
CONSTRAINT `position_members_ibfk_1` FOREIGN KEY (`position_id`) REFERENCES `positions` (`id`),
CONSTRAINT `position_members_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='岗位成员关联表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `position_members`
--
LOCK TABLES `position_members` WRITE;
/*!40000 ALTER TABLE `position_members` DISABLE KEYS */;
INSERT INTO `position_members` (`id`, `position_id`, `user_id`, `role`, `joined_at`, `created_at`, `updated_at`, `created_by`, `updated_by`, `is_deleted`, `deleted_at`) VALUES (1,1,3,NULL,'2025-09-22 18:42:32','2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(2,1,4,NULL,'2025-09-22 18:42:32','2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(3,3,5,NULL,'2025-09-22 18:42:32','2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(4,4,6,NULL,'2025-09-22 18:42:32','2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(5,5,7,NULL,'2025-09-22 18:42:32','2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL),(6,7,8,NULL,'2025-09-22 18:42:32','2025-09-23 02:42:32','2025-09-23 02:42:32',NULL,NULL,0,NULL);
/*!40000 ALTER TABLE `position_members` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `positions`
--
DROP TABLE IF EXISTS `positions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `positions` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '岗位名称',
`code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '岗位代码',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '岗位描述',
`parent_id` int DEFAULT NULL COMMENT '上级岗位ID',
`status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'active' COMMENT '岗位状态',
`skills` json DEFAULT NULL COMMENT '核心技能',
`level` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '岗位级别',
`sort_order` int DEFAULT '0' COMMENT '排序',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`),
KEY `parent_id` (`parent_id`),
KEY `idx_positions_name` (`name`),
CONSTRAINT `positions_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `positions` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='岗位信息表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `positions`
--
LOCK TABLES `positions` WRITE;
/*!40000 ALTER TABLE `positions` DISABLE KEYS */;
INSERT INTO `positions` (`id`, `name`, `code`, `description`, `parent_id`, `status`, `skills`, `level`, `sort_order`, `is_deleted`, `deleted_at`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES (1,'区域经理','region_manager','负责多家门店的运营管理和业绩达成,制定区域发展战略',NULL,'active',NULL,'expert',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(2,'店长','store_manager','负责门店日常运营管理,团队建设和业绩达成',NULL,'active',NULL,'senior',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(3,'美容顾问','beauty_consultant','为客户提供专业的美容咨询和个性化方案设计',NULL,'active',NULL,'intermediate',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(4,'医美咨询师','medical_beauty_consultant','提供医疗美容项目咨询和专业方案制定',NULL,'active',NULL,'senior',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(5,'美容技师','beauty_therapist','为客户提供专业的美容护理和技术服务',NULL,'active',NULL,'intermediate',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(6,'美容护士','beauty_nurse','协助医生进行医美项目操作,负责术后护理指导',NULL,'active',NULL,'intermediate',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(7,'前台接待','receptionist','负责客户接待、预约管理和前台事务处理',NULL,'active',NULL,'junior',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24'),(8,'市场专员','marketing_specialist','负责门店营销活动策划、执行和客户维护',NULL,'active',NULL,'intermediate',0,0,NULL,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24');
/*!40000 ALTER TABLE `positions` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `questions`
--
DROP TABLE IF EXISTS `questions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `questions` (
`id` int NOT NULL AUTO_INCREMENT,
`course_id` int NOT NULL COMMENT '所属课程ID',
`question_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '题目类型',
`title` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '题目标题',
`content` text COLLATE utf8mb4_unicode_ci COMMENT '题目内容',
`options` json DEFAULT NULL COMMENT '选项内容',
`correct_answer` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '正确答案',
`explanation` text COLLATE utf8mb4_unicode_ci COMMENT '答案解析',
`score` float DEFAULT '10' COMMENT '题目分值',
`difficulty` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'medium' COMMENT '难度等级',
`tags` json DEFAULT NULL COMMENT '题目标签',
`usage_count` int DEFAULT '0' COMMENT '使用次数',
`correct_count` int DEFAULT '0' COMMENT '答对次数',
`is_active` tinyint(1) DEFAULT '1' COMMENT '是否启用',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_course_id` (`course_id`),
KEY `idx_question_type` (`question_type`),
KEY `idx_difficulty` (`difficulty`),
KEY `idx_is_active` (`is_active`),
CONSTRAINT `questions_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='题目表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `questions`
--
LOCK TABLES `questions` WRITE;
/*!40000 ALTER TABLE `questions` DISABLE KEYS */;
INSERT INTO `questions` (`id`, `course_id`, `question_type`, `title`, `content`, `options`, `correct_answer`, `explanation`, `score`, `difficulty`, `tags`, `usage_count`, `correct_count`, `is_active`, `created_at`, `updated_at`) VALUES (1,1,'single_choice','皮肤的最外层是什么?',NULL,'[{\"text\": \"表皮\", \"label\": \"A\"}, {\"text\": \"真皮\", \"label\": \"B\"}, {\"text\": \"皮下组织\", \"label\": \"C\"}, {\"text\": \"角质层\", \"label\": \"D\"}]','A','A选项是表皮这是皮肤的最外层起到保护作用',10,'easy',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(2,2,'single_choice','透明质酸的主要功效是什么?',NULL,'[{\"text\": \"美白淡斑\", \"label\": \"A\"}, {\"text\": \"保湿补水\", \"label\": \"B\"}, {\"text\": \"紧致提升\", \"label\": \"C\"}, {\"text\": \"去除皱纹\", \"label\": \"D\"}]','B','B选项是保湿补水透明质酸具有强大的保湿能力',10,'easy',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(3,3,'multiple_choice','射频美容仪的禁忌症包括哪些?',NULL,'[{\"text\": \"孕期和哺乳期\", \"label\": \"A\"}, {\"text\": \"皮肤过敏\", \"label\": \"B\"}, {\"text\": \"心脏起搏器\", \"label\": \"C\"}, {\"text\": \"轻微痤疮\", \"label\": \"D\"}]','A,C','A和C选项都是射频美容仪的禁忌症需要特别注意',15,'medium',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(4,4,'true_false','水光针适合所有肤质的客户',NULL,'[{\"text\": \"正确\", \"label\": \"A\"}, {\"text\": \"错误\", \"label\": \"B\"}]','B','水光针虽然适用范围广,但仍有一些禁忌症和不适合的肤质',10,'easy',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(5,4,'fill_blank','肉毒素注射后____小时内不能平躺','肉毒素注射后【】小时内不能平躺,以免影响药物分布效果。',NULL,'4','肉毒素注射后4小时内不能平躺以免影响药物分布',10,'medium',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(6,5,'single_choice','客户咨询时最重要的是什么?',NULL,'[{\"text\": \"倾听客户需求\", \"label\": \"A\"}, {\"text\": \"推荐最贵的产品\", \"label\": \"B\"}, {\"text\": \"快速成交\", \"label\": \"C\"}, {\"text\": \"展示专业知识\", \"label\": \"D\"}]','A','A选项是倾听客户需求这是专业咨询的基础',10,'easy',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(7,6,'single_choice','处理客户投诉的第一步是什么?',NULL,'[{\"text\": \"解释原因\", \"label\": \"A\"}, {\"text\": \"耐心倾听\", \"label\": \"B\"}, {\"text\": \"提供补偿\", \"label\": \"C\"}, {\"text\": \"转交上级\", \"label\": \"D\"}]','B','B选项是耐心倾听让客户充分表达不满是处理投诉的第一步',10,'easy',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(8,7,'true_false','社交媒体营销只需要发布产品信息',NULL,'[{\"text\": \"正确\", \"label\": \"A\"}, {\"text\": \"错误\", \"label\": \"B\"}]','B','社交媒体营销需要内容多样化,包括教育内容、互动内容等',10,'easy',NULL,0,0,1,'2025-09-23 02:39:48','2025-09-23 02:39:48');
/*!40000 ALTER TABLE `questions` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `teams`
--
DROP TABLE IF EXISTS `teams`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `teams` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '团队名称',
`code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '团队代码',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '团队描述',
`team_type` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '团队类型',
`is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
`leader_id` int DEFAULT NULL COMMENT '负责人ID',
`parent_id` int DEFAULT NULL COMMENT '父团队ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
UNIQUE KEY `code` (`code`),
KEY `leader_id` (`leader_id`),
KEY `parent_id` (`parent_id`),
KEY `idx_team_type` (`team_type`),
KEY `idx_is_active` (`is_active`),
CONSTRAINT `teams_ibfk_1` FOREIGN KEY (`leader_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
CONSTRAINT `teams_ibfk_2` FOREIGN KEY (`parent_id`) REFERENCES `teams` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='团队信息表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `teams`
--
LOCK TABLES `teams` WRITE;
/*!40000 ALTER TABLE `teams` DISABLE KEYS */;
INSERT INTO `teams` (`id`, `name`, `code`, `description`, `team_type`, `is_active`, `leader_id`, `parent_id`, `created_at`, `updated_at`, `is_deleted`, `deleted_at`) VALUES (1,'管理层','MANAGEMENT','负责公司整体战略规划和运营管理','department',1,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(2,'北京运营团队','BJ_OPERATIONS','负责北京地区所有门店的运营管理','department',1,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(3,'上海运营团队','SH_OPERATIONS','负责上海地区所有门店的运营管理','department',1,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(4,'技术培训部','TECH_TRAINING','负责员工技术培训和考核','department',1,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(5,'客服质量部','QUALITY_SERVICE','负责客户服务质量监督和改进','department',1,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(6,'新员工培训小组','NEW_EMPLOYEE_TRAINING','专门负责新员工入职培训','study_group',1,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL);
/*!40000 ALTER TABLE `teams` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `training_messages`
--
DROP TABLE IF EXISTS `training_messages`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `training_messages` (
`id` int NOT NULL AUTO_INCREMENT,
`session_id` int NOT NULL COMMENT '会话ID',
`role` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息角色',
`type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息类型',
`content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息内容',
`voice_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '语音文件URL',
`voice_duration` int DEFAULT NULL COMMENT '语音时长(秒)',
`message_metadata` json DEFAULT NULL COMMENT '消息元数据',
`coze_message_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Coze消息ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_session_id` (`session_id`),
KEY `idx_role` (`role`),
CONSTRAINT `training_messages_ibfk_1` FOREIGN KEY (`session_id`) REFERENCES `training_sessions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='培训消息表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `training_messages`
--
LOCK TABLES `training_messages` WRITE;
/*!40000 ALTER TABLE `training_messages` DISABLE KEYS */;
/*!40000 ALTER TABLE `training_messages` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `training_reports`
--
DROP TABLE IF EXISTS `training_reports`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `training_reports` (
`id` int NOT NULL AUTO_INCREMENT,
`session_id` int NOT NULL COMMENT '会话ID',
`user_id` int NOT NULL COMMENT '用户ID',
`overall_score` decimal(5,2) DEFAULT NULL COMMENT '总体评分',
`dimension_scores` json DEFAULT NULL COMMENT '各维度得分',
`strengths` text COLLATE utf8mb4_unicode_ci COMMENT '优势点',
`weaknesses` text COLLATE utf8mb4_unicode_ci COMMENT '待改进点',
`suggestions` text COLLATE utf8mb4_unicode_ci COMMENT '改进建议',
`detailed_analysis` text COLLATE utf8mb4_unicode_ci COMMENT '详细分析',
`transcript` text COLLATE utf8mb4_unicode_ci COMMENT '对话记录',
`statistics` json DEFAULT NULL COMMENT '统计数据',
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `session_id` (`session_id`),
KEY `idx_user_id` (`user_id`),
CONSTRAINT `training_reports_ibfk_1` FOREIGN KEY (`session_id`) REFERENCES `training_sessions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='培训报告表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `training_reports`
--
LOCK TABLES `training_reports` WRITE;
/*!40000 ALTER TABLE `training_reports` DISABLE KEYS */;
/*!40000 ALTER TABLE `training_reports` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `training_scenes`
--
DROP TABLE IF EXISTS `training_scenes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `training_scenes` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '场景名称',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '场景描述',
`category` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '场景分类',
`ai_config` json DEFAULT NULL COMMENT 'AI配置',
`prompt_template` text COLLATE utf8mb4_unicode_ci COMMENT '提示模板',
`evaluation_criteria` json DEFAULT NULL COMMENT '评估标准',
`status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'active' COMMENT '场景状态',
`is_public` tinyint(1) DEFAULT '1' COMMENT '是否公开',
`required_level` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '所需用户等级',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_status` (`status`),
KEY `idx_category` (`category`),
KEY `idx_is_public` (`is_public`),
KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='培训场景表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `training_scenes`
--
LOCK TABLES `training_scenes` WRITE;
/*!40000 ALTER TABLE `training_scenes` DISABLE KEYS */;
INSERT INTO `training_scenes` (`id`, `name`, `description`, `category`, `ai_config`, `prompt_template`, `evaluation_criteria`, `status`, `is_public`, `required_level`, `is_deleted`, `deleted_at`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES (1,'客户咨询模拟','模拟真实的客户咨询场景,练习专业咨询技巧','客户服务',NULL,NULL,NULL,'ACTIVE',1,NULL,0,NULL,NULL,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(2,'产品推荐演练','针对不同客户需求进行产品推荐的实战演练','销售技巧',NULL,NULL,NULL,'ACTIVE',1,NULL,0,NULL,NULL,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(3,'投诉处理训练','模拟各种客户投诉情况,训练处理技巧和话术','客户服务',NULL,NULL,NULL,'ACTIVE',1,NULL,0,NULL,NULL,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(4,'项目操作指导','美容项目操作的标准流程指导和安全注意事项','技术指导',NULL,NULL,NULL,'ACTIVE',1,NULL,0,NULL,NULL,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48'),(5,'团队管理讨论','管理岗位的团队建设和绩效管理讨论','管理培训',NULL,NULL,NULL,'ACTIVE',1,NULL,0,NULL,NULL,NULL,'2025-09-23 02:39:48','2025-09-23 02:39:48');
/*!40000 ALTER TABLE `training_scenes` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `training_sessions`
--
DROP TABLE IF EXISTS `training_sessions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `training_sessions` (
`id` int NOT NULL AUTO_INCREMENT,
`user_id` int NOT NULL COMMENT '用户ID',
`scene_id` int NOT NULL COMMENT '场景ID',
`coze_conversation_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Coze对话ID',
`start_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '开始时间',
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
`duration_seconds` int DEFAULT NULL COMMENT '持续时长(秒)',
`status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'active' COMMENT '会话状态',
`session_config` json DEFAULT NULL COMMENT '会话配置',
`total_score` decimal(5,2) DEFAULT NULL COMMENT '总分',
`evaluation_result` json DEFAULT NULL COMMENT '评估结果详情',
`created_by` int DEFAULT NULL COMMENT '创建人ID',
`updated_by` int DEFAULT NULL COMMENT '更新人ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_scene_id` (`scene_id`),
KEY `idx_status` (`status`),
CONSTRAINT `training_sessions_ibfk_1` FOREIGN KEY (`scene_id`) REFERENCES `training_scenes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='培训会话表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `training_sessions`
--
LOCK TABLES `training_sessions` WRITE;
/*!40000 ALTER TABLE `training_sessions` DISABLE KEYS */;
/*!40000 ALTER TABLE `training_sessions` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `user_teams`
--
DROP TABLE IF EXISTS `user_teams`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `user_teams` (
`user_id` int NOT NULL COMMENT '用户ID',
`team_id` int NOT NULL COMMENT '团队ID',
`role` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '在团队中的角色',
`joined_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间',
PRIMARY KEY (`user_id`,`team_id`),
KEY `team_id` (`team_id`),
CONSTRAINT `user_teams_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
CONSTRAINT `user_teams_ibfk_2` FOREIGN KEY (`team_id`) REFERENCES `teams` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户团队关联表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `user_teams`
--
LOCK TABLES `user_teams` WRITE;
/*!40000 ALTER TABLE `user_teams` DISABLE KEYS */;
INSERT INTO `user_teams` (`user_id`, `team_id`, `role`, `joined_at`) VALUES (1,1,'leader','2025-09-22 18:42:32'),(2,1,'member','2025-09-22 18:42:32'),(3,2,'leader','2025-09-22 18:42:32'),(4,3,'leader','2025-09-22 18:42:32'),(5,2,'member','2025-09-22 18:42:32'),(5,4,'member','2025-09-22 18:42:32'),(6,2,'member','2025-09-22 18:42:32'),(6,4,'member','2025-09-22 18:42:32'),(7,3,'member','2025-09-22 18:42:32'),(7,4,'member','2025-09-22 18:42:32'),(8,3,'member','2025-09-22 18:42:32'),(8,6,'member','2025-09-22 18:42:32');
/*!40000 ALTER TABLE `user_teams` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱',
`phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
`password_hash` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码哈希',
`full_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '真实姓名',
`gender` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '性别',
`avatar_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像URL',
`bio` text COLLATE utf8mb4_unicode_ci COMMENT '个人简介',
`school` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '学校',
`major` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '专业',
`role` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'trainee' COMMENT '用户角色',
`is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
`is_verified` tinyint(1) DEFAULT '0' COMMENT '是否验证',
`last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间',
`password_changed_at` datetime DEFAULT NULL COMMENT '密码修改时间',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `phone` (`phone`),
KEY `idx_role` (`role`),
KEY `idx_is_active` (`is_active`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户信息表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `users`
--
LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` (`id`, `username`, `email`, `phone`, `password_hash`, `full_name`, `gender`, `avatar_url`, `bio`, `school`, `major`, `role`, `is_active`, `is_verified`, `last_login_at`, `password_changed_at`, `created_at`, `updated_at`, `is_deleted`, `deleted_at`) VALUES (1,'superadmin','superadmin@ruimei.com','13800138001','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','超级管理员','male',NULL,'负责系统整体管理和运营','睿美医疗美容学院','医疗美容管理','admin',1,0,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(2,'admin','admin@ruimei.com','13800138002','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','系统管理员','female',NULL,'负责日常系统管理工作','睿美医疗美容学院','医疗美容技术','admin',1,0,'2025-09-22 18:54:56',NULL,'2025-09-23 02:38:24','2025-09-22 18:54:56',0,NULL),(3,'manager_beijing','manager.bj@ruimei.com','13800138003','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','北京区域经理','male',NULL,'负责北京地区门店管理','北京医科大学','临床医学','manager',1,0,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(4,'manager_shanghai','manager.sh@ruimei.com','13800138004','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','上海区域经理','female',NULL,'负责上海地区门店管理','复旦大学医学院','医疗美容','manager',1,0,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(5,'consultant_001','consultant001@ruimei.com','13800138005','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','资深美容顾问','female',NULL,'专业美容咨询师5年从业经验','上海健康医学院','医疗美容技术','trainee',1,0,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(6,'nurse_001','nurse001@ruimei.com','13800138006','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','美容护士','female',NULL,'持证美容护士,专业技术过硬','首都医科大学','护理学','trainee',1,0,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(7,'therapist_001','therapist001@ruimei.com','13800138007','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','美容技师','female',NULL,'专业美容技师,擅长面部护理','北京卫生职业学院','医疗美容技术','trainee',1,0,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL),(8,'receptionist_001','front001@ruimei.com','13800138008','$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C','前台接待','female',NULL,'负责客户接待和预约管理','北京商贸职业学院','商务管理','trainee',1,0,NULL,NULL,'2025-09-23 02:38:24','2025-09-23 02:38:24',0,NULL);
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Temporary view structure for view `v_user_course_progress`
--
DROP TABLE IF EXISTS `v_user_course_progress`;
/*!50001 DROP VIEW IF EXISTS `v_user_course_progress`*/;
SET @saved_cs_client = @@character_set_client;
/*!50503 SET character_set_client = utf8mb4 */;
/*!50001 CREATE VIEW `v_user_course_progress` AS SELECT
1 AS `user_id`,
1 AS `username`,
1 AS `course_id`,
1 AS `course_name`,
1 AS `exam_count`,
1 AS `avg_score`,
1 AS `best_score`*/;
SET character_set_client = @saved_cs_client;
--
-- Dumping events for database 'kaopeilian'
--
--
-- Dumping routines for database 'kaopeilian'
--
--
-- Current Database: `kaopeilian`
--
USE `kaopeilian`;
--
-- Final view structure for view `v_user_course_progress`
--
/*!50001 DROP VIEW IF EXISTS `v_user_course_progress`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
/*!50001 SET character_set_client = latin1 */;
/*!50001 SET character_set_results = latin1 */;
/*!50001 SET collation_connection = latin1_swedish_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `v_user_course_progress` AS select `u`.`id` AS `user_id`,`u`.`username` AS `username`,`c`.`id` AS `course_id`,`c`.`name` AS `course_name`,count(distinct `e`.`id`) AS `exam_count`,avg(`e`.`score`) AS `avg_score`,max(`e`.`score`) AS `best_score` from ((`users` `u` join `courses` `c`) left join `exams` `e` on(((`e`.`user_id` = `u`.`id`) and (`e`.`course_id` = `c`.`id`) and (`e`.`status` = 'submitted')))) group by `u`.`id`,`c`.`id` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-09-22 18:56:30