fix: ignore stale class task responses

dev-QQq
chenyuan 4 weeks ago
parent 3087542128
commit 91c6e21b76

@ -63,8 +63,10 @@ async function loadTasks() {
tasks.value = [];
return;
}
const requestedClassId = classId.value;
tasks.value = [];
const res = await listClassTrainingTasks(classId.value, { enabledOnly: false });
if (classId.value !== requestedClassId) return;
tasks.value = res.data || [];
}
@ -80,10 +82,13 @@ async function loadPublication() {
selectedTaskKeys.value = [];
configured.value = false;
if (!classId.value) return;
const requestedClassId = classId.value;
loading.value = true;
try {
await loadTasks();
const res = await indexApi.getTaskPublication({ classId: classId.value });
if (classId.value !== requestedClassId) return;
const res = await indexApi.getTaskPublication({ classId: requestedClassId });
if (classId.value !== requestedClassId) return;
configured.value = res.data?.configured === true;
selectedTaskKeys.value = configured.value
? (res.data?.taskKeys || [])

@ -12,6 +12,8 @@ assert(taskPage.includes("listClassTrainingTasks"), "task allocation must use tr
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.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");

Loading…
Cancel
Save