- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
214 lines
11 KiB
SQL
214 lines
11 KiB
SQL
-- ============================================
|
||
-- 系统增强功能测试数据
|
||
-- 场景:轻医美连锁品牌员工培训系统
|
||
-- ============================================
|
||
|
||
USE kaopeilian;
|
||
|
||
-- ============================================
|
||
-- 1. 任务中心数据
|
||
-- ============================================
|
||
|
||
-- 创建任务1:产品知识培训
|
||
INSERT INTO tasks (title, description, priority, status, creator_id, deadline, requirements, progress, created_at, updated_at, is_deleted)
|
||
VALUES (
|
||
'新品"水光焕肤"项目培训',
|
||
'学习新上线的水光焕肤项目知识,包括产品成分、功效、适用人群、操作流程等,为春季营销活动做准备',
|
||
'high',
|
||
'ongoing',
|
||
1,
|
||
DATE_ADD(NOW(), INTERVAL 7 DAY),
|
||
'{"must_complete": true, "allow_retake": true}',
|
||
45,
|
||
NOW(),
|
||
NOW(),
|
||
FALSE
|
||
);
|
||
|
||
-- 创建任务2:服务礼仪提升
|
||
INSERT INTO tasks (title, description, priority, status, creator_id, deadline, requirements, progress, created_at, updated_at, is_deleted)
|
||
VALUES (
|
||
'客户服务礼仪强化训练',
|
||
'学习高端服务礼仪规范,提升客户接待质量,打造品牌专业形象',
|
||
'medium',
|
||
'ongoing',
|
||
1,
|
||
DATE_ADD(NOW(), INTERVAL 14 DAY),
|
||
'{"must_complete": true, "allow_retake": false}',
|
||
70,
|
||
DATE_SUB(NOW(), INTERVAL 3 DAY),
|
||
NOW(),
|
||
FALSE
|
||
);
|
||
|
||
-- 创建任务3:销售技巧月度考核
|
||
INSERT INTO tasks (title, description, priority, status, creator_id, deadline, requirements, progress, created_at, updated_at, is_deleted)
|
||
VALUES (
|
||
'3月销售技巧月度考核',
|
||
'针对咨询接待、需求挖掘、方案推荐、异议处理等核心销售技能进行综合考核',
|
||
'high',
|
||
'completed',
|
||
1,
|
||
DATE_SUB(NOW(), INTERVAL 2 DAY),
|
||
'{"must_complete": true, "allow_retake": false}',
|
||
100,
|
||
DATE_SUB(NOW(), INTERVAL 10 DAY),
|
||
NOW(),
|
||
FALSE
|
||
);
|
||
|
||
-- 创建任务4:安全操作规范学习
|
||
INSERT INTO tasks (title, description, priority, status, creator_id, deadline, requirements, progress, created_at, updated_at, is_deleted)
|
||
VALUES (
|
||
'医疗美容安全操作规范培训',
|
||
'学习国家医疗美容行业安全操作规范,确保服务过程零事故',
|
||
'high',
|
||
'ongoing',
|
||
1,
|
||
DATE_ADD(NOW(), INTERVAL 5 DAY),
|
||
'{"must_complete": true, "allow_retake": false}',
|
||
30,
|
||
DATE_SUB(NOW(), INTERVAL 1 DAY),
|
||
NOW(),
|
||
FALSE
|
||
);
|
||
|
||
-- 任务关联课程(假设课程ID 1-4存在)
|
||
INSERT IGNORE INTO task_courses (task_id, course_id, created_at)
|
||
VALUES
|
||
(1, 1, NOW()),
|
||
(1, 2, NOW()),
|
||
(2, 3, NOW()),
|
||
(3, 1, NOW()),
|
||
(3, 2, NOW()),
|
||
(4, 4, NOW());
|
||
|
||
-- 任务分配(假设用户ID 2-6存在)
|
||
INSERT INTO task_assignments (task_id, user_id, status, progress, completed_at, created_at, updated_at)
|
||
VALUES
|
||
-- 任务1分配给5个员工
|
||
(1, 2, 'completed', 100, DATE_SUB(NOW(), INTERVAL 1 DAY), DATE_SUB(NOW(), INTERVAL 3 DAY), NOW()),
|
||
(1, 3, 'in_progress', 60, NULL, DATE_SUB(NOW(), INTERVAL 3 DAY), NOW()),
|
||
(1, 4, 'in_progress', 40, NULL, DATE_SUB(NOW(), INTERVAL 3 DAY), NOW()),
|
||
(1, 5, 'not_started', 0, NULL, DATE_SUB(NOW(), INTERVAL 3 DAY), NOW()),
|
||
(1, 6, 'not_started', 0, NULL, DATE_SUB(NOW(), INTERVAL 3 DAY), NOW()),
|
||
|
||
-- 任务2分配给4个员工
|
||
(2, 2, 'completed', 100, DATE_SUB(NOW(), INTERVAL 2 DAY), DATE_SUB(NOW(), INTERVAL 5 DAY), NOW()),
|
||
(2, 3, 'completed', 100, DATE_SUB(NOW(), INTERVAL 2 DAY), DATE_SUB(NOW(), INTERVAL 5 DAY), NOW()),
|
||
(2, 4, 'in_progress', 80, NULL, DATE_SUB(NOW(), INTERVAL 5 DAY), NOW()),
|
||
(2, 5, 'not_started', 20, NULL, DATE_SUB(NOW(), INTERVAL 5 DAY), NOW()),
|
||
|
||
-- 任务3已完成
|
||
(3, 2, 'completed', 100, DATE_SUB(NOW(), INTERVAL 3 DAY), DATE_SUB(NOW(), INTERVAL 12 DAY), NOW()),
|
||
(3, 3, 'completed', 100, DATE_SUB(NOW(), INTERVAL 3 DAY), DATE_SUB(NOW(), INTERVAL 12 DAY), NOW()),
|
||
(3, 4, 'completed', 100, DATE_SUB(NOW(), INTERVAL 3 DAY), DATE_SUB(NOW(), INTERVAL 12 DAY), NOW()),
|
||
|
||
-- 任务4分配给6个员工
|
||
(4, 2, 'in_progress', 50, NULL, DATE_SUB(NOW(), INTERVAL 1 DAY), NOW()),
|
||
(4, 3, 'in_progress', 50, NULL, DATE_SUB(NOW(), INTERVAL 1 DAY), NOW()),
|
||
(4, 4, 'in_progress', 40, NULL, DATE_SUB(NOW(), INTERVAL 1 DAY), NOW()),
|
||
(4, 5, 'not_started', 0, NULL, DATE_SUB(NOW(), INTERVAL 1 DAY), NOW()),
|
||
(4, 6, 'not_started', 0, NULL, DATE_SUB(NOW(), INTERVAL 1 DAY), NOW()),
|
||
(4, 7, 'not_started', 0, NULL, DATE_SUB(NOW(), INTERVAL 1 DAY), NOW());
|
||
|
||
-- ============================================
|
||
-- 2. 系统日志数据(展示关键操作记录)
|
||
-- ============================================
|
||
|
||
-- 登录日志
|
||
INSERT INTO system_logs (level, type, message, user_id, user, ip, path, method, user_agent, created_at)
|
||
VALUES
|
||
('INFO', 'security', '用户 admin 登录成功', 1, 'admin', '192.168.1.100', '/api/v1/auth/login', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 2 HOUR)),
|
||
('INFO', 'security', '用户 manager01 登录成功', 2, 'manager01', '192.168.1.101', '/api/v1/auth/login', 'POST', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', DATE_SUB(NOW(), INTERVAL 1 HOUR)),
|
||
('WARNING', 'security', '用户 unknown_user 登录失败:密码错误', NULL, 'unknown_user', '192.168.1.200', '/api/v1/auth/login', 'POST', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0)', DATE_SUB(NOW(), INTERVAL 30 MINUTE)),
|
||
('INFO', 'security', '用户 trainee01 登录成功', 3, 'trainee01', '192.168.1.102', '/api/v1/auth/login', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 20 MINUTE));
|
||
|
||
-- 用户管理日志
|
||
INSERT INTO system_logs (level, type, message, user_id, user, ip, path, method, user_agent, created_at)
|
||
VALUES
|
||
('INFO', 'user', '管理员 admin 创建用户: 李美美', 1, 'admin', '192.168.1.100', '/api/v1/users/', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 5 DAY)),
|
||
('INFO', 'user', '管理员 admin 创建用户: 王欣欣', 1, 'admin', '192.168.1.100', '/api/v1/users/', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 4 DAY));
|
||
|
||
-- 课程管理日志
|
||
INSERT INTO system_logs (level, type, message, user_id, user, ip, path, method, user_agent, created_at)
|
||
VALUES
|
||
('INFO', 'api', '创建课程: 水光焕肤项目全解析', 1, 'admin', '192.168.1.100', '/api/v1/courses', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 7 DAY)),
|
||
('INFO', 'api', '创建课程: 高端服务礼仪培训', 1, 'admin', '192.168.1.100', '/api/v1/courses', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 6 DAY)),
|
||
('INFO', 'api', '删除课程: 过期培训课程-2024Q1', 1, 'admin', '192.168.1.100', '/api/v1/courses/15', 'DELETE', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 3 DAY));
|
||
|
||
-- 考试操作日志
|
||
INSERT INTO system_logs (level, type, message, user_id, user, ip, path, method, user_agent, created_at)
|
||
VALUES
|
||
('INFO', 'api', '用户 trainee01 开始考试(课程ID: 1)', 3, 'trainee01', '192.168.1.102', '/api/v1/exams/start', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 2 HOUR)),
|
||
('INFO', 'api', '用户 trainee01 提交考试(考试ID: 25,得分: 92)', 3, 'trainee01', '192.168.1.102', '/api/v1/exams/submit', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 1 HOUR)),
|
||
('INFO', 'api', '用户 trainee02 开始考试(课程ID: 2)', 4, 'trainee02', '192.168.1.103', '/api/v1/exams/start', 'POST', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', DATE_SUB(NOW(), INTERVAL 90 MINUTE)),
|
||
('INFO', 'api', '用户 trainee02 提交考试(考试ID: 26,得分: 88)', 4, 'trainee02', '192.168.1.103', '/api/v1/exams/submit', 'POST', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', DATE_SUB(NOW(), INTERVAL 45 MINUTE));
|
||
|
||
-- 任务管理日志
|
||
INSERT INTO system_logs (level, type, message, user_id, user, ip, path, method, user_agent, created_at)
|
||
VALUES
|
||
('INFO', 'api', '创建任务: 新品"水光焕肤"项目培训', 1, 'admin', '192.168.1.100', '/api/v1/manager/tasks', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 3 DAY)),
|
||
('INFO', 'api', '创建任务: 客户服务礼仪强化训练', 1, 'admin', '192.168.1.100', '/api/v1/manager/tasks', 'POST', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 3 DAY)),
|
||
('INFO', 'api', '删除任务: 过期培训任务-2024Q1', 1, 'admin', '192.168.1.100', '/api/v1/manager/tasks/99', 'DELETE', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)', DATE_SUB(NOW(), INTERVAL 1 DAY));
|
||
|
||
-- API调用日志
|
||
INSERT INTO system_logs (level, type, message, user_id, user, ip, path, method, user_agent, created_at)
|
||
VALUES
|
||
('INFO', 'api', '用户 manager01 查询学员成绩列表', 2, 'manager01', '192.168.1.101', '/api/v1/manager/student-scores', 'GET', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', DATE_SUB(NOW(), INTERVAL 30 MINUTE)),
|
||
('INFO', 'api', '用户 manager01 导出考试成绩报表', 2, 'manager01', '192.168.1.101', '/api/v1/manager/export/scores', 'GET', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', DATE_SUB(NOW(), INTERVAL 25 MINUTE));
|
||
|
||
-- 错误日志
|
||
INSERT INTO system_logs (level, type, message, user_id, user, ip, path, method, user_agent, created_at)
|
||
VALUES
|
||
('ERROR', 'error', '数据库连接超时:MySQL connection timeout', NULL, 'system', NULL, NULL, NULL, NULL, DATE_SUB(NOW(), INTERVAL 12 HOUR)),
|
||
('WARNING', 'error', 'API调用频率超限:用户 trainee03 在1分钟内调用接口50次', 5, 'trainee03', '192.168.1.104', '/api/v1/courses', 'GET', 'Mozilla/5.0', DATE_SUB(NOW(), INTERVAL 6 HOUR));
|
||
|
||
-- ============================================
|
||
-- 3. 更新课程学员统计数据
|
||
-- ============================================
|
||
|
||
-- 更新现有课程的学员数(模拟多个学员参与)
|
||
UPDATE courses SET student_count = 8 WHERE id = 1;
|
||
UPDATE courses SET student_count = 6 WHERE id = 2;
|
||
UPDATE courses SET student_count = 5 WHERE id = 3;
|
||
UPDATE courses SET student_count = 4 WHERE id = 4;
|
||
|
||
-- ============================================
|
||
-- 4. 添加一些符合轻医美场景的错题掌握数据
|
||
-- ============================================
|
||
|
||
-- 更新现有错题的掌握状态
|
||
UPDATE exam_mistakes
|
||
SET mastery_status = 'mastered',
|
||
difficulty = 'easy',
|
||
wrong_count = 1,
|
||
mastered_at = DATE_SUB(NOW(), INTERVAL 1 DAY)
|
||
WHERE id IN (1, 2, 3)
|
||
LIMIT 3;
|
||
|
||
UPDATE exam_mistakes
|
||
SET mastery_status = 'unmastered',
|
||
difficulty = 'medium',
|
||
wrong_count = 2
|
||
WHERE id IN (4, 5)
|
||
LIMIT 2;
|
||
|
||
UPDATE exam_mistakes
|
||
SET mastery_status = 'unmastered',
|
||
difficulty = 'hard',
|
||
wrong_count = 3
|
||
WHERE id IN (6, 7)
|
||
LIMIT 2;
|
||
|
||
-- ============================================
|
||
-- 执行统计
|
||
-- ============================================
|
||
|
||
SELECT '=== 数据插入完成 ===' AS Status;
|
||
SELECT '任务数量:', COUNT(*) FROM tasks WHERE is_deleted = FALSE;
|
||
SELECT '任务分配数量:', COUNT(*) FROM task_assignments;
|
||
SELECT '系统日志数量:', COUNT(*) FROM system_logs;
|
||
SELECT '课程学员统计:', SUM(student_count) AS total_students FROM courses;
|
||
|