diff --git a/src/views/components/TrainingAiEvaluation.vue b/src/views/components/TrainingAiEvaluation.vue
index 03f7573..183de9f 100644
--- a/src/views/components/TrainingAiEvaluation.vue
+++ b/src/views/components/TrainingAiEvaluation.vue
@@ -34,7 +34,7 @@
{{ statusLabel(assessmentStatus) }}
-
AI将基于已填写的答案给出综合评分和改进方向。
+ AI根据已保存的答案评分。修改并保存答案后可重新助评;答案未变时保留上次结果。
{{ assessmentActionLabel }}
@@ -90,9 +90,11 @@ const assessmentReport = computed(() => normalizedReports.value.assessmentReport
const score = computed(() => normalizedReports.value.score);
const scoreCriteria = computed(() => normalizedReports.value.scoreCriteria);
const isHelpDisabled = computed(() => !props.hasAnyAnswer || helpLoading.value || isTerminal(helpStatus.value));
-const isAssessmentDisabled = computed(() => !props.hasAnyAnswer || assessmentLoading.value || isTerminal(assessmentStatus.value));
+const isAssessmentDisabled = computed(() => !props.hasAnyAnswer || assessmentLoading.value || assessmentStatus.value === "PROCESSING");
const helpActionLabel = computed(() => actionLabel(helpStatus.value, "生成助学建议", helpLoading.value));
-const assessmentActionLabel = computed(() => actionLabel(assessmentStatus.value, "请求AI助评", assessmentLoading.value));
+const assessmentActionLabel = computed(() => assessmentStatus.value === "SUCCEEDED" && !assessmentLoading.value
+ ? "重新助评"
+ : actionLabel(assessmentStatus.value, "请求AI助评", assessmentLoading.value));
onMounted(() => loadEvaluation());
@@ -136,7 +138,7 @@ async function requestHelp() {
async function confirmAssessment() {
if (isAssessmentDisabled.value || !props.taskKey) return;
try {
- await proxy?.$modal?.confirm("AI将根据当前已填写的内容进行评估,是否继续?", "提示");
+ await proxy?.$modal?.confirm("AI将根据当前已保存的答案进行评估,答案未变时保留上次结果,是否继续?", "提示");
} catch (error) {
return;
}
diff --git a/src/views/components/TrainingAiSidebar.vue b/src/views/components/TrainingAiSidebar.vue
index 1f19858..20e6ce5 100644
--- a/src/views/components/TrainingAiSidebar.vue
+++ b/src/views/components/TrainingAiSidebar.vue
@@ -64,7 +64,8 @@
请先至少填写并保存一项实训内容,再请求 AI 助评。
- AI智能评分
+ 修改并保存答案后可重新助评;答案未变时保留上次结果。
+ {{ reports.assessment.status === "SUCCEEDED" ? "重新助评" : "AI智能评分" }}
diff --git a/tests/ai-training-evaluation.static.test.cjs b/tests/ai-training-evaluation.static.test.cjs
index aa32297..2686ee4 100644
--- a/tests/ai-training-evaluation.static.test.cjs
+++ b/tests/ai-training-evaluation.static.test.cjs
@@ -65,3 +65,12 @@ assert(/hasSavedAnswer/.test(page) && /:has-saved-answer="hasSavedAnswer"/.test(
assert(/hasSavedAnswer/.test(sidebar), "AI sidebar should accept persisted-answer state");
assert(/!props\.hasSavedAnswer/.test(sidebar), "AI assessment should be disabled until a saved answer exists");
assert(/catch \(error\)/.test(sidebar), "AI sidebar should handle assessment failures without an unhandled rejection");
+
+assert(/const isAssessmentDisabled = computed\(\(\) => !props\.hasAnyAnswer \|\| assessmentLoading\.value \|\| assessmentStatus\.value === "PROCESSING"\)/.test(component),
+ "successful assessments should remain available for checking changed saved answers");
+assert(/assessmentStatus\.value === "SUCCEEDED"[\s\S]*?\? "重新助评"/.test(component),
+ "successful assessments should expose the reassessment action");
+assert(/reports\.assessment\.status === "SUCCEEDED" \? "重新助评" : "AI智能评分"/.test(sidebar),
+ "the shared sidebar should expose the reassessment action");
+assert(component.includes("答案未变时保留上次结果") && sidebar.includes("答案未变时保留上次结果"),
+ "both assessment controls should explain saved-answer reuse");