{{ step.index }}
@@ -322,6 +331,7 @@ import {
type PracticePrepCardResponse,
type PracticeScenarioResponse
} from '@/api/aihr/practice';
+import { listPracticeReviews } from '@/api/aihr/mobile-admin';
import { searchKnowledgeSop, type SopSearchResponse } from '@/api/aihr/sop';
import { resolvePilotDateWindow } from './pilot-export';
@@ -476,6 +486,7 @@ const sopHelpLoading = ref(false);
const sopHelpMessage = ref('');
const conversation = ref
([]);
const records = ref([...baseRecords]);
+const recordsFallback = ref(true);
const promptTemplates = ref([]);
const promptLoading = ref(false);
const promptSaving = ref(false);
@@ -643,6 +654,24 @@ const loadScenarioOptions = async () => {
await loadPrepCard();
};
+const loadRecentRecords = async () => {
+ try {
+ const { data } = await listPracticeReviews({ limit: 10 });
+ records.value = (data || []).map((item) => ({
+ time: item.time,
+ trainee: item.trainee,
+ scene: item.scene,
+ score: item.score,
+ status: item.status,
+ summary: item.summary
+ }));
+ recordsFallback.value = false;
+ } catch {
+ records.value = [...baseRecords];
+ recordsFallback.value = true;
+ }
+};
+
const appendTurn = (role: ChatRole, text: string) => {
const nameMap = { customer: 'AI 业主', trainee: '学员', coach: 'AI 教练' };
conversation.value.push({ id: `${role}-${conversation.value.length}`, role, name: nameMap[role], text });
@@ -669,7 +698,6 @@ const resetPractice = () => {
calibrationReason.value = '管理端人工校准';
calibrationMessage.value = '';
conversation.value = [];
- records.value = [...baseRecords];
};
const handleScenarioChange = () => {
@@ -805,7 +833,7 @@ const finishScore = async () => {
scored.value = true;
calibrationScore.value = Math.max(0, Math.min(100, Math.round(Number(displayTotal.value) || 0)));
- records.value = [nextRecord, ...baseRecords];
+ records.value = [nextRecord, ...records.value];
if (apiMode.value !== 'api') {
ElMessage.success('考官评分已生成,并写入本地对练记录');
}
@@ -970,6 +998,7 @@ const togglePromptTemplate = async (template: PromptTemplateResponse) => {
onMounted(() => {
void loadScenarioOptions();
void loadPromptTemplates();
+ void loadRecentRecords();
});
diff --git a/scripts/demo-check.sh b/scripts/demo-check.sh
index 3c097603..2a324a66 100755
--- a/scripts/demo-check.sh
+++ b/scripts/demo-check.sh
@@ -455,6 +455,8 @@ contains frontend/src/views/train/practice.vue "训练前预习卡"
contains frontend/src/views/train/practice.vue "Rubric 预览"
contains frontend/src/views/train/practice.vue "提示词模板"
contains frontend/src/views/train/practice.vue "导出试点CSV"
+contains frontend/src/views/train/practice.vue "训练记录接口暂不可用,当前显示演示记录"
+contains frontend/src/views/train/practice.vue "listPracticeReviews"
contains frontend/src/views/train/reviews.vue "导出试点 CSV"
contains frontend/src/views/train/reviews.vue "人工校准总分"
contains frontend/src/views/train/reviews.vue "不展示演示复盘记录或猜测性试点指标"