assert(taskPage.includes("listClassTrainingTasks"),"task allocation must use training tasks as its data source");
assert(taskPage.includes('import { listClassTrainingTasks } from "@/api/trainingTask";'),"task allocation must import the class-scoped training task source");
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(taskPage.includes("tasks.value = [];\n const res = await listClassTrainingTasks"),"class task loading must clear prior class rows before requesting the selected class");
assert((taskPage.match(/const requestedClassId = classId\.value;/g)||[]).length>=2,"task and publication loading must capture the requested class");
assert((taskPage.match(/if \(classId\.value !== requestedClassId\) return;/g)||[]).length>=2,"stale class requests must not update task rows or publication selection");
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");
assert(taskPage.includes("const requestGeneration = ++activeLoadGeneration;"),"each class load must advance the active generation");
assert(taskPage.includes("if (requestGeneration === activeLoadGeneration) loading.value = false;"),"only the active class load may clear the loading indicator");
assert(taskPage.includes("let selectionSyncGeneration = -1;"),"programmatic selection synchronization must be tracked");
assert(taskPage.includes("if (selectionSyncGeneration === activeLoadGeneration) return;"),"programmatic table selection events must not overwrite task keys");
assert(taskPage.includes("getTaskPublication"),"task allocation must load the selected class publication state");
assert(taskPage.includes("tasks.value.map((task) => task.taskKey)"),"an unconfigured class must default to all tasks selected");
assert(taskPage.includes("保存发布配置"),"task allocation must require an explicit save");