新增物联:完成Java 21与IoT融合架构及安全门禁基线归档

This commit is contained in:
wangzhibiao committed 2026-10-13 21:17:39 +08:00
1 parent 9a62ac8536
commit 373921447f
905 files changed
+127387 -95251

No files matched your search

+616
View File
@@ -0,0 +1,616 @@
-- ==============================================================================
-- RailwaySystem QA Bootstrap: 05_synthetic_demo_data.sql
-- 目标数据库: railwaysystem_fusion_qa_20261013 (schema: public)
-- 来源追溯: sql/demo/ (001_demo_accounts, 002_demo_master_data, 003_demo_business_data, 004_demo_scenario_data)
-- 数据合规保证:
-- 1. 100% 纯脱敏合成数据,杜绝导入生产或共享库真实备份
-- 2. 学员电话全部为 188000001xx,身份证仅存储 hash 与 last4 (如 1000, 1001)
-- 3. 宿舍与门锁 SN 均使用标准虚拟测试编码 (LOCK-ZY-101, LOCK-BX-101)
-- ==============================================================================
SET search_path TO public, pg_catalog, sys_catalog;
-- >>> 来源: sql/demo/001_demo_accounts.sql >>>
-- ==============================================================================
-- RailwaySystem Clean Demo 资产: 001_demo_accounts.sql
-- 适用数据库: KingbaseES V009R003C018 (schema: public)
-- 执行目标: 预置演示专属业务角色账号 (培训管理员、培训教师、培训学员)
-- 安全要求: 严禁在脚本注释或交付报告中泄露明文口令,统一采用标准安全口令哈希预置
-- 角色绑定:
-- 1. demo_admin -> role_id = 3 (train_admin) 一期业务全局管理
-- 2. demo_teacher -> role_id = 4 (train_teacher) 教师专属工作台 (绑定教师 T101)
-- 3. demo_teacher2-> role_id = 4 (train_teacher) 教师专属工作台 (绑定教师 T102)
-- 4. demo_student -> role_id = 5 (train_student) 学员专属个人中心 (绑定学员 S101)
-- 5. demo_student2-> role_id = 5 (train_student) 学员专属个人中心 (绑定学员 S102)
-- ==============================================================================
BEGIN;
-- 1. 预置业务演示账号 (sys_user)
-- 密码哈希统一采用系统标准安全初始口令散列
INSERT INTO public.sys_user
(user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, password, status, del_flag, login_ip, login_date, create_by, create_time, remark)
VALUES
(10, 112, 'demo_admin', '演示培训管理员', '00', 'demo_admin@sict.railway.cn', '18800000001', '0', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '演示专用培训管理员账号'),
(11, 112, 'demo_teacher', '崔宏伟(教师)', '00', 'cuihw@sict.railway.cn', '18800000011', '0', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '演示专用主讲教师账号(绑定T101)'),
(12, 116, 'demo_teacher2', '张建国(教师)', '00', 'zhangjg@sict.railway.cn', '18800000012', '0', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '演示专用第二教师账号(绑定T102)'),
(21, 119, 'demo_student', '李强(学员)', '00', 'liqiang@sict.railway.cn', '18800000101', '0', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '演示专用参训学员账号(绑定S101)'),
(22, 120, 'demo_student2', '王芳(学员)', '00', 'wangfang@sict.railway.cn', '18800000102', '1', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '演示专用参训学员账号(绑定S102)')
ON CONFLICT (user_id) DO UPDATE SET
user_name = EXCLUDED.user_name,
nick_name = EXCLUDED.nick_name,
dept_id = EXCLUDED.dept_id,
password = EXCLUDED.password,
status = '0',
del_flag = '0';
-- 2. 绑定用户角色 (sys_user_role)
DELETE FROM public.sys_user_role WHERE user_id IN (10, 11, 12, 21, 22);
INSERT INTO public.sys_user_role (user_id, role_id)
VALUES
(10, 3), -- demo_admin -> 培训管理员 (role_id=3)
(11, 4), -- demo_teacher -> 培训教师 (role_id=4)
(12, 4), -- demo_teacher2-> 培训教师 (role_id=4)
(21, 5), -- demo_student -> 培训学员 (role_id=5)
(22, 5); -- demo_student2-> 培训学员 (role_id=5)
-- 3. 演示环境优化:关闭登录验证码要求 (提升演示流畅度)
UPDATE public.sys_config SET config_value = 'false' WHERE config_key = 'sys.account.captchaEnabled';
COMMIT;
-- >>> 来源: sql/demo/002_demo_master_data.sql >>>
-- ==============================================================================
-- RailwaySystem Clean Demo 资产: 002_demo_master_data.sql
-- 适用数据库: KingbaseES V009R003C018 (schema: public)
-- ==============================================================================
BEGIN;
-- 1. 教师主档
UPDATE public.train_teacher SET org_name = '沈阳房建公寓段安全培训科', job_title = '首席技师/教授级高工', t_phone = '18800000000', t_email = 'zhaodm@sict.railway.cn', status = 1, del_flag = '0' WHERE t_id = 'T001';
INSERT INTO public.train_teacher (t_id, t_name, t_gender, t_birth, org_name, job_title, t_phone, t_email, status, del_flag, user_id, create_by, create_time, remark)
VALUES
('T101', '崔宏伟', '0', '1982-05-14', '沈阳房建公寓段安全培训科', '高级工程师', '18800000011', 'cuihw@sict.railway.cn', 1, '0', 11, 'admin', CURRENT_TIMESTAMP, '演示主讲教师(绑定账号demo_teacher)'),
('T102', '张建国', '0', '1985-11-20', '沈阳房建公寓段技术科', '副高级工程师', '18800000012', 'zhangjg@sict.railway.cn', 1, '0', 12, 'admin', CURRENT_TIMESTAMP, '技术专家讲师(绑定账号demo_teacher2)'),
('T103', '刘文波', '0', '1979-08-03', '沈阳房建公寓段公寓科', '主任技师', '18800000013', 'liuwb@sict.railway.cn', 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '门禁与后勤管理特聘讲师'),
('T104', '孙亚萍', '1', '1988-03-22', '沈阳房建公寓段安全培训科', '专职讲师', '18800000014', 'sunyp@sict.railway.cn', 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '营业线施工安全专职培训师'),
('T105', '陈广林', '0', '1976-12-09', '大连项目部', '特级技师', '18800000015', 'chengl@sict.railway.cn', 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '防汛抢险实训专家'),
('T106', '马志强', '0', '1990-07-18', '丹东项目部', '工程师', '18800000016', 'mazhq@sict.railway.cn', 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '电气防火与智能化安全监控讲师')
ON CONFLICT (t_id) DO UPDATE SET
t_name = EXCLUDED.t_name, org_name = EXCLUDED.org_name, job_title = EXCLUDED.job_title, user_id = EXCLUDED.user_id, status = EXCLUDED.status, del_flag = '0';
-- 2. 课程标准库
INSERT INTO public.train_course (c_id, c_name, c_code, c_type, c_duration, teaching_objective, course_content, status, del_flag, create_by, create_time, remark)
VALUES
('C001', '高速铁路房建设施检修规范', 'DEMO-CRS-001', 1, 24, '熟练掌握高铁站房、雨棚及站台设施的巡检标准与养护规程', '第一章 高铁站房结构特性;第二章 日常巡检与重点隐患排查;第三章 结构裂缝与屋面防水检修实务', 1, '0', 'admin', CURRENT_TIMESTAMP, '重点理论课程'),
('C002', '铁路营业线施工安全与应急处置', 'DEMO-CRS-002', 1, 16, '强化营业线天窗点内施工安全红线意识,掌握突发险情应急处置规程', '第一章 营业线施工防护等级;第二章 施工要点与天窗管理;第三章 典型事故案例分析与应急预案响应', 1, '0', 'admin', CURRENT_TIMESTAMP, '必修安全红线课程'),
('C003', '铁路公寓智能门禁与物联系统应用', 'DEMO-CRS-003', 2, 16, '掌握公寓智能门禁终端、电子门锁、身份下发及离线对账完整业务链', '第一章 智能门禁拓扑与权限机制;第二章 凭据下发与卡密配置;第三章 离线对账与异常流调实操', 1, '0', 'admin', CURRENT_TIMESTAMP, '理论实作一体化课程'),
('C004', '给排水与暖通设备标准化检修', 'DEMO-CRS-004', 2, 20, '掌握铁路车站及公寓给排水管网、变频泵组与采暖供热设备标准化实操演练', '第一章 供暖锅炉与变频供水设备;第二章 管路试压与漏水排查;第三章 冬季防冻保温与实操演练', 1, '0', 'admin', CURRENT_TIMESTAMP, '核心实训操作课程'),
('C005', '房建设施防汛防台演练', 'DEMO-CRS-005', 2, 16, '掌握极端恶劣天气下地下构筑物防倒灌、泵坑强排及抗台防风应急抢险技能', '第一章 铁路防汛预警机制;第二章 移动防洪挡水板与抽水泵组布设实操;第三章 突发强降雨抢险实操演练', 1, '0', 'admin', CURRENT_TIMESTAMP, '实操抢险演练'),
('C006', '电气防火安全与智能巡检规范', 'DEMO-CRS-006', 1, 12, '掌握铁路配电房、公寓配电间电气火灾隐患红外热成像及阻燃检测技术', '第一章 铁路电气火灾成因与预防;第二章 热成像与绝缘阻抗巡检;第三章 电气火灾报警联动处置', 1, '0', 'admin', CURRENT_TIMESTAMP, '专业理论课程'),
('C007', '特种作业人员安全资质培训', 'DEMO-CRS-007', 1, 16, '高处作业、焊接作业及有限空间作业安全规程与特种作业防护规范', '第一章 高空作业双钩安全带使用规程;第二章 动火作业审批及监护;第三章 有限空间气体检测与通风防护', 1, '0', 'admin', CURRENT_TIMESTAMP, '资质考评必修课程'),
('C008', '智能电子班牌与数字化报到实务', 'DEMO-CRS-008', 2, 8, '掌握智能电子班牌的屏幕互动、无感签到、通知推发与日程核验', '第一章 智能班牌终端交互;第二章 课次无感签到与异常补录;第三章 班级通知与应急插播实演', 1, '0', 'admin', CURRENT_TIMESTAMP, '数字化教学应用课程')
ON CONFLICT (c_id) DO UPDATE SET
c_name = EXCLUDED.c_name, c_code = EXCLUDED.c_code, c_type = EXCLUDED.c_type, c_duration = EXCLUDED.c_duration, status = EXCLUDED.status, del_flag = '0';
-- 3. 教学教室
INSERT INTO public.train_classroom_info (class_room_id, room_name, room_location, capacity, room_status, create_by, create_time, del_flag, remark)
VALUES
('CR01', '教学楼101多功能多媒体教室', '教学楼一楼东侧101室', 60, 1, 'admin', CURRENT_TIMESTAMP, '0', '配备智慧黑板与双屏投影'),
('CR02', '教学楼102信息化研讨教室', '教学楼一楼西侧102室', 40, 1, 'admin', CURRENT_TIMESTAMP, '0', '支持分组讨论与互动教学'),
('CR03', '教学楼201安全实训理论教室', '教学楼二楼东侧201室', 50, 1, 'admin', CURRENT_TIMESTAMP, '0', '安全案例沉浸式视听教室'),
('CR04', '综合楼305智慧学术报告厅', '综合楼三楼报告厅', 100, 1, 'admin', CURRENT_TIMESTAMP, '0', '承办大型培训开班仪式与结训典礼')
ON CONFLICT (class_room_id) DO UPDATE SET
room_name = EXCLUDED.room_name, room_location = EXCLUDED.room_location, capacity = EXCLUDED.capacity, room_status = EXCLUDED.room_status, del_flag = '0';
-- 4. 实训场地
INSERT INTO public.train_training_site (site_id, site_name, site_location, capacity, site_device, site_status, create_by, create_time, del_flag, remark)
VALUES
('SITE01', '沈阳房建综合实训基地', '沈阳段综合实训园区A区', 50, '高仿真站台接缝模型、雨棚防脱索具、钢结构无损探伤仪', 1, 'admin', CURRENT_TIMESTAMP, '0', '高铁房建全构件检修实训场'),
('SITE02', '高铁给排水检修实作工场', '沈阳段综合实训园区B区1号工场', 30, '变频调速供水泵组、管道高压疏通机、法兰热熔焊接设备', 1, 'admin', CURRENT_TIMESTAMP, '0', '暖通给排水专业工场'),
('SITE03', '应急抢险与高空作业演练场', '沈阳段演练拓展场C区', 40, '移动防汛挡水钢板、大流量潜水排污泵、高空悬吊防护训练架', 1, 'admin', CURRENT_TIMESTAMP, '0', '防汛防台与高空实操基地')
ON CONFLICT (site_id) DO UPDATE SET
site_name = EXCLUDED.site_name, site_location = EXCLUDED.site_location, capacity = EXCLUDED.capacity, site_status = EXCLUDED.site_status, del_flag = '0';
-- 5. 电子班牌
INSERT INTO public.train_electronic_board (board_id, board_sn, board_name, bind_classroom_id, board_ip, support_checkin_type, board_status, last_heartbeat, create_by, create_time, del_flag, remark)
VALUES
('BP001', 'BOARD-CR01-01', '教学楼101班牌', 'CR01', '192.168.10.101', 'FACE,CARD,QR', 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '0', '教学楼101门外终端'),
('BP002', 'BOARD-CR02-01', '教学楼102班牌', 'CR02', '192.168.10.102', 'FACE,CARD,QR', 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '0', '教学楼102门外终端')
ON CONFLICT (board_id) DO UPDATE SET
board_sn = EXCLUDED.board_sn, board_name = EXCLUDED.board_name, bind_classroom_id = EXCLUDED.bind_classroom_id, board_status = EXCLUDED.board_status, del_flag = '0';
-- 6. 宿舍房间 (20间)
INSERT INTO public.train_dormitory_info (dorm_id, dorm_building, dorm_floor, dorm_room, capacity, gender_type, dorm_status, lock_device_sn, create_by, create_time, del_flag, remark)
VALUES
('DORM-ZY-101', '致远楼', '1层', '101', 4, 1, 1, 'LOCK-ZY-101', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-102', '致远楼', '1层', '102', 4, 1, 1, 'LOCK-ZY-102', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-103', '致远楼', '1层', '103', 4, 1, 1, 'LOCK-ZY-103', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-104', '致远楼', '1层', '104', 4, 1, 1, 'LOCK-ZY-104', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-105', '致远楼', '1层', '105', 4, 1, 1, 'LOCK-ZY-105', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-201', '致远楼', '2层', '201', 4, 1, 1, 'LOCK-ZY-201', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-202', '致远楼', '2层', '202', 4, 1, 1, 'LOCK-ZY-202', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-203', '致远楼', '2层', '203', 4, 1, 1, 'LOCK-ZY-203', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-204', '致远楼', '2层', '204', 4, 1, 1, 'LOCK-ZY-204', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-ZY-205', '致远楼', '2层', '205', 4, 1, 1, 'LOCK-ZY-205', 'admin', CURRENT_TIMESTAMP, '0', '男生宿舍'),
('DORM-BX-101', '博学楼', '1层', '101', 4, 2, 1, 'LOCK-BX-101', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-102', '博学楼', '1层', '102', 4, 2, 1, 'LOCK-BX-102', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-103', '博学楼', '1层', '103', 4, 2, 1, 'LOCK-BX-103', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-104', '博学楼', '1层', '104', 4, 2, 1, 'LOCK-BX-104', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-105', '博学楼', '1层', '105', 4, 2, 1, 'LOCK-BX-105', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-201', '博学楼', '2层', '201', 4, 2, 1, 'LOCK-BX-201', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-202', '博学楼', '2层', '202', 4, 2, 1, 'LOCK-BX-202', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-203', '博学楼', '2层', '203', 4, 2, 1, 'LOCK-BX-203', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-204', '博学楼', '2层', '204', 4, 2, 1, 'LOCK-BX-204', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍'),
('DORM-BX-205', '博学楼', '2层', '205', 4, 2, 1, 'LOCK-BX-205', 'admin', CURRENT_TIMESTAMP, '0', '女生宿舍')
ON CONFLICT (dorm_id) DO UPDATE SET
dorm_building = EXCLUDED.dorm_building, dorm_floor = EXCLUDED.dorm_floor, dorm_room = EXCLUDED.dorm_room, capacity = EXCLUDED.capacity, dorm_status = EXCLUDED.dorm_status, del_flag = '0';
-- 7. 学员主档 (35名)
INSERT INTO public.train_student (s_id, s_name, s_gender, s_birth, org_name, s_phone, s_email, id_card_hash, id_card_last4, source_type, status, del_flag, user_id, create_by, create_time, remark)
VALUES
('S101', '李强', '0', '1990-01-01', '沈阳房建公寓段沈阳车间', '18800000101', 's101@sict.railway.cn', '57ecc1436745329b620ccbfaebbed22cda4ba9b33ec44de468d2e3acd61f63c2', '1000', 1, 1, '0', 21, 'admin', CURRENT_TIMESTAMP, '演示学员样本1'),
('S102', '王芳', '1', '1991-02-02', '沈阳房建公寓段大连车间', '18800000102', 's102@sict.railway.cn', 'f6d29eac73f7ea39158b909683cc36f50a2ea9298be8a453bf8922488e499b29', '1001', 1, 1, '0', 22, 'admin', CURRENT_TIMESTAMP, '演示学员样本2'),
('S103', '张伟', '0', '1992-03-03', '沈阳房建公寓段丹东车间', '18800000103', 's103@sict.railway.cn', 'eb005ec042b0171ab34dc5e7d038c2eec40e4456c4378db6b2578159489fc6b1', '1002', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本3'),
('S104', '赵敏', '0', '1993-04-04', '沈阳房建公寓段安全培训科', '18800000104', 's104@sict.railway.cn', '8dd4b314cf479f0d60d00282548381a52489a0849f6dd499c57d1765fb6ba9b3', '1003', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本4'),
('S105', '陈涛', '0', '1994-05-05', '沈阳房建公寓段技术科', '18800000105', 's105@sict.railway.cn', 'd3b26d75218164246b036037504e03ce9f66052bfbefdf2a247613cfa38c04ad', '1004', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本5'),
('S106', '杨洋', '1', '1995-06-06', '沈阳房建公寓段沈阳车间', '18800000106', 's106@sict.railway.cn', 'c8e5d6133037dda5303504512c11b281413b25a40acfa0a70b65922f8966a97a', '1005', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本6'),
('S107', '周杰', '0', '1996-07-07', '沈阳房建公寓段大连车间', '18800000107', 's107@sict.railway.cn', '6bdcd2c0e867be8cfef52c987e959097099c5188c26f20add1311ac723278ab2', '1006', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本7'),
('S108', '徐静', '0', '1997-08-08', '沈阳房建公寓段丹东车间', '18800000108', 's108@sict.railway.cn', 'ef2d043c2b0f983a77bed02077c12ef30886f7e54d2980f7c64f06407bc7e579', '1007', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本8'),
('S109', '孙磊', '0', '1990-09-09', '沈阳房建公寓段安全培训科', '18800000109', 's109@sict.railway.cn', '1c387866619ee10c7205cf503df503adc694fc3280eef104b32b07803fdb8e95', '1008', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本9'),
('S110', '朱燕', '1', '1991-10-10', '沈阳房建公寓段技术科', '18800000110', 's110@sict.railway.cn', 'f8e31ba15a77222416e139b597c35a9e49f536a1dcbb2d37384c557853c224e0', '1009', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本10'),
('S111', '郭超', '0', '1992-11-11', '沈阳房建公寓段沈阳车间', '18800000111', 's111@sict.railway.cn', '608ba9ded7bc99069a88ce2004c2cf9bc7801c967a5d0f32e8d662b248113e7c', '1010', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本11'),
('S112', '何伟', '0', '1993-12-12', '沈阳房建公寓段大连车间', '18800000112', 's112@sict.railway.cn', 'ce9c847788ad8f0e583faa78e3ef21de612251371e4641f5b52226ee1ae795e0', '1011', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本12'),
('S113', '高健', '0', '1994-01-13', '沈阳房建公寓段丹东车间', '18800000113', 's113@sict.railway.cn', '314ca3c9b0e77d808031970e25bc462c7890647b1d3470b0aa877d8882138314', '1012', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本13'),
('S114', '林峰', '1', '1995-02-14', '沈阳房建公寓段安全培训科', '18800000114', 's114@sict.railway.cn', 'e0f33d968d5b6f053be67e5bb3ae20e6a3301080f9821c452efd6b05d785815f', '1013', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本14'),
('S115', '罗娜', '0', '1996-03-15', '沈阳房建公寓段技术科', '18800000115', 's115@sict.railway.cn', '0f6eb52d873f3a3bc423b973c4ff942e640f1798b584c25292a8e3a6138a1a8f', '1014', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本15'),
('S116', '梁勇', '0', '1997-04-16', '沈阳房建公寓段沈阳车间', '18800000116', 's116@sict.railway.cn', 'd1d72a50041621372868c6622fcc7d941d21c3455b7579aba7c097e3c64a6835', '1015', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本16'),
('S117', '宋佳', '0', '1990-05-17', '沈阳房建公寓段大连车间', '18800000117', 's117@sict.railway.cn', '228dd61eadab8e0f70e14a9a800c2ed80c208cd2c7944f464d8282e4e1d95db8', '1016', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本17'),
('S118', '郑阳', '1', '1991-06-18', '沈阳房建公寓段丹东车间', '18800000118', 's118@sict.railway.cn', '245f22b87575afaff6fbe16fc50e56731da51e2c1d8a9ee1866d5638df3ec31f', '1017', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本18'),
('S119', '谢明', '0', '1992-07-19', '沈阳房建公寓段安全培训科', '18800000119', 's119@sict.railway.cn', '941f0156c2eeb2626f76539d3f62e7fa050799ac1e29a9f42eb00f8dd336760f', '1018', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本19'),
('S120', '韩梅', '0', '1993-08-20', '沈阳房建公寓段技术科', '18800000120', 's120@sict.railway.cn', 'addc31f5380151d90621e63ab40471fc749b47651705fb6e8fbe61b33e8ae51a', '1019', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本20'),
('S121', '唐浩', '0', '1994-09-21', '沈阳房建公寓段沈阳车间', '18800000121', 's121@sict.railway.cn', 'a2f6e5faf5d400013b4d6238f0370d43e5b02744f2898dd8ea6f3fa10dfe04e8', '1020', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本21'),
('S122', '冯霞', '1', '1995-10-22', '沈阳房建公寓段大连车间', '18800000122', 's122@sict.railway.cn', '16d6c76f2bdbd69c504435da2010d436f3c7d597fec78199cc3649f1a6680d91', '1021', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本22'),
('S123', '于洋', '0', '1996-11-23', '沈阳房建公寓段丹东车间', '18800000123', 's123@sict.railway.cn', '57b98c33d6c9ef93e68c7d6bdcf4ac2b98670d0ea998449886b7acefafd6690c', '1022', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本23'),
('S124', '董欣', '0', '1997-12-24', '沈阳房建公寓段安全培训科', '18800000124', 's124@sict.railway.cn', 'c54e399999d52c0a2d33f8dd8e29ae0c00bd293e40750abb59af87dbe453d4d5', '1023', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本24'),
('S125', '萧然', '0', '1990-01-25', '沈阳房建公寓段技术科', '18800000125', 's125@sict.railway.cn', 'e721a7b054a254c3fde7b8ce646c2a9986937b369c61b46e9dee8510cd4ca3f9', '1024', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本25'),
('S126', '程功', '1', '1991-02-26', '沈阳房建公寓段沈阳车间', '18800000126', 's126@sict.railway.cn', '9934af5948c05404c1cfeb75b023d9658273b5f76f2222da1df7c176d6b3c092', '1025', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本26'),
('S127', '曹操', '0', '1992-03-27', '沈阳房建公寓段大连车间', '18800000127', 's127@sict.railway.cn', '6f846b87db0308be283250ecb918511719c4dffaa69dc347bb800ac05b0108ff', '1026', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本27'),
('S128', '袁方', '0', '1993-04-28', '沈阳房建公寓段丹东车间', '18800000128', 's128@sict.railway.cn', '2b21a13ef131923b0966138af218abc111adf31e85320211f86efa178a02b46d', '1027', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本28'),
('S129', '邓超', '0', '1994-05-01', '沈阳房建公寓段安全培训科', '18800000129', 's129@sict.railway.cn', '3cbf1be25fb8561ec9091fc2ad1bdab477465da4aea11b27c9b0642a8a5146a5', '1028', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本29'),
('S130', '许巍', '1', '1995-06-02', '沈阳房建公寓段技术科', '18800000130', 's130@sict.railway.cn', '5d0fca144d4443ecd4bcd85f58f21b369df20a9369b4daccc4b6667b095773fe', '1029', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本30'),
('S131', '沈冰', '0', '1996-07-03', '沈阳房建公寓段沈阳车间', '18800000131', 's131@sict.railway.cn', 'd47b05367012f7166a7a8a6c5d4313a14e234297d6017482493d0f98e383389e', '1030', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本31'),
('S132', '曾诚', '0', '1997-08-04', '沈阳房建公寓段大连车间', '18800000132', 's132@sict.railway.cn', '5dd752b8826ac0258509f27458aa4599ba23c3bced53888d5b001492c468477b', '1031', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本32'),
('S133', '彭飞', '0', '1990-09-05', '沈阳房建公寓段丹东车间', '18800000133', 's133@sict.railway.cn', 'ac7afdf09e2f07d66d3f320d60a11abe0167187455dfd15438229f906ef3e8ef', '1032', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本33'),
('S134', '吕梁', '1', '1991-10-06', '沈阳房建公寓段安全培训科', '18800000134', 's134@sict.railway.cn', '65a78d3839aef33f4059ea214e8faac94125c6c82cfa3001580fa208430b0ad3', '1033', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本34'),
('S135', '卢伟', '0', '1992-11-07', '沈阳房建公寓段技术科', '18800000135', 's135@sict.railway.cn', '2df5ae45334850de9e4ba87333f2388e2b71f5d75ead96fdd7c8734dd73f7147', '1034', 1, 1, '0', NULL, 'admin', CURRENT_TIMESTAMP, '演示学员样本35')
ON CONFLICT (s_id) DO UPDATE SET
s_name = EXCLUDED.s_name, org_name = EXCLUDED.org_name, s_phone = EXCLUDED.s_phone, s_email = EXCLUDED.s_email,
id_card_hash = EXCLUDED.id_card_hash, id_card_last4 = EXCLUDED.id_card_last4, user_id = EXCLUDED.user_id, status = EXCLUDED.status, del_flag = '0';
COMMIT;
-- >>> 来源: sql/demo/003_demo_business_data.sql >>>
-- ==============================================================================
-- RailwaySystem Clean Demo 资产: 003_demo_business_data.sql
-- 适用数据库: KingbaseES V009R003C018 (schema: public)
-- ==============================================================================
BEGIN;
-- 1. 开班计划
INSERT INTO public.train_class_plan (plan_id, plan_name, start_time, end_time, report_deadline, train_address, recruit_num, apply_condition, plan_status, create_by, create_time, del_flag, remark)
VALUES
('PLAN-2026-01', '2026年秋季高铁房建设施高级研修班', '2026-09-15 08:30:00', '2026-09-30 17:30:00', '2026-09-14 18:00:00', '沈阳房建综合实训园区', 30, '沈阳段各车间从事高铁站房设备检修2年以上技术骨干', 1, 'admin', CURRENT_TIMESTAMP, '0', '核心演示班级(进行中)'),
('PLAN-2026-02', '2026年铁路营业线安全施工与应急处置实训班', '2026-10-10 08:30:00', '2026-10-25 17:30:00', '2026-10-09 18:00:00', '教学楼101多功能多媒体教室', 40, '营业线施工现场防护员及施工负责人', 0, 'admin', CURRENT_TIMESTAMP, '0', '即将开班班级(未开始)'),
('PLAN-2026-03', '2026年夏季铁路给排水设备技术比武集训班', '2026-08-01 08:30:00', '2026-08-15 17:30:00', '2026-07-31 18:00:00', '高铁给排水检修实作工场', 25, '全段给排水与暖通特级技师与高级工选拔参赛人员', 2, 'admin', CURRENT_TIMESTAMP, '0', '历史结训班级(已结束)'),
('PLAN-2026-04', '2026年智能门禁与数字化后勤储备干部培训班', '2026-11-01 08:30:00', '2026-11-15 17:30:00', '2026-10-31 18:00:00', '综合楼305智慧学术报告厅', 30, '公寓管理人员及信息化骨干', 3, 'admin', CURRENT_TIMESTAMP, '0', '计划筹备班级(草稿/未发布)')
ON CONFLICT (plan_id) DO UPDATE SET
plan_name = EXCLUDED.plan_name, start_time = EXCLUDED.start_time, end_time = EXCLUDED.end_time, plan_status = EXCLUDED.plan_status, del_flag = '0';
-- 2. 计划绑定课程
INSERT INTO public.train_plan_course (plan_course_id, plan_id, c_id, sort_no, create_by, create_time)
VALUES
(1, 'PLAN-2026-01', 'C001', 1, 'admin', CURRENT_TIMESTAMP),
(2, 'PLAN-2026-01', 'C003', 2, 'admin', CURRENT_TIMESTAMP),
(3, 'PLAN-2026-01', 'C004', 3, 'admin', CURRENT_TIMESTAMP),
(4, 'PLAN-2026-01', 'C008', 4, 'admin', CURRENT_TIMESTAMP),
(5, 'PLAN-2026-02', 'C002', 1, 'admin', CURRENT_TIMESTAMP),
(6, 'PLAN-2026-02', 'C005', 2, 'admin', CURRENT_TIMESTAMP),
(7, 'PLAN-2026-02', 'C007', 3, 'admin', CURRENT_TIMESTAMP),
(8, 'PLAN-2026-03', 'C004', 1, 'admin', CURRENT_TIMESTAMP),
(9, 'PLAN-2026-03', 'C006', 2, 'admin', CURRENT_TIMESTAMP)
ON CONFLICT (plan_id, c_id) DO UPDATE SET
sort_no = EXCLUDED.sort_no;
-- 3. 参训名单
INSERT INTO public.train_enrollment (enrollment_id, plan_id, student_id, enrollment_status, source_type, accommodation_required, join_time, create_by, create_time)
VALUES
(101, 'PLAN-2026-01', 'S101', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(102, 'PLAN-2026-01', 'S102', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(103, 'PLAN-2026-01', 'S103', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(104, 'PLAN-2026-01', 'S104', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(105, 'PLAN-2026-01', 'S105', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(106, 'PLAN-2026-01', 'S106', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(107, 'PLAN-2026-01', 'S107', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(108, 'PLAN-2026-01', 'S108', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(109, 'PLAN-2026-01', 'S109', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(110, 'PLAN-2026-01', 'S110', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(111, 'PLAN-2026-01', 'S111', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(112, 'PLAN-2026-01', 'S112', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(113, 'PLAN-2026-01', 'S113', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(114, 'PLAN-2026-01', 'S114', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(115, 'PLAN-2026-01', 'S115', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(116, 'PLAN-2026-01', 'S116', 1, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(117, 'PLAN-2026-01', 'S117', 0, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(118, 'PLAN-2026-01', 'S118', 0, 2, 1, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(119, 'PLAN-2026-01', 'S119', 2, 2, 0, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(120, 'PLAN-2026-01', 'S120', 3, 2, 0, '2026-09-10 10:00:00', 'admin', CURRENT_TIMESTAMP),
(201, 'PLAN-2026-02', 'S121', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(202, 'PLAN-2026-02', 'S122', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(203, 'PLAN-2026-02', 'S123', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(204, 'PLAN-2026-02', 'S124', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(205, 'PLAN-2026-02', 'S125', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(206, 'PLAN-2026-02', 'S126', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(207, 'PLAN-2026-02', 'S127', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(208, 'PLAN-2026-02', 'S128', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(209, 'PLAN-2026-02', 'S129', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(210, 'PLAN-2026-02', 'S130', 0, 1, 1, '2026-09-20 09:00:00', 'admin', CURRENT_TIMESTAMP),
(301, 'PLAN-2026-03', 'S101', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(302, 'PLAN-2026-03', 'S102', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(303, 'PLAN-2026-03', 'S103', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(304, 'PLAN-2026-03', 'S104', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(305, 'PLAN-2026-03', 'S105', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(306, 'PLAN-2026-03', 'S106', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(307, 'PLAN-2026-03', 'S107', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(308, 'PLAN-2026-03', 'S108', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(309, 'PLAN-2026-03', 'S109', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(310, 'PLAN-2026-03', 'S110', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(311, 'PLAN-2026-03', 'S111', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(312, 'PLAN-2026-03', 'S112', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(313, 'PLAN-2026-03', 'S113', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(314, 'PLAN-2026-03', 'S114', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP),
(315, 'PLAN-2026-03', 'S115', 4, 3, 1, '2026-07-25 09:00:00', 'admin', CURRENT_TIMESTAMP)
ON CONFLICT (plan_id, student_id) DO UPDATE SET
enrollment_status = EXCLUDED.enrollment_status, accommodation_required = EXCLUDED.accommodation_required;
-- 4. 报到确认流水
INSERT INTO public.train_class_report (report_id, enrollment_id, report_way, report_device_sn, report_time, verify_result, verify_note, create_by, create_time, remark)
VALUES
(101, 101, 1, 'DEV-SN-001', '2026-09-14 09:13:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(102, 102, 3, 'DEV-SN-001', '2026-09-14 10:16:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(103, 103, 2, 'DEV-SN-001', '2026-09-14 11:19:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(104, 104, 1, 'DEV-SN-001', '2026-09-14 08:22:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(105, 105, 3, 'DEV-SN-001', '2026-09-14 09:25:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(106, 106, 2, 'DEV-SN-001', '2026-09-14 10:28:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(107, 107, 1, 'DEV-SN-001', '2026-09-14 11:31:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(108, 108, 3, 'DEV-SN-001', '2026-09-14 08:34:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(109, 109, 2, 'DEV-SN-001', '2026-09-14 09:37:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(110, 110, 1, 'DEV-SN-001', '2026-09-14 10:40:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(111, 111, 3, 'DEV-SN-001', '2026-09-14 11:43:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(112, 112, 2, 'DEV-SN-001', '2026-09-14 08:46:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(113, 113, 1, 'DEV-SN-001', '2026-09-14 09:49:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(114, 114, 3, 'DEV-SN-001', '2026-09-14 10:52:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(115, 115, 2, 'DEV-SN-001', '2026-09-14 11:55:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到'),
(116, 116, 1, 'DEV-SN-001', '2026-09-14 08:58:00', 1, '现场人脸核验通过', 'admin', CURRENT_TIMESTAMP, '按期现场报到')
ON CONFLICT (enrollment_id) DO UPDATE SET
report_time = EXCLUDED.report_time, report_way = EXCLUDED.report_way;
-- 5. 住宿安排 (0:预分配, 1:在住, 2:已退宿)
INSERT INTO public.train_accommodation (accommodation_id, enrollment_id, dorm_id, bed_no, assigned_time, accommodation_status, create_by, create_time, remark)
VALUES
(101, 101, 'DORM-ZY-101', '1号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(102, 102, 'DORM-ZY-101', '2号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(103, 103, 'DORM-ZY-101', '3号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(104, 104, 'DORM-ZY-101', '4号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(105, 105, 'DORM-ZY-102', '1号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(106, 106, 'DORM-ZY-102', '2号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(107, 107, 'DORM-ZY-102', '3号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(108, 108, 'DORM-ZY-102', '4号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(109, 109, 'DORM-ZY-103', '1号床', '2026-09-14 10:00:00', 0, 'admin', CURRENT_TIMESTAMP, '预分配待办理入住(现场演示)'),
(110, 110, 'DORM-ZY-103', '2号床', '2026-09-14 10:00:00', 0, 'admin', CURRENT_TIMESTAMP, '预分配待办理入住(现场演示)'),
(111, 111, 'DORM-ZY-103', '3号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(112, 112, 'DORM-ZY-103', '4号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(113, 113, 'DORM-ZY-104', '1号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(114, 114, 'DORM-ZY-104', '2号床', '2026-09-14 10:00:00', 1, 'admin', CURRENT_TIMESTAMP, '正常在住'),
(115, 115, 'DORM-ZY-104', '3号床', '2026-09-14 10:00:00', 2, 'admin', CURRENT_TIMESTAMP, '因车间抢险提前退宿'),
(116, 116, 'DORM-ZY-104', '4号床', '2026-09-14 10:00:00', 2, 'admin', CURRENT_TIMESTAMP, '因病提前退宿')
ON CONFLICT (accommodation_id) DO UPDATE SET
accommodation_status = EXCLUDED.accommodation_status, dorm_id = EXCLUDED.dorm_id, bed_no = EXCLUDED.bed_no;
-- 门禁凭据与授权
INSERT INTO public.train_dorm_auth (auth_id, accommodation_id, auth_start, auth_end, face_sync_status, credential_type, auth_status, create_by, create_time, remark)
VALUES
(101, 101, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(102, 102, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(103, 103, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(104, 104, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(105, 105, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(106, 106, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(107, 107, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(108, 108, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(109, 109, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(110, 110, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(111, 111, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(112, 112, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(113, 113, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发'),
(114, 114, '2026-09-14 00:00:00', '2026-09-30 23:59:59', 1, 'ONLINE_PASSWORD', 'ACTIVE', 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 智能门禁凭据已下发')
ON CONFLICT (accommodation_id) DO UPDATE SET
auth_status = EXCLUDED.auth_status, face_sync_status = EXCLUDED.face_sync_status;
-- 6. 排课日程 (教室与场地互斥,包含确定性冲突用例)
INSERT INTO public.train_lesson (lesson_id, plan_course_id, t_id, venue_type, class_room_id, site_id, start_time, end_time, create_by, create_time, remark)
VALUES
(101, 1, 'T101', 1, 'CR01', NULL, '2026-09-16 09:00:00', '2026-09-16 11:30:00', 'admin', CURRENT_TIMESTAMP, '已结课:高铁站房巡检理论'),
(102, 1, 'T101', 1, 'CR01', NULL, '2026-09-17 14:00:00', '2026-09-17 16:30:00', 'admin', CURRENT_TIMESTAMP, '已结课:雨棚构件防脱专项理论'),
(103, 3, 'T102', 2, NULL, 'SITE02', '2026-09-18 09:00:00', '2026-09-18 12:00:00', 'admin', CURRENT_TIMESTAMP, '已结课:给排水变频调速泵组实作演练'),
(104, 2, 'T103', 1, 'CR02', NULL, '2026-09-19 14:00:00', '2026-09-19 17:00:00', 'admin', CURRENT_TIMESTAMP, '已结课:智能公寓门禁联动实演'),
(105, 1, 'T101', 1, 'CR01', NULL, '2026-09-24 09:00:00', '2026-09-24 11:30:00', 'admin', CURRENT_TIMESTAMP, '今日核心课次:站台沉降观测技术(预留演示排课四维冲突拦截)'),
(106, 3, 'T102', 2, NULL, 'SITE01', '2026-09-25 09:00:00', '2026-09-25 12:00:00', 'admin', CURRENT_TIMESTAMP, '待上课:实训场结构探伤实作'),
(107, 4, 'T104', 1, 'CR01', NULL, '2026-09-26 14:00:00', '2026-09-26 16:30:00', 'admin', CURRENT_TIMESTAMP, '待上课:电子班牌数字化实务'),
(108, 1, 'T101', 1, 'CR01', NULL, '2026-09-28 09:00:00', '2026-09-28 11:30:00', 'admin', CURRENT_TIMESTAMP, '待上课:研修班综合答辩与结业')
ON CONFLICT (lesson_id) DO UPDATE SET
start_time = EXCLUDED.start_time, end_time = EXCLUDED.end_time, t_id = EXCLUDED.t_id;
-- 7. 考勤签到流水 (包含缺勤0、正常1、迟到2、早退3、请假4)
INSERT INTO public.train_student_checkin (checkin_id, enrollment_id, lesson_id, board_id, checkin_way, sign_in_time, sign_out_time, attendance_status, manual_flag, create_by, create_time, remark)
VALUES
(1, 101, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(2, 102, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(3, 103, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(4, 104, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(5, 105, 101, 'BP001', 1, '2026-09-16 09:12:00', '2026-09-16 11:32:00', 2, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(6, 106, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(7, 107, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(8, 108, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(9, 109, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(10, 110, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(11, 111, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(12, 112, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(13, 113, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(14, 114, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(15, 115, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(16, 116, 101, 'BP001', 1, '2026-09-16 08:52:00', '2026-09-16 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(17, 101, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(18, 102, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(19, 103, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(20, 104, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(21, 105, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(22, 106, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(23, 107, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(24, 108, 102, 'BP001', 1, NULL, NULL, 0, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(25, 109, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(26, 110, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(27, 111, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(28, 112, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(29, 113, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(30, 114, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(31, 115, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(32, 116, 102, 'BP001', 1, '2026-09-17 08:52:00', '2026-09-17 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(33, 101, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(34, 102, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(35, 103, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(36, 104, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(37, 105, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(38, 106, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(39, 107, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(40, 108, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(41, 109, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(42, 110, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(43, 111, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(44, 112, 103, 'BP001', 4, '2026-09-18 09:00:00', '2026-09-18 11:30:00', 4, 1, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(45, 113, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(46, 114, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(47, 115, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(48, 116, 103, 'BP001', 1, '2026-09-18 08:52:00', '2026-09-18 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(49, 101, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(50, 102, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(51, 103, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 16:10:00', 3, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(52, 104, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(53, 105, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(54, 106, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(55, 107, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(56, 108, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(57, 109, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(58, 110, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(59, 111, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(60, 112, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(61, 113, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(62, 114, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(63, 115, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水'),
(64, 116, 104, 'BP001', 1, '2026-09-19 08:52:00', '2026-09-19 11:32:00', 1, 0, 'admin', CURRENT_TIMESTAMP, '课次签到流水')
ON CONFLICT (enrollment_id, lesson_id) DO UPDATE SET
attendance_status = EXCLUDED.attendance_status, sign_in_time = EXCLUDED.sign_in_time, sign_out_time = EXCLUDED.sign_out_time;
-- 8. Score V2 成绩
INSERT INTO public.train_score_item (score_item_id, plan_id, plan_course_id, item_name, item_type, weight, full_score, sort_no, create_by, create_time, remark)
VALUES
(1, 'PLAN-2026-01', 1, '高铁房建检修规范-期末笔试', 1, 40.00, 100.00, 1, 'admin', CURRENT_TIMESTAMP, '闭卷理论测试'),
(2, 'PLAN-2026-01', 3, '给排水设备标准化操作考核', 2, 40.00, 100.00, 2, 'admin', CURRENT_TIMESTAMP, '实操工场考核'),
(3, 'PLAN-2026-01', 1, '课堂考勤与平时研讨成绩', 1, 20.00, 100.00, 3, 'admin', CURRENT_TIMESTAMP, '平时出勤与课堂提问')
ON CONFLICT (score_item_id) DO UPDATE SET
item_name = EXCLUDED.item_name, weight = EXCLUDED.weight, full_score = EXCLUDED.full_score;
INSERT INTO public.train_student_score (score_id, enrollment_id, score_item_id, score, source_type, import_time, create_by, create_time, remark)
VALUES
(1, 101, 1, 92.50, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(2, 101, 2, 95.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(3, 101, 3, 98.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(4, 102, 1, 88.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(5, 102, 2, 86.50, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(6, 102, 3, 92.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(7, 103, 1, 95.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(8, 103, 2, 91.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(9, 103, 3, 96.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(10, 104, 1, 78.50, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(11, 104, 2, 82.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(12, 104, 3, 85.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(13, 105, 1, 84.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(14, 105, 2, 80.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(15, 105, 3, 88.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(16, 106, 1, 68.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(17, 106, 2, 72.50, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(18, 106, 3, 75.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(19, 107, 1, 90.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(20, 107, 2, 94.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(21, 107, 3, 95.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(22, 108, 1, 58.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(23, 108, 2, 65.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(24, 108, 3, 70.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(25, 109, 1, 85.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(26, 109, 2, 88.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(27, 109, 3, 90.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(28, 110, 1, 82.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(29, 110, 2, 84.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(30, 110, 3, 86.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(31, 111, 1, 91.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(32, 111, 2, 93.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(33, 111, 3, 95.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(34, 112, 1, 75.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(35, 112, 2, 78.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(36, 112, 3, 80.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(37, 113, 1, 88.50, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(38, 113, 2, 90.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(39, 113, 3, 92.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(40, 114, 1, 86.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(41, 114, 2, 89.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(42, 114, 3, 91.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(43, 115, 1, 80.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(44, 115, 2, 83.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(45, 115, 3, 85.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(46, 116, 1, 83.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(47, 116, 2, 85.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入'),
(48, 116, 3, 87.00, 1, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '正式考评录入')
ON CONFLICT (score_id) DO UPDATE SET
score = EXCLUDED.score;
COMMIT;
-- >>> 来源: sql/demo/004_demo_scenario_data.sql >>>
-- ==============================================================================
-- RailwaySystem Clean Demo 资产: 004_demo_scenario_data.sql
-- 适用数据库: KingbaseES V009R003C018 (schema: public)
-- ==============================================================================
BEGIN;
-- 1. 教学资源
INSERT INTO public.train_resource (resource_id, resource_name, resource_type, resource_url, description, status, del_flag, create_by, create_time, remark)
VALUES
('RES-001', '高速铁路站房构造与检修工艺图集.pdf', 1, '/profile/upload/train/docs/gt_station_arch_2026.pdf', '站房核心结构权威图册', 1, '0', 'admin', CURRENT_TIMESTAMP, '高清图册'),
('RES-002', '站台雨棚防脱拉索安装与探伤教学视频.mp4', 2, '/profile/upload/train/video/canopy_cable_inspection.mp4', '实操演练视频', 1, '0', 'admin', CURRENT_TIMESTAMP, '实操视频'),
('RES-003', '给排水变频供水泵组交互式3D拆解模型.glb', 3, '/profile/upload/train/models/water_pump_assembly.glb', '3D数字孪生模型', 1, '0', 'admin', CURRENT_TIMESTAMP, '3D模型'),
('RES-004', '营业线施工天窗防护与避车VR交互仿真课件.vr', 4, '/profile/upload/train/vr/rail_safety_window_vr.pkg', '沉浸式VR课件', 1, '0', 'admin', CURRENT_TIMESTAMP, 'VR课件'),
('RES-005', '智能公寓门禁物联通信协议与故障排查指南.pdf', 1, '/profile/upload/train/docs/dms_protocol_guide.pdf', '公寓物联技术指南', 1, '0', 'admin', CURRENT_TIMESTAMP, '协议指南'),
('RES-006', '极端强对流天气防汛防台演练复盘实况.mp4', 2, '/profile/upload/train/video/flood_defense_drill.mp4', '防汛演练纪实视频', 1, '0', 'admin', CURRENT_TIMESTAMP, '演练纪实')
ON CONFLICT (resource_id) DO UPDATE SET
resource_name = EXCLUDED.resource_name, resource_type = EXCLUDED.resource_type, status = EXCLUDED.status, del_flag = '0';
-- 2. 课程资源关联
INSERT INTO public.train_course_resource (id, c_id, resource_id, sort_no, create_by, create_time)
VALUES
(1, 'C001', 'RES-001', 1, 'admin', CURRENT_TIMESTAMP),
(2, 'C001', 'RES-002', 2, 'admin', CURRENT_TIMESTAMP),
(3, 'C004', 'RES-003', 1, 'admin', CURRENT_TIMESTAMP),
(4, 'C002', 'RES-004', 1, 'admin', CURRENT_TIMESTAMP),
(5, 'C003', 'RES-005', 1, 'admin', CURRENT_TIMESTAMP),
(6, 'C005', 'RES-006', 1, 'admin', CURRENT_TIMESTAMP)
ON CONFLICT (c_id, resource_id) DO NOTHING;
-- 3. 自主学习时长
INSERT INTO public.train_study_duration (dur_id, enrollment_id, plan_course_id, resource_id, learning_content, source_system, source_event_id, start_time, end_time, study_seconds, sync_time, create_by, create_time, remark)
VALUES
(1, 101, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0001', '2026-09-18 19:00:00', '2026-09-18 19:53:00', 3180, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(2, 101, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0002', '2026-09-20 19:00:00', '2026-09-20 20:04:00', 3840, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(3, 101, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0003', '2026-09-22 19:00:00', '2026-09-22 20:15:00', 4500, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(4, 102, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0004', '2026-09-18 19:00:00', '2026-09-18 20:00:00', 3600, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(5, 102, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0005', '2026-09-20 19:00:00', '2026-09-20 20:11:00', 4260, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(6, 102, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0006', '2026-09-22 19:00:00', '2026-09-22 20:22:00', 4920, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(7, 103, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0007', '2026-09-18 19:00:00', '2026-09-18 20:07:00', 4020, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(8, 103, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0008', '2026-09-20 19:00:00', '2026-09-20 20:18:00', 4680, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(9, 103, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0009', '2026-09-22 19:00:00', '2026-09-22 19:39:00', 2340, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(10, 104, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0010', '2026-09-18 19:00:00', '2026-09-18 20:14:00', 4440, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(11, 104, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0011', '2026-09-20 19:00:00', '2026-09-20 19:35:00', 2100, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(12, 104, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0012', '2026-09-22 19:00:00', '2026-09-22 19:46:00', 2760, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(13, 105, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0013', '2026-09-18 19:00:00', '2026-09-18 20:21:00', 4860, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(14, 105, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0014', '2026-09-20 19:00:00', '2026-09-20 19:42:00', 2520, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(15, 105, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0015', '2026-09-22 19:00:00', '2026-09-22 19:53:00', 3180, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(16, 106, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0016', '2026-09-18 19:00:00', '2026-09-18 19:38:00', 2280, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(17, 106, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0017', '2026-09-20 19:00:00', '2026-09-20 19:49:00', 2940, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(18, 106, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0018', '2026-09-22 19:00:00', '2026-09-22 20:00:00', 3600, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(19, 107, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0019', '2026-09-18 19:00:00', '2026-09-18 19:45:00', 2700, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(20, 107, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0020', '2026-09-20 19:00:00', '2026-09-20 19:56:00', 3360, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(21, 107, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0021', '2026-09-22 19:00:00', '2026-09-22 20:07:00', 4020, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(22, 108, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0022', '2026-09-18 19:00:00', '2026-09-18 19:52:00', 3120, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(23, 108, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0023', '2026-09-20 19:00:00', '2026-09-20 20:03:00', 3780, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(24, 108, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0024', '2026-09-22 19:00:00', '2026-09-22 20:14:00', 4440, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(25, 109, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0025', '2026-09-18 19:00:00', '2026-09-18 19:59:00', 3540, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(26, 109, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0026', '2026-09-20 19:00:00', '2026-09-20 20:10:00', 4200, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(27, 109, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0027', '2026-09-22 19:00:00', '2026-09-22 20:21:00', 4860, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(28, 110, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0028', '2026-09-18 19:00:00', '2026-09-18 20:06:00', 3960, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(29, 110, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0029', '2026-09-20 19:00:00', '2026-09-20 20:17:00', 4620, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(30, 110, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0030', '2026-09-22 19:00:00', '2026-09-22 19:38:00', 2280, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(31, 111, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0031', '2026-09-18 19:00:00', '2026-09-18 20:13:00', 4380, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(32, 111, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0032', '2026-09-20 19:00:00', '2026-09-20 20:24:00', 5040, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(33, 111, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0033', '2026-09-22 19:00:00', '2026-09-22 19:45:00', 2700, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(34, 112, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0034', '2026-09-18 19:00:00', '2026-09-18 20:20:00', 4800, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(35, 112, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0035', '2026-09-20 19:00:00', '2026-09-20 19:41:00', 2460, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(36, 112, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0036', '2026-09-22 19:00:00', '2026-09-22 19:52:00', 3120, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(37, 113, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0037', '2026-09-18 19:00:00', '2026-09-18 19:37:00', 2220, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(38, 113, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0038', '2026-09-20 19:00:00', '2026-09-20 19:48:00', 2880, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(39, 113, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0039', '2026-09-22 19:00:00', '2026-09-22 19:59:00', 3540, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(40, 114, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0040', '2026-09-18 19:00:00', '2026-09-18 19:44:00', 2640, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(41, 114, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0041', '2026-09-20 19:00:00', '2026-09-20 19:55:00', 3300, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(42, 114, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0042', '2026-09-22 19:00:00', '2026-09-22 20:06:00', 3960, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(43, 115, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0043', '2026-09-18 19:00:00', '2026-09-18 19:51:00', 3060, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(44, 115, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0044', '2026-09-20 19:00:00', '2026-09-20 20:02:00', 3720, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(45, 115, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0045', '2026-09-22 19:00:00', '2026-09-22 20:13:00', 4380, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(46, 116, 1, 'RES-001', '站房结构日常维护规程阅读', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0046', '2026-09-18 19:00:00', '2026-09-18 19:58:00', 3480, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(47, 116, 1, 'RES-002', '雨棚探伤高清教学视频回放', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0047', '2026-09-20 19:00:00', '2026-09-20 20:09:00', 4140, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡'),
(48, 116, 1, 'RES-003', '暖通变频供水泵组3D模拟拆卸', 'RAIL_ELEARNING_V2', 'EVT-STUDY-2026-0048', '2026-09-22 19:00:00', '2026-09-22 20:20:00', 4800, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '移动端自主学习打卡')
ON CONFLICT (dur_id) DO UPDATE SET
study_seconds = EXCLUDED.study_seconds, end_time = EXCLUDED.end_time;
-- 4. 学员360画像
INSERT INTO public.train_student_portrait (portrait_id, enrollment_id, attendance_rate, theory_score, practical_score, total_study_hour, label_tag, portrait_content, generated_time, create_by, create_time, remark)
VALUES
(101, 101, 100.00, 92.50, 95.00, 24.50, '优秀学员,技术骨干,全勤标兵', '{"attendance":100.0,"theory":92.5,"practice":95.0,"studyHour":24.5,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(102, 102, 100.00, 88.00, 86.50, 18.00, '全勤标兵,实作能手', '{"attendance":100.0,"theory":88.0,"practice":86.5,"studyHour":18.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(103, 103, 100.00, 95.00, 91.00, 26.00, '技术骨干,防汛骨干,理论前沿', '{"attendance":100.0,"theory":95.0,"practice":91.0,"studyHour":26.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(104, 104, 100.00, 78.50, 82.00, 15.50, '勤勉好学,安全卫士', '{"attendance":100.0,"theory":78.5,"practice":82.0,"studyHour":15.5,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(105, 105, 75.00, 84.00, 80.00, 20.00, '作风优良,综合骨干', '{"attendance":75.0,"theory":84.0,"practice":80.0,"studyHour":20.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(106, 106, 100.00, 68.00, 72.50, 12.00, '稳步提升,出勤良好', '{"attendance":100.0,"theory":68.0,"practice":72.5,"studyHour":12.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(107, 107, 100.00, 90.00, 94.00, 25.00, '拔尖人才,实作标杆', '{"attendance":100.0,"theory":90.0,"practice":94.0,"studyHour":25.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(108, 108, 75.00, 58.00, 65.00, 10.50, '需重点帮扶,理论待补强', '{"attendance":75.0,"theory":58.0,"practice":65.0,"studyHour":10.5,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(109, 109, 100.00, 85.00, 88.00, 19.50, '全勤学员,技术标兵', '{"attendance":100.0,"theory":85.0,"practice":88.0,"studyHour":19.5,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(110, 110, 100.00, 82.00, 84.00, 17.00, '勤恳踏实,业务能手', '{"attendance":100.0,"theory":82.0,"practice":84.0,"studyHour":17.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(111, 111, 100.00, 91.00, 93.00, 23.00, '理论扎实,排头兵', '{"attendance":100.0,"theory":91.0,"practice":93.0,"studyHour":23.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(112, 112, 100.00, 75.00, 78.00, 14.50, '作风硬朗,安全先锋', '{"attendance":100.0,"theory":75.0,"practice":78.0,"studyHour":14.5,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(113, 113, 100.00, 88.50, 90.00, 21.00, '技术能手,优秀学员', '{"attendance":100.0,"theory":88.5,"practice":90.0,"studyHour":21.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(114, 114, 100.00, 86.00, 89.00, 20.50, '全勤标兵,严谨细致', '{"attendance":100.0,"theory":86.0,"practice":89.0,"studyHour":20.5,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(115, 115, 100.00, 80.00, 83.00, 16.00, '学习积极,出勤达标', '{"attendance":100.0,"theory":80.0,"practice":83.0,"studyHour":16.0,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算'),
(116, 116, 100.00, 83.00, 85.00, 18.50, '业务骨干,善于钻研', '{"attendance":100.0,"theory":83.0,"practice":85.0,"studyHour":18.5,"safetySense":98.0,"discipline":96.0}', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '综合画像智能测算')
ON CONFLICT (enrollment_id) DO UPDATE SET
total_study_hour = EXCLUDED.total_study_hour, theory_score = EXCLUDED.theory_score, practical_score = EXCLUDED.practical_score, attendance_rate = EXCLUDED.attendance_rate, label_tag = EXCLUDED.label_tag, portrait_content = EXCLUDED.portrait_content;
-- 5. 外部系统映射与审计流水
INSERT INTO public.train_external_resource_mapping (mapping_id, dorm_id, vendor_code, local_resource_type, external_resource_type, external_resource_id, is_primary, mapping_status, last_sync_time, create_by, create_time)
VALUES
(1, 'DORM-ZY-101', 'DMS', 'DORM', 'ROOM', 'MOCK-DMS-ROOM-101', 1, 'ACTIVE', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP),
(2, 'DORM-ZY-102', 'DMS', 'DORM', 'ROOM', 'MOCK-DMS-ROOM-102', 1, 'ACTIVE', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP)
ON CONFLICT (mapping_id) DO NOTHING;
INSERT INTO public.train_external_operation (operation_id, door_auth_id, business_type, vendor_code, operation_type, operation_status, idempotency_key, attempt_count, requested_at, completed_at, create_by, create_time, remark)
VALUES
(1, 101, 'DOOR_AUTH', 'DMS', 'ISSUE_CREDENTIAL', 'SUCCESS', 'IDEMP-DMS-CRED-001', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 门禁凭据下发成功'),
(2, 102, 'DOOR_AUTH', 'DMS', 'RECONCILE', 'SUCCESS', 'IDEMP-DMS-RECON-001', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, '[DEMO MOCK] 离线对账完成')
ON CONFLICT (operation_id) DO NOTHING;
COMMIT;