fix: keep comprehensive training last in task allocation

dev-QQq
chenyuan 4 weeks ago
parent e93059648b
commit cf8fa95f99

@ -79,6 +79,15 @@ function syncTableSelection(taskKeys, requestGeneration) {
});
}
function sortTasksWithComprehensiveLast(taskList) {
return [...taskList].sort((left, right) => {
const leftIsComprehensive = left?.taskKey === comprehensiveTaskKey;
const rightIsComprehensive = right?.taskKey === comprehensiveTaskKey;
if (leftIsComprehensive === rightIsComprehensive) return 0;
return leftIsComprehensive ? 1 : -1;
});
}
async function loadTasks(requestGeneration) {
if (!classId.value) {
tasks.value = [];
@ -88,7 +97,7 @@ async function loadTasks(requestGeneration) {
tasks.value = [];
const res = await listClassTrainingTasks(classId.value, { enabledOnly: false });
if (!isActiveLoad(requestedClassId, requestGeneration)) return false;
tasks.value = res.data || [];
tasks.value = sortTasksWithComprehensiveLast(res.data || []);
return true;
}

@ -12,6 +12,8 @@ assert(taskPage.includes('import { listClassTrainingTasks } from "@/api/training
assert(taskPage.includes("listClassTrainingTasks"), "task allocation must load training tasks for the selected teaching class");
assert(taskPage.includes("await listClassTrainingTasks(classId.value, { enabledOnly: false })"), "class task loading must request disabled and enabled tasks");
assert(/tasks\.value = \[\];\s+const res = await listClassTrainingTasks/.test(taskPage), "class task loading must clear prior class rows before requesting the selected class");
assert(taskPage.includes("function sortTasksWithComprehensiveLast(taskList)"), "task allocation must normalize task order after loading");
assert(taskPage.includes("tasks.value = sortTasksWithComprehensiveLast(res.data || []);"), "task allocation must render comprehensive training after every other task");
assert((taskPage.match(/const requestedClassId = classId\.value;/g) || []).length >= 2, "task and publication loading must capture the requested class");
assert((taskPage.match(/if \(!isActiveLoad\(requestedClassId, requestGeneration\)\) return/g) || []).length >= 2, "stale class requests must not update task rows or publication selection");
assert(taskPage.includes("let activeLoadGeneration = 0;"), "overlapping class loads must use a shared generation");

Loading…
Cancel
Save