From 99c7167a0ad3c7ecfca99d539bca51bb3d4903de Mon Sep 17 00:00:00 2001 From: chenyuan Date: Fri, 16 Oct 2026 20:06:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(sql):=20=E5=B9=B3=E5=8F=B0/=E5=AD=A6?= =?UTF-8?q?=E6=A0=A1=E9=BB=98=E8=AE=A4=E4=BB=BB=E5=8A=A1=E5=88=86=E9=85=8D?= =?UTF-8?q?=20module=20=E5=AD=98=E4=B8=AD=E6=96=87=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=90=8D=E5=AF=BC=E8=87=B4=E8=AF=84=E9=98=85=E4=B8=8E=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E7=AB=AF=E8=A7=A3=E6=9E=90=E4=B8=8D=E5=88=B0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=9A=84=E4=BF=AE=E5=A4=8D=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - task_allocation 里 999999999 与 SCHOOL_DEFAULT:* 的 module 存的是中文展示名, 消费方都用它匹配 training_task.task_key,导致无班级级分配的教学班评阅下拉全空、 学生列表为 0 - 附判定查询与按学校修复脚本;验收库已手工修复并备份 task_allocation_bak_20261016 --- ...-16-repair-task-allocation-module-keys.sql | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 docs/sql/2026-10-16-repair-task-allocation-module-keys.sql diff --git a/docs/sql/2026-10-16-repair-task-allocation-module-keys.sql b/docs/sql/2026-10-16-repair-task-allocation-module-keys.sql new file mode 100644 index 0000000..96aba2d --- /dev/null +++ b/docs/sql/2026-10-16-repair-task-allocation-module-keys.sql @@ -0,0 +1,39 @@ +-- 修复平台默认/学校默认任务分配的 module 存了中文任务名的问题。 +-- +-- 现象:task_allocation 里 class_id='999999999'(平台默认)与 class_id LIKE 'SCHOOL_DEFAULT:%' +-- (学校默认,由 initializeSchoolDefault 从平台默认复制而来)的 module 存的是中文任务展示名 +-- (如"行业需求分析-蛋糕指数"),而所有消费方(任务评阅 taskReview、学生端实训任务解析等) +-- 都用 module 匹配 training_task.task_key(英文标识),一条都匹配不上。 +-- 表现为:没有班级级任务分配的教学班,任务评阅页实训项目/实训任务下拉为空、学生列表为 0, +-- 学生端实训列表为空;有班级级分配的教学班(班级管理/实训任务管理保存过)不受影响。 +-- +-- 执行前先备份: +-- CREATE TABLE task_allocation_bak_20261016 AS +-- SELECT * FROM task_allocation +-- WHERE class_id='999999999' OR class_id LIKE 'SCHOOL_DEFAULT:%'; +-- +-- 判定是否需要执行: +-- SELECT a.module FROM task_allocation a +-- LEFT JOIN training_task t ON t.task_key = a.module +-- WHERE (a.class_id='999999999' OR a.class_id LIKE 'SCHOOL_DEFAULT:%') AND t.id IS NULL; +-- 查出中文任务名即需要修复。 + +-- 1) 平台默认:以 training_task 为基线重建(24 个启用任务;综合实训默认停用,由各班发布后参与) +DELETE FROM task_allocation WHERE class_id = '999999999'; +INSERT INTO task_allocation (id, class_id, school_id, module, disabled_status, sort) +SELECT UUID(), '999999999', '999999999', task_key, + CASE WHEN task_key = 'comprehensive-case-training' THEN 1 ELSE 0 END, + sort +FROM training_task +WHERE enabled = 1; + +-- 2) 学校默认:逐个学校执行(把 替换为实际学校ID后运行; +-- 已确认无问题的学校跳过。学校清单: +-- SELECT DISTINCT school_id FROM school_class WHERE class_type='TEACHING';) +-- DELETE FROM task_allocation WHERE class_id = CONCAT('SCHOOL_DEFAULT:', ''); +-- INSERT INTO task_allocation (id, class_id, school_id, module, disabled_status, sort) +-- SELECT UUID(), CONCAT('SCHOOL_DEFAULT:', ''), '', task_key, +-- CASE WHEN task_key = 'comprehensive-case-training' THEN 1 ELSE 0 END, +-- sort +-- FROM training_task +-- WHERE enabled = 1;