diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
index 777be09..6468863 100644
--- a/src/layout/components/Sidebar/index.vue
+++ b/src/layout/components/Sidebar/index.vue
@@ -286,6 +286,12 @@ const sidebarStyle = computed(() => {
});
const studentCourseNav = [
{ title: "AI智能助手", path: "/assistant/index", activePrefix: "/assistant" },
+ {
+ title: "综合实训",
+ children: [
+ { title: "综合案例实训", path: "/comprehensive/index" },
+ ],
+ },
{
title: "互联网产品开发基础",
children: [
@@ -351,6 +357,7 @@ const teacherManageNav = [
},
];
const trainingTaskKeyByPath = {
+ "/comprehensive/index": "comprehensive-case-training",
"/foundation/new-product-survey": "new-product-survey",
"/foundation/product-development-factors": "product-development-factors",
"/foundation/product-development-process": "product-development-process",
@@ -382,6 +389,7 @@ const currentCourseNav = computed(() => (isTeacherRole.value
: filterStudentCourseNavigation(studentCourseNav, publishedTaskKeys.value)));
const studentIconByPath = {
"/assistant/index": "MagicStick",
+ "/comprehensive/index": "School",
"/foundation/new-product-survey": "Search",
"/foundation/product-development-factors": "SetUp",
"/foundation/product-development-process": "Guide",
diff --git a/src/router/index.js b/src/router/index.js
index da63a1e..4b73cb8 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -153,6 +153,21 @@ export const dynamicRoutes = [
component: () => import("@/views/studentDemo/index.vue"),
hidden: true,
},
+ {
+ path: "/comprehensive",
+ component: Layout,
+ redirect: "/comprehensive/index",
+ roles: ["student"],
+ hidden: true,
+ children: [
+ {
+ path: "index",
+ component: () => import("@/views/training/GenericTrainingPage.vue"),
+ name: "ComprehensiveCaseTraining",
+ meta: { title: "综合实训", icon: "Finished", affix: true, pageKey: "comprehensive-case-training" },
+ },
+ ],
+ },
// 互联网产品开发基础
{
path: "/foundation",
diff --git a/src/views/teacherEnd/task/index.vue b/src/views/teacherEnd/task/index.vue
index d33253f..7cbeafe 100644
--- a/src/views/teacherEnd/task/index.vue
+++ b/src/views/teacherEnd/task/index.vue
@@ -10,7 +10,7 @@
{{ configured ? '已保存发布配置' : '默认全部发布(未配置)' }}
- {{ configured ? '仅勾选的实训任务会出现在学生端。' : '当前所有实训任务均已默认勾选,保存后将按勾选结果发布。' }}
+ {{ configured ? '仅勾选的实训任务会出现在学生端。' : '现有实训任务默认勾选;“综合案例实训”默认不发布,需由教师主动勾选。' }}
保存发布配置
@@ -27,6 +27,7 @@
>
+
@@ -46,6 +47,7 @@ const configured = ref(false);
const loading = ref(false);
const saving = ref(false);
const tableRef = ref(null);
+const comprehensiveTaskKey = "comprehensive-case-training";
let activeLoadGeneration = 0;
let selectionSyncGeneration = -1;
@@ -113,7 +115,9 @@ async function loadPublication() {
configured.value = res.data?.configured === true;
selectedTaskKeys.value = configured.value
? (res.data?.taskKeys || [])
- : tasks.value.map((task) => task.taskKey);
+ : tasks.value
+ .filter((task) => task.taskKey !== comprehensiveTaskKey)
+ .map((task) => task.taskKey);
applySelection(requestGeneration);
} finally {
if (requestGeneration === activeLoadGeneration) loading.value = false;
diff --git a/src/views/training/studentTrainingPages.js b/src/views/training/studentTrainingPages.js
index bf4ae30..ad64bf9 100644
--- a/src/views/training/studentTrainingPages.js
+++ b/src/views/training/studentTrainingPages.js
@@ -1,4 +1,18 @@
export const studentTrainingPages = {
+ "comprehensive-case-training": {
+ title: "综合案例实训",
+ knowledge: "综合实训以一个完整案例串联市场洞察、产品规划、开发验证和上线运营,训练学生在真实业务背景下完成产品开发全流程。",
+ background: "请根据教师发布的综合案例,梳理问题、方案、实施过程和验证结论。教师可在班级任务配置中替换案例材料、任务说明、步骤和评分要求。",
+ goals: ["综合运用互联网产品开发方法", "完成基于案例的分析与方案设计", "形成可提交、可评价的完整实训成果"],
+ task: "请围绕教师发布的综合案例,完成分析、方案设计、实施说明和结果复盘,并提交实训成果。",
+ flow: ["案例理解", "问题分析", "方案设计", "实施验证", "成果复盘"],
+ fields: [
+ { key: "caseAnalysis", label: "案例与问题分析", type: "textarea", placeholder: "概括案例背景、目标用户、核心问题与关键约束" },
+ { key: "solution", label: "整体解决方案", type: "textarea", placeholder: "说明产品方案、关键功能、实施步骤与资源安排" },
+ { key: "validation", label: "验证与复盘", type: "textarea", placeholder: "说明验证方式、结果、风险及后续优化建议" },
+ ],
+ keyPoints: ["案例目标", "用户需求", "产品方案", "验证证据", "复盘改进"],
+ },
"product-development-process": {
title: "产品开发主要流程",
knowledge: