From 63d06748da53a3e300362a65575d8393b506a38c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B2=85?= <907037276@qq.com> Date: Thu, 3 Sep 2026 15:09:31 +0800 Subject: [PATCH] fix: prevent AI route refresh 404 and detect AI scores --- src/router/index.js | 4 ++-- src/views/analysis-of-students/analysis.vue | 3 ++- ...oute-refresh-and-score-presence.static.test.cjs | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 tests/ai-route-refresh-and-score-presence.static.test.cjs diff --git a/src/router/index.js b/src/router/index.js index ad586f5..151169e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -14,7 +14,7 @@ * @FilePath: \e-commerce-internet\src\router\index.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ -import { createWebHistory, createRouter } from "vue-router"; +import { createWebHashHistory, createRouter } from "vue-router"; /* Layout */ import Layout from "@/layout"; @@ -789,7 +789,7 @@ export const schoolAdminRoutes = [ }, ]; const router = createRouter({ - history: createWebHistory(), + history: createWebHashHistory(), routes: [...constantRoutes, ...dynamicRoutes, ...teacherRoutes, ...platformAdminRoutes, ...schoolAdminRoutes], scrollBehavior(to, from, savedPosition) { if (savedPosition) { diff --git a/src/views/analysis-of-students/analysis.vue b/src/views/analysis-of-students/analysis.vue index 00f7552..6231890 100644 --- a/src/views/analysis-of-students/analysis.vue +++ b/src/views/analysis-of-students/analysis.vue @@ -65,9 +65,10 @@ const hasTeacherScoreData = (row) => { return Number(row.completedTaskCount || 0) > 0 || moduleMap.some(({ key }) => row[`${key}Score`] !== null && row[`${key}Score`] !== undefined); }; const toNumber = (value) => Number(value) || 0; +const hasAiAssessmentScore = (value) => value !== null && value !== undefined && value !== ""; const hasStudentTrainingData = (report, projectStudyTimes) => (report?.modules || []).some((module) => toNumber(module.score) > 0 || toNumber(module.completedTaskCount) > 0) - || (report?.tasks || []).some((task) => task.progressStatus && task.progressStatus !== "NOT_STARTED") + || (report?.tasks || []).some((task) => hasAiAssessmentScore(task.aiAssessmentScore) || (task.progressStatus && task.progressStatus !== "NOT_STARTED")) || (projectStudyTimes || []).some((item) => toNumber(item.studySeconds) > 0); const buildStudentAnalysisData = (report, projectStudyTimes) => ({ trainingScores: { diff --git a/tests/ai-route-refresh-and-score-presence.static.test.cjs b/tests/ai-route-refresh-and-score-presence.static.test.cjs new file mode 100644 index 0000000..3891537 --- /dev/null +++ b/tests/ai-route-refresh-and-score-presence.static.test.cjs @@ -0,0 +1,14 @@ +const assert = require("node:assert/strict"); +const fs = require("node:fs"); +const path = require("node:path"); + +const root = path.resolve(__dirname, ".."); +const router = fs.readFileSync(path.join(root, "src/router/index.js"), "utf8"); +const analysis = fs.readFileSync(path.join(root, "src/views/analysis-of-students/analysis.vue"), "utf8"); + +assert.match(router, /import\s*\{\s*createWebHashHistory,\s*createRouter\s*\}/); +assert.match(router, /history:\s*createWebHashHistory\(\)/); +assert.match(analysis, /const hasAiAssessmentScore = \(value\) => value !== null && value !== undefined && value !== ""/); +assert.match(analysis, /hasAiAssessmentScore\(task\.aiAssessmentScore\)/); + +console.log("AI route refresh and score presence static checks passed");