- 为复合能力课和垂直能力课添加单元分组结构 - 实现单元导航栏和课程筛选功能 - 优化导航栏样式,采用胶囊式设计 - 调整页面布局和间距,提升视觉体验 - 修复营销能力课日历事件显示问题 - 修复1v1规划时间为14:00-16:00 - 修复作业页面iframe返回后滚动失效问题 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
4962 lines
175 KiB
JavaScript
4962 lines
175 KiB
JavaScript
// 导入JSON数据
|
||
import companyJobsData from './companyJobs.json';
|
||
import calendarCoursesData from './calendarCourses.json';
|
||
import aiCoursesData from '../../网页未导入数据/ai课程表.json';
|
||
import marketingCoursesData from './marketingCourses.json';
|
||
|
||
// 转换函数:将JSON数据转换为页面所需格式
|
||
const transformCompanyJobs = (jobsData) => {
|
||
return jobsData.map((job, index) => ({
|
||
id: index + 1,
|
||
company: job["公司介绍"] ? job["公司介绍"].split('。')[0].substring(0, 20) + '...' : `公司${index + 1}`,
|
||
position: job["内推岗位名称"],
|
||
salary: job["薪资"],
|
||
status: "available",
|
||
jobType: job["岗位标签"] === "实习" ? "internship" : "fulltime",
|
||
remainingPositions: parseInt(job["招聘人数"]) || 1,
|
||
applicationStatus: ["not_applied", "applied", "interview_success", "interview_failed"][Math.floor(Math.random() * 4)],
|
||
tags: job["职位标签"] || [],
|
||
deadline: job["截止时间"],
|
||
type: job["岗位相关标签"] || "专业相关岗位",
|
||
jobCategory: job["岗位相关标签"] || "专业相关岗位", // 岗位相关标签
|
||
location: job["工作地点"], // 工作地点
|
||
education: job["学历要求"], // 学历要求
|
||
benefits: job["福利标签"] || [], // 福利标签
|
||
isRecommended: Math.random() > 0.7,
|
||
details: {
|
||
location: job["工作地点"],
|
||
experience: "1-3年",
|
||
education: job["学历要求"],
|
||
positions: job["招聘人数"],
|
||
description: job["职位描述"],
|
||
requirements: job["任职要求"] ? job["任职要求"].split(/[;;。\n]/).filter(r => r.trim()) : [],
|
||
benefits: job["福利标签"] || [],
|
||
companyInfo: job["公司介绍"]
|
||
}
|
||
}));
|
||
};
|
||
|
||
// 转换函数:将日历课程JSON数据转换为日历事件格式
|
||
const transformCalendarCourses = (coursesData) => {
|
||
return coursesData
|
||
.filter(course => course["❌课程状态"] !== "休息" && course["日期"])
|
||
.map((course, index) => {
|
||
// 解析日期
|
||
const dateStr = course["日期"];
|
||
const [year, month, day] = dateStr.split('/').map(Number);
|
||
const courseDate = new Date(year, month - 1, day);
|
||
|
||
// 获取课程名称(优先级从高到低)
|
||
const courseName = course["复合技能阶段"] ||
|
||
course["公开课"] ||
|
||
course["垂直方向阶段(方向二:商业活动策划)"] ||
|
||
course["1V1 规划阶段"] ||
|
||
course["模拟面试实战练习阶段"] ||
|
||
"未命名课程";
|
||
|
||
// 解析上课时间
|
||
const timeStr = course["上课时间"] || "20:00-21:00";
|
||
let startTime = "20:00";
|
||
let endTime = "21:00";
|
||
|
||
// 特殊处理1V1规划课程的时间
|
||
if (course["1V1 规划阶段"]) {
|
||
startTime = "14:00";
|
||
endTime = "16:00";
|
||
} else {
|
||
// 处理时间格式,确保有效
|
||
if (timeStr && timeStr.includes('-')) {
|
||
const timeParts = timeStr.split('-').map(t => t ? t.trim() : '');
|
||
if (timeParts[0]) startTime = timeParts[0];
|
||
if (timeParts[1]) endTime = timeParts[1];
|
||
} else if (timeStr) {
|
||
// 如果没有'-',假设是开始时间
|
||
startTime = timeStr.trim();
|
||
// 自动计算结束时间(加1小时)
|
||
const [hour, minute] = startTime.split(':');
|
||
const endHour = parseInt(hour) + 1;
|
||
endTime = `${endHour.toString().padStart(2, '0')}:${minute || '00'}`;
|
||
}
|
||
}
|
||
|
||
// 构建完整的时间戳
|
||
const startDateTime = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')} ${startTime}`;
|
||
const endDateTime = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')} ${endTime}`;
|
||
|
||
// 确定课程类型和颜色
|
||
let type = 'class';
|
||
let color = '#3b82f6'; // 默认蓝色
|
||
|
||
if (course["公开课"]) {
|
||
type = 'public-course';
|
||
color = '#f59e0b'; // 橙色
|
||
} else if (course["1V1 规划阶段"]) {
|
||
type = 'one-on-one';
|
||
color = '#ec4899'; // 粉色
|
||
} else if (course["模拟面试实战练习阶段"]) {
|
||
type = 'interview';
|
||
color = '#3b82f6'; // 蓝色
|
||
} else if (course["复合技能阶段"]) {
|
||
type = 'compound-skill';
|
||
color = '#667eea'; // 紫色
|
||
} else if (course["垂直方向阶段(方向二:商业活动策划)"]) {
|
||
type = 'vertical-skill';
|
||
color = '#22c55e'; // 绿色
|
||
}
|
||
|
||
// 确定课程状态
|
||
let status = 'upcoming';
|
||
const now = new Date();
|
||
if (courseDate < now) {
|
||
status = 'completed';
|
||
} else if (courseDate.toDateString() === now.toDateString()) {
|
||
status = 'ongoing';
|
||
}
|
||
|
||
return {
|
||
id: index + 1,
|
||
title: courseName,
|
||
fullTitle: courseName,
|
||
teacher: course["❌导师姓名查询"] || "待定",
|
||
unit: course["❌查询单元名称"] || "",
|
||
startTime: startDateTime,
|
||
endTime: endDateTime,
|
||
type: type,
|
||
color: color,
|
||
textColor: '#1d2129',
|
||
description: `${courseName} - ${course["❌导师姓名查询"] || "待定"}老师`,
|
||
status: course["❌课程状态"] || status,
|
||
weekday: course["星期"],
|
||
location: course["上课地点"] || "线上",
|
||
originalDate: course["日期"]
|
||
};
|
||
});
|
||
};
|
||
|
||
// 转换营销课程数据为日历事件格式
|
||
const transformMarketingCourses = (marketingCourses) => {
|
||
return marketingCourses.map(course => {
|
||
if (!course["营销课"] || course["营销课"] === "") return null;
|
||
|
||
// 转换日期格式 2024/7/15 -> 2024-07-15
|
||
const dateParts = course["日期"].split('/');
|
||
const formattedDate = `${dateParts[0]}-${dateParts[1].padStart(2, '0')}-${dateParts[2].padStart(2, '0')}`;
|
||
|
||
return {
|
||
id: `marketing-${course["日期"]}`,
|
||
title: course["营销课"],
|
||
startTime: `${formattedDate} ${course["上课时间"].split('~')[0]}`,
|
||
endTime: `${formattedDate} ${course["上课时间"].split('~')[1]}`,
|
||
type: 'marketing-course',
|
||
teacher: '孙应战', // 营销课的默认讲师
|
||
status: course["课程状态"] || "已完成",
|
||
location: course["上课地点"] || "线上"
|
||
};
|
||
}).filter(event => event !== null);
|
||
};
|
||
|
||
// 转换AI课程数据为日历事件格式
|
||
const transformAICourses = (aiData) => {
|
||
return aiData
|
||
.filter(course => course["AI课阶段"] && course["日期"])
|
||
.map((course, index) => {
|
||
// 解析日期
|
||
const dateStr = course["日期"];
|
||
const [year, month, day] = dateStr.split('/').map(Number);
|
||
const courseDate = new Date(year, month - 1, day);
|
||
|
||
// 获取课程名称
|
||
const courseName = course["AI课阶段"];
|
||
|
||
// 解析上课时间
|
||
const timeStr = course["上课时间"] || "20:00~21:00";
|
||
let startTime = "20:00";
|
||
let endTime = "21:00";
|
||
|
||
if (timeStr && timeStr.includes('~')) {
|
||
const [start, end] = timeStr.split('~');
|
||
startTime = start.trim();
|
||
endTime = end.trim();
|
||
}
|
||
|
||
// 构建完整的时间戳
|
||
const startDateTime = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')} ${startTime}`;
|
||
const endDateTime = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')} ${endTime}`;
|
||
|
||
return {
|
||
id: `ai-event-${index + 1}`,
|
||
title: courseName,
|
||
startTime: startDateTime,
|
||
endTime: endDateTime,
|
||
date: courseDate,
|
||
type: 'ai-course',
|
||
color: '#10b981', // 绿色,代表AI课程
|
||
teacher: '李奇', // AI课程的默认讲师
|
||
location: course["上课地点"] || "线上",
|
||
status: course["课程状态"] || "",
|
||
unit: "终生学习系统课"
|
||
};
|
||
});
|
||
};
|
||
|
||
// 生成课程直播列表:从日历课程数据生成单元和课程结构
|
||
const generateCourseLiveListFromCalendar = (calendarEvents) => {
|
||
let globalCourseCounter = 0; // 全局课程计数器
|
||
// 定义复合能力课的课程名称列表(完整版,包含所有72门课程)
|
||
const 复合能力课名称 = [
|
||
// 岗位体系认知
|
||
"教育体系认知", "现代文旅类企业的管理体系", "专科生的职业规划",
|
||
// 产业认知课
|
||
"文旅产业认知课", "行业详解:旅游行业", "行业详解:酒店与民宿行业",
|
||
"行业详解:活动与会展行业", "行业详解:文化服务行业",
|
||
// 旅游产业全景与文旅基础知识
|
||
"现代文旅产业生态图谱", "文旅政策法规与风险管理", "旅游产品与旅游资源",
|
||
"游客行为心理学基础", "可持续旅游发展",
|
||
// 文旅服务:形象、沟通与体验的融合艺术
|
||
"文旅场景职业形象IP塑造", "情境化服务体验设计", "政务商务接待专项礼仪",
|
||
"文旅服务中的非语言表达", "服务沟通技巧与表达训练", "多元文化下的服务表达差异",
|
||
// 文旅与供应链基础
|
||
"供应链管理的内容", "文旅资源调度", "文旅产品全生命周期管理",
|
||
"文旅商品供应链", "住宿业资源协同", "小型文旅项目的供应链角色模拟",
|
||
"文旅项目供应链特征", "文旅供应链中的B2B与B2C模式",
|
||
// 商业设计基础
|
||
"现代设计行业的发展现状", "设计基础", "字体设计与中文字体情绪表达",
|
||
"商业平面色彩搭配", "平面设计构图", "图像编辑工具:Photoshop",
|
||
"矢量与标志设计:Illustrator", "快速设计工具使用:Canva",
|
||
"移动端视觉原型设计:Figma", "视频剪辑入门:剪映",
|
||
// AIGC人工智能生成内容
|
||
"AIGC发展简史与基本逻辑", "AIGC的基本概念与各领域的应用",
|
||
"AIGC语言模型:chatgpt的灵活应用", "AIGC绘画模型:midjourney应用",
|
||
"AIGC图像生成模型:Stable Diffusion的应用操作",
|
||
"AIGC图像生成模型:Stable Diffusion Al摄影和平面设计",
|
||
"AIGC视频应用:音视频生成与AI自动剪辑", "AI词曲创作:suno",
|
||
"AIGC生成内容的版权问题与合规使用",
|
||
// 全栈新媒体运营赋能文旅营销
|
||
"新媒体应用传播学", "新媒体故事结构入门", "新媒体产品策划",
|
||
"平台账号经营与内容赛道", "各平台变现方式与具体方法",
|
||
"内容运营:短视频制作内容对标", "内容运营:短视频的制作工具",
|
||
"直播运营:直播间的搭建", "私域运营:私域流量池的运营",
|
||
"品牌运营:当地文化IP数字化传播", "品牌运营:跨界营销创新",
|
||
// 活动策划基础
|
||
"活动类型与功能认知", "受众定位与主题创意方法",
|
||
"活动宣传渠道与推广方式", "活动文案写作与表达技巧",
|
||
"活动流程设计与时间节点把控", "活动场地选择与布置基础",
|
||
"活动预算与资源统筹", "活动复盘报告撰写与数据分析方法",
|
||
"应急预案与活动风险管理",
|
||
// 智慧文旅应用
|
||
"智慧文旅概论", "OTA平台运营", "票务分销平台",
|
||
"景区智能导览系统", "智能导览设备运用",
|
||
"智慧酒店/智慧景区体验场景模拟",
|
||
// 单元小结(多个单元都有)
|
||
"单元小结"
|
||
];
|
||
|
||
// 转换为Set以提高查找效率
|
||
const 复合能力课Set = new Set(复合能力课名称);
|
||
|
||
// 按单元名称分组,只包含复合能力课
|
||
const unitMap = {};
|
||
|
||
calendarEvents.forEach(event => {
|
||
// 只处理复合能力课(标题在复合能力课列表中,或type包含skill/class)
|
||
const isSkillCourse = ['compound-skill', 'vertical-skill', 'class'].includes(event.type);
|
||
if ((isSkillCourse || event.type === 'course') && event.title && 复合能力课Set.has(event.title)) {
|
||
const unitName = event.unit || "未分类课程";
|
||
|
||
if (!unitMap[unitName]) {
|
||
unitMap[unitName] = {
|
||
unitId: `unit-${Object.keys(unitMap).length + 1}`,
|
||
unitName: unitName,
|
||
courses: []
|
||
};
|
||
}
|
||
|
||
const courseDate = new Date(event.startTime.split(' ')[0]);
|
||
const now = new Date();
|
||
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
||
const courseDay = new Date(courseDate.getFullYear(), courseDate.getMonth(), courseDate.getDate());
|
||
|
||
unitMap[unitName].courses.push({
|
||
courseId: `c${++globalCourseCounter}`,
|
||
courseName: event.title,
|
||
teacherName: event.teacher,
|
||
date: event.startTime.split(' ')[0],
|
||
time: event.startTime.split(' ')[1] + ' - ' + event.endTime.split(' ')[1],
|
||
completed: courseDay < today,
|
||
current: courseDay.getTime() === today.getTime(),
|
||
upcoming: courseDay > today,
|
||
status: event.status,
|
||
location: event.location || "线上"
|
||
});
|
||
}
|
||
});
|
||
|
||
// 转换为数组并排序
|
||
return Object.values(unitMap).sort((a, b) => {
|
||
// 按第一个课程的日期排序
|
||
const dateA = a.courses[0]?.date || '9999-12-31';
|
||
const dateB = b.courses[0]?.date || '9999-12-31';
|
||
return dateA.localeCompare(dateB);
|
||
});
|
||
};;;
|
||
|
||
// 生成公共课程列表:从日历事件中提取公共课程
|
||
const generatePublicCourseLiveList = (calendarEvents) => {
|
||
// 定义公共课单元
|
||
const publicUnits = {
|
||
"终生学习系统课": {
|
||
unitId: "public-ai-learning",
|
||
unitName: "终生学习系统课",
|
||
courses: []
|
||
},
|
||
"营销能力课": {
|
||
unitId: "public-marketing",
|
||
unitName: "营销能力课",
|
||
courses: []
|
||
},
|
||
"企业高管公开课": {
|
||
unitId: "public-executive",
|
||
unitName: "企业高管公开课",
|
||
courses: []
|
||
}
|
||
};
|
||
|
||
// 导师头像映射
|
||
const teacherAvatars = {
|
||
"孙应战": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJCc6qecx.jpg",
|
||
"李毅峰": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVPz0WRmxCK.jpeg",
|
||
"周伏波": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7Gi9YxSN.jpeg",
|
||
"范雪娇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7JsHHDNZ.jpeg",
|
||
"李奇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg"
|
||
};
|
||
|
||
// 遍历日历事件,找出公开课和AI课程
|
||
calendarEvents.forEach(event => {
|
||
// 处理type为'public-course'的课程或AI课程
|
||
if ((event.type === 'public-course' || event.type === 'ai-course' || event.type === 'marketing-course') && event.title) {
|
||
const courseDate = new Date(event.startTime.split(' ')[0]);
|
||
const now = new Date();
|
||
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
||
const courseDay = new Date(courseDate.getFullYear(), courseDate.getMonth(), courseDate.getDate());
|
||
|
||
const courseData = {
|
||
courseId: `public-${publicUnits["终生学习系统课"].courses.length + publicUnits["营销能力课"].courses.length + publicUnits["企业高管公开课"].courses.length + 1}`,
|
||
courseName: event.title,
|
||
teacherName: event.teacher,
|
||
teacherAvatar: teacherAvatars[event.teacher] || "",
|
||
date: event.startTime.split(' ')[0],
|
||
time: event.startTime.split(' ')[1] + ' - ' + event.endTime.split(' ')[1],
|
||
completed: courseDay < today,
|
||
current: courseDay.getTime() === today.getTime(),
|
||
upcoming: courseDay > today,
|
||
status: event.status,
|
||
location: "线上",
|
||
duration: "60分钟",
|
||
participants: 150
|
||
};
|
||
|
||
// 根据课程类型和讲师分类
|
||
if (event.type === 'ai-course') {
|
||
publicUnits["终生学习系统课"].courses.push(courseData);
|
||
} else if (event.type === 'marketing-course' || event.teacher === "孙应战") {
|
||
publicUnits["营销能力课"].courses.push(courseData);
|
||
} else {
|
||
publicUnits["企业高管公开课"].courses.push(courseData);
|
||
}
|
||
}
|
||
});
|
||
|
||
// 转换为数组格式并过滤空单元,按顺序返回:终生学习系统课、企业高管公开课、营销能力课
|
||
const result = [];
|
||
if (publicUnits["终生学习系统课"].courses.length > 0) {
|
||
result.push(publicUnits["终生学习系统课"]);
|
||
}
|
||
if (publicUnits["企业高管公开课"].courses.length > 0) {
|
||
result.push(publicUnits["企业高管公开课"]);
|
||
}
|
||
if (publicUnits["营销能力课"].courses.length > 0) {
|
||
result.push(publicUnits["营销能力课"]);
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// 生成垂直能力课列表:从日历事件中提取垂直能力课程
|
||
const generateVerticalCourseLiveList = (calendarEvents, unitPosters = {}) => {
|
||
let globalCourseCounter = 0; // 全局课程计数器
|
||
// 定义垂直能力课单元名称映射
|
||
const unitNameMap = {
|
||
"职业规划课": "职业规划课",
|
||
"商业活动策略设计与创意策划": "商业活动策略设计与创意策划",
|
||
"商业活动全程策划执行与运营优化": "商业活动全程策划执行与运营优化",
|
||
"商业空间与文创产品设计": "商业空间与文创产品设计",
|
||
"短视频与自媒体运营": "短视频与自媒体运营",
|
||
"漫展与二次元活动策划与执行": "漫展与二次元活动策划与执行",
|
||
"户外音乐节主题策划与流程统筹": "户外音乐节主题策划与流程统筹",
|
||
"城市 IP 赛事活动整合与策划": "城市 IP 赛事活动整合与策划",
|
||
"消费电子展品牌策划与执行": "消费电子展品牌策划与执行",
|
||
"品牌招商展全案策划与招商运营": "品牌招商展全案策划与招商运营",
|
||
"商业街区打卡空间视觉呈现": "商业街区打卡空间视觉呈现",
|
||
"文旅衍生文创产品设计": "文旅衍生文创产品设计"
|
||
};
|
||
|
||
// 按单元名称分组
|
||
const unitMap = {};
|
||
|
||
calendarEvents.forEach(event => {
|
||
// 处理垂直能力课(type为'vertical-skill')
|
||
if (event.type === 'vertical-skill' && event.title) {
|
||
const unitName = event.unit || "未分类课程";
|
||
|
||
if (!unitMap[unitName]) {
|
||
unitMap[unitName] = {
|
||
unitId: `vertical-unit-${Object.keys(unitMap).length + 1}`,
|
||
unitName: unitNameMap[unitName] || unitName,
|
||
unitPoster: unitPosters[unitName] || "", // 添加单元海报
|
||
courses: []
|
||
};
|
||
}
|
||
|
||
const courseDate = new Date(event.startTime.split(' ')[0]);
|
||
const now = new Date();
|
||
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
||
const courseDay = new Date(courseDate.getFullYear(), courseDate.getMonth(), courseDate.getDate());
|
||
|
||
// 创建课程对象
|
||
const courseObj = {
|
||
courseId: `v${++globalCourseCounter}`,
|
||
courseName: event.title,
|
||
teacherName: event.teacher,
|
||
date: event.startTime.split(' ')[0],
|
||
time: event.startTime.split(' ')[1] + ' - ' + event.endTime.split(' ')[1],
|
||
completed: courseDay < today,
|
||
current: courseDay.getTime() === today.getTime(),
|
||
upcoming: courseDay > today,
|
||
status: event.status,
|
||
location: event.location || "线上"
|
||
};
|
||
|
||
// 为"展会主题与品牌定位"课程添加试看标签和链接
|
||
if (event.title === "展会主题与品牌定位" && unitName === "消费电子展品牌策划与执行") {
|
||
courseObj.canPreview = true;
|
||
courseObj.previewUrl = "https://du9uay.github.io/zhanhui/";
|
||
}
|
||
|
||
unitMap[unitName].courses.push(courseObj);
|
||
}
|
||
});
|
||
|
||
// 转换为数组并排序
|
||
return Object.values(unitMap).sort((a, b) => {
|
||
// 按第一个课程的日期排序
|
||
const dateA = a.courses[0]?.date || '9999-12-31';
|
||
const dateB = b.courses[0]?.date || '9999-12-31';
|
||
return dateA.localeCompare(dateB);
|
||
});
|
||
};
|
||
|
||
// 更新导师课程信息:根据日历事件更新导师的课程列表
|
||
const updateTeacherCourses = (teacherData, calendarEvents) => {
|
||
// 深拷贝教师数据
|
||
const updatedTeachers = JSON.parse(JSON.stringify(teacherData));
|
||
|
||
// 清空所有导师的课程列表
|
||
Object.keys(updatedTeachers).forEach(key => {
|
||
updatedTeachers[key].courses = [];
|
||
});
|
||
|
||
// 根据日历事件更新每个导师的课程
|
||
calendarEvents.forEach(event => {
|
||
const teacherName = event.teacher;
|
||
if (teacherName && updatedTeachers[teacherName]) {
|
||
updatedTeachers[teacherName].courses.push({
|
||
courseName: event.title,
|
||
unit: event.unit,
|
||
date: event.startTime.split(' ')[0],
|
||
time: event.startTime.split(' ')[1] + ' - ' + event.endTime.split(' ')[1],
|
||
status: event.status,
|
||
location: event.location || "线上"
|
||
});
|
||
}
|
||
});
|
||
|
||
return updatedTeachers;
|
||
};
|
||
|
||
// 生成任务列表:从日历事件生成任务
|
||
const generateTasksFromCalendarEvents = (calendarEvents) => {
|
||
return calendarEvents.map((event, index) => ({
|
||
id: index + 1,
|
||
title: `完成${event.title}课程学习`,
|
||
courseName: event.title,
|
||
date: event.startTime.split(' ')[0],
|
||
deadline: event.endTime,
|
||
priority: event.type === 'interview' ? 'high' : event.type === 'planning' ? 'medium' : 'low',
|
||
status: event.status === 'completed' ? 'COMPLETED' : event.status === 'ongoing' ? 'IN_PROGRESS' : 'TODO',
|
||
teacher: event.teacher,
|
||
unit: event.unit,
|
||
type: 'course'
|
||
}));
|
||
};
|
||
|
||
// 模拟数据
|
||
// 合并普通课程和AI课程(需要在mockData之前定义,避免引用错误)
|
||
const allCalendarEvents = [
|
||
...transformCalendarCourses(calendarCoursesData),
|
||
...transformAICourses(aiCoursesData),
|
||
...transformMarketingCourses(marketingCoursesData)
|
||
];
|
||
|
||
export const mockData = {
|
||
// 用户信息
|
||
user: {
|
||
name: "万圆",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
role: "学生",
|
||
studentId: "2426030612",
|
||
},
|
||
|
||
// 系统消息通知数据 - 简化版本
|
||
notifications: {
|
||
unreadCount: 1,
|
||
messages: [
|
||
{
|
||
id: 1,
|
||
type: "course",
|
||
title: "欢迎使用教务系统",
|
||
content:
|
||
"欢迎来到多多畅职教务原型系统!这是一个功能完整的教务管理系统演示版本。",
|
||
time: "2024-01-15 14:30",
|
||
isRead: false,
|
||
priority: "medium",
|
||
},
|
||
{
|
||
id: 2,
|
||
type: "announcement",
|
||
title: "系统功能说明",
|
||
content: "您可以在左侧导航栏中体验各个功能模块,所有数据均为演示数据。",
|
||
time: "2024-01-14 10:15",
|
||
isRead: true,
|
||
priority: "low",
|
||
},
|
||
],
|
||
},
|
||
|
||
// 单元海报数据
|
||
unitPosters: {
|
||
"岗位体系认知": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJkjjd.png",
|
||
"产业认知课": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJakCU.png",
|
||
"旅游产业全景与文旅基础知识": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJsPKb.png",
|
||
"文旅服务:形象、沟通与体验的融合艺术": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJ4LRL.png",
|
||
"文旅与供应链基础": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJOl8F.png",
|
||
"商业设计基础": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJx0iL.png",
|
||
"AIGC人工智能生成内容": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJyThB.png",
|
||
" 全栈新媒体运营赋能文旅营销": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJpmik.png",
|
||
"活动策划基础": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJMV4g.png",
|
||
"智慧文旅应用": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJWckP.png",
|
||
// 垂直能力课单元海报
|
||
"职业规划课": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJm4HJ.png",
|
||
"商业活动策略设计与创意策划": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJRS3b.png",
|
||
"商业活动全程策划执行与运营优化": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJnGUK.png",
|
||
"商业空间与文创产品设计": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJp9xP.png",
|
||
"短视频与自媒体运营": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJr7sV.png",
|
||
"漫展与二次元活动策划与执行": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJy73s.png",
|
||
"户外音乐节主题策划与流程统筹": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJA8Az.png",
|
||
"城市 IP 赛事活动整合与策划": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJzIDN.png",
|
||
"消费电子展品牌策划与执行": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJ99vz.png",
|
||
"品牌招商展全案策划与招商运营": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJeHTm.png",
|
||
"商业街区打卡空间视觉呈现": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJYZlr.png",
|
||
"文旅衍生文创产品设计": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_course_cover/compression/recuSHuSaJsA0q.png"
|
||
},
|
||
|
||
// 导师信息数据
|
||
teacherData: updateTeacherCourses({
|
||
"刘杰": {
|
||
name: "刘杰",
|
||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||
specialties: ["民宿产业化专家","一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||
type: "复合课导师",
|
||
verticalDirection: "项目经营管理",
|
||
courses: []
|
||
},
|
||
"郭建辉": {
|
||
name: "郭建辉",
|
||
introduction: "拥有18年文化旅游规划与产业运营经验,专注景区产品创新设计、文旅人才培养体系构建及城市文化更新模式研究,主导多项省部级文旅项目及行业标准实践落地。山行文旅研究院创始人兼院长,全面负责文旅规划研发、运营标准制定与全国学术交流,同时兼任中国文化旅游协会文创专委会副主任委员、华东师范大学旅游与会展专业硕士生导师。",
|
||
specialties: ["经验传授权威", "实用可落地", "表达沟通提升", "跨界经验丰富"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBMNLZL5.png",
|
||
type: "复合课导师",
|
||
verticalDirection: "商业活动策划",
|
||
courses: []
|
||
},
|
||
"赵志强": {
|
||
name: "赵志强",
|
||
introduction: "深耕乡村旅游与民宿产业12年,从一线管家服务到国家级标准制定,全程参与中国民宿职业化与产业化进程。曾作为首席讲师为苏浙沪皖四地文旅部门提供'乡村振兴十大模式'培训,设计桑蚕文化园、谢家路村等沉浸式研学路线,促成区域人才协作机制,获江苏省人社厅列为省级高级研修示范项目。曾担任标准起草专家组核心成员,牵头《德清县地方民宿管理办法》试点,联合政府申报'民宿管理师'新职业,制定长三角区域民宿评级体系,推动了紫蓬山民宿学校(安徽)、吴江农文旅融合示范区落地,形成可复制的'民宿+'乡村振兴模式。",
|
||
specialties: ["乡村振兴实践者", "政企协作桥梁","讲解有节奏", "讲解通俗", "幽默又有料", "善于启发"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJC2oLPpC.png",
|
||
type: "复合课导师",
|
||
verticalDirection: "文化服务",
|
||
courses: []
|
||
},
|
||
"孙应战": {
|
||
name: "孙应战",
|
||
introduction: "拥有18年制造业与产品营销经验,曾在上市公司与世界500强外企任职,参与大众MEB平台、奥迪EA888发动机及新能源汽车项目开发。作为德企内训讲师、国际演讲学会资深会员和中国心理卫生协会会员,善于将实践经验转化为通俗讲解,课堂氛围轻松易懂。",
|
||
specialties: ["世界500强外企背景","学习零压力", "实用可落地", "善于启发"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJCc6qecx.jpg",
|
||
type: "公共课导师",
|
||
courses: []
|
||
},
|
||
"李毅峰": {
|
||
name: "李毅峰",
|
||
introduction: "拥有超过二十年的柔性电子产业从业经验,长期专注于柔性印制电路板(FPC)的材料研发、精密设计、自动化制造与产业化应用,具备从技术开发到市场交付的全流程掌控能力。职业生涯中先后主导完成数十项高密度FPC研发项目,涵盖5G通信终端、可穿戴设备、汽车电子、医疗影像、工业控制等多个应用场景。曾带领团队突破多层柔性板对位精度控制与微线宽蚀刻技术瓶颈,使线路最小宽距精度控制在±20μm以内,成功实现系列产品向超薄、超柔、高可靠性方向升级,批量供应多家国际知名电子企业。",
|
||
specialties: ["善于启发", "易懂好理解", "讲解有节奏", "超有耐心"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVPz0WRmxCK.jpeg",
|
||
type: "公共课导师",
|
||
courses: []
|
||
},
|
||
"周伏波": {
|
||
name: "周伏波",
|
||
introduction: "具备二十年以上光电子技术领域深耕经验,长期致力于光电子芯片材料、光通信器件、半导体照明、激光器件及光电显示技术的研发与产业化工作,是推动中国光电子产业链升级的重要技术推动者与行业实践者。其主导完成的多项核心材料与芯片工艺突破,成功应用于光模块、光引擎、LED器件、激光显示模组等多个高精度、高性能领域,累计获得授权专利60余项,多项技术成果实现量产落地。",
|
||
specialties: ["光电显示技术探索者", "60+专利技术成果持有者", "国家级重大专项牵头人", "一听就懂", "思路很清晰", "讲解易懂"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7Gi9YxSN.jpeg",
|
||
type: "公共课导师",
|
||
courses: []
|
||
},
|
||
"范雪娇": {
|
||
name: "范雪娇",
|
||
introduction: "拥有十八年的工业自动化与机电设备行业从业经验,长期专注于自动化装备研发、配件系统优化、机电一体化集成与工程项目落地,具备从核心部件开发到整线系统集成的全链条实践能力。职业生涯中,累计参与和主导项目超过百项,涵盖非标自动化装置、精密机电配件、控制系统架构设计与生产线智能改造等多个方向,广泛服务于汽车制造、3C电子、包装、医疗设备、家电装配等高标准行业。",
|
||
specialties: ["工业自动化资深专家", "自动化装备研发实践者", "智能装备融合发展典型代表","讲解有节奏", "学习零压力", "善于总结", "超会举例"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7JsHHDNZ.jpeg",
|
||
type: "公共课导师",
|
||
courses: []
|
||
},
|
||
"李奇": {
|
||
name: "李奇",
|
||
introduction: "毕业于南洋理工学院,拥有硕士学位,具备扎实的人工智能理论基础与产业实践经验。近年来,专注于大模型工程化与AI应用课程体系建设,主持完成《AIGC实战:从模型调用到产品落地》《AI在视觉设计与内容生成中的应用》等多个应用型教学项目。曾主导开发'AI技能地图导航系统',实现课程内容与岗位技能的精准对齐,在2024年全国高校AI课程创新大赛中荣获一等奖。擅长将复杂的算法模型转化为通俗易懂的教学内容,致力于打造'人人可用AI'的实训课程体系,是众多高校与职业培训机构特聘的AI技术与课程体系顾问。",
|
||
specialties: ["人工智能技术顾问", "大模型工程化研究者", "AI应用课程体系建设者", "教学内容转化能力强", "技巧随手教", "幽默又有料", "讲解有节奏"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg",
|
||
type: "AI课导师",
|
||
courses: []
|
||
},
|
||
"魏立慧": {
|
||
name: "魏立慧",
|
||
introduction: "企业资深一线HR主讲,专注于为求职者提供一对一的个性化指导。通过真实招聘视角,深入剖析个人优势与短板、传授面试技巧、规划职业定位与发展路径,帮助学生快速提升求职竞争力。求职策略以实用落地为核心,注重互动交流与角色定位,让学员在轻松氛围中获得直击痛点的求职策略。",
|
||
specialties: ["点评直击要害", "擅长挖掘优势", "职业规划达人", "深谙用人逻辑", "一线HR资深讲师"],
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png",
|
||
type: "企业资深HR",
|
||
courses: []
|
||
}
|
||
}, allCalendarEvents),
|
||
|
||
// 个人档案详细信息
|
||
profile: {
|
||
name: "万圆",
|
||
gender: "女",
|
||
studentId: "2426030612",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
school: "苏州信息职业技术学院",
|
||
major: "数字媒体艺术设计",
|
||
courses: ["复合能力培养", "文旅方向", "展会策划", "数字创意设计"],
|
||
className: "文旅",
|
||
studyPhase: "复合能力培养",
|
||
badges: {
|
||
credits: 99,
|
||
classRank: 1,
|
||
mbti: "ENFJ",
|
||
},
|
||
// MBTI测评报告详细数据
|
||
mbtiReport: {
|
||
type: "ENFJ",
|
||
title: "主人公 (Protagonist)",
|
||
description:
|
||
"充满魅力和鼓舞力的领袖,总能设法帮助他人。你天生善于理解他人,能够轻易感知他人的情绪和需求。",
|
||
characteristics: [
|
||
"天生的领导者,充满感染力",
|
||
"极富同理心和洞察力",
|
||
"善于激励和鼓舞他人",
|
||
"具有强烈的责任感",
|
||
"重视团队合作与和谐",
|
||
"追求个人成长和自我实现",
|
||
],
|
||
strengths: [
|
||
"卓越的人际交往能力",
|
||
"强大的组织和协调能力",
|
||
"善于发现他人潜力",
|
||
"具有感染力的热情",
|
||
"可靠值得信赖",
|
||
"富有创造性的问题解决能力",
|
||
],
|
||
recommendations: [
|
||
"充分发挥在团队中的领导和协调能力",
|
||
"学会适度关注自己的需求和感受",
|
||
"培养独立思考和决策能力",
|
||
"避免过度承担他人的情绪负担",
|
||
"保持工作与生活的平衡",
|
||
"在艺术设计中融入人文关怀理念",
|
||
],
|
||
careerSuggestions: [
|
||
"文旅项目策划经理",
|
||
"展会设计总监",
|
||
"品牌创意总监",
|
||
"用户体验设计师",
|
||
"文化产业运营经理",
|
||
"数字媒体艺术指导",
|
||
"社区运营经理",
|
||
"公关活动策划师",
|
||
],
|
||
},
|
||
},
|
||
|
||
// 学习统计数据
|
||
studyStats: {
|
||
myHours: 168,
|
||
classAverage: 107,
|
||
completionRate: 95,
|
||
chartData: [
|
||
{ label: "我的学习时长", value: 168, color: "#10b981" },
|
||
{ label: "班级平均学习时长", value: 107, color: "#3b82f6" },
|
||
],
|
||
// 新增完成率统计数据
|
||
attendanceStats: {
|
||
myAttendance: 98.5,
|
||
classAverageAttendance: 65,
|
||
},
|
||
courseCompletionStats: {
|
||
myCourseCompletion: 96.8,
|
||
classAverageCourseCompletion: 63,
|
||
},
|
||
homeworkCompletionStats: {
|
||
myHomeworkCompletion: 95,
|
||
classAverageHomeworkCompletion: 56,
|
||
},
|
||
},
|
||
|
||
// 日历事件数据 - 使用当前月份的日期进行演示
|
||
calendarEvents: allCalendarEvents,
|
||
|
||
// 日历配置
|
||
calendarConfig: {
|
||
weekDays: ["日", "一", "二", "三", "四", "五", "六"],
|
||
weekDaysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
|
||
timeSlots: Array.from(
|
||
{ length: 24 },
|
||
(_, i) => `${i.toString().padStart(2, "0")}:00`
|
||
),
|
||
defaultView: "month",
|
||
firstDayOfWeek: 0,
|
||
eventTypes: {
|
||
class: { name: "课程", color: "#10b981" }, // 绿色
|
||
meeting: { name: "会议", color: "#3b82f6" },
|
||
lab: { name: "实验", color: "#3b82f6" },
|
||
exam: { name: "考试", color: "#ef4444" },
|
||
strategy: { name: "1v1求职策略定制", color: "#f59e0b" }, // 橙色
|
||
interview: { name: "线下面试模拟", color: "#ef4444" }, // 红色
|
||
other: { name: "其他", color: "#8b5cf6" },
|
||
},
|
||
},
|
||
|
||
// 课程数据
|
||
courses: [
|
||
{
|
||
id: 1,
|
||
courseId: 101,
|
||
name: "展会策划教学",
|
||
teacher: "李老师",
|
||
time: "09:00-10:30",
|
||
status: "进行中",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 2,
|
||
courseId: 102,
|
||
name: "品牌视觉设计",
|
||
teacher: "王老师",
|
||
time: "昨天 14:00-15:30",
|
||
status: "已结束",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 3,
|
||
courseId: 201,
|
||
name: "文旅产业分析",
|
||
teacher: "张教授",
|
||
time: "前天 16:00-17:30",
|
||
status: "已结束",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 4,
|
||
courseId: 202,
|
||
name: "数字媒体设计",
|
||
teacher: "陈教授",
|
||
time: "明天 10:00-11:30",
|
||
status: "即将开始",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 5,
|
||
courseId: 301,
|
||
name: "创意策划实务",
|
||
teacher: "赵教授",
|
||
time: "后天 14:00-15:30",
|
||
status: "待开始",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 6,
|
||
courseId: 401,
|
||
name: "文化创意产业",
|
||
teacher: "张教授",
|
||
time: "上周三 09:00-10:30",
|
||
status: "已结束",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
],
|
||
|
||
// 待办事项
|
||
todos: [
|
||
{ id: 1, task: "完成数学作业", deadline: "今天 18:00" },
|
||
{ id: 2, task: "准备计算机网络实验", deadline: "明天 10:00" },
|
||
{ id: 3, task: "复习数据结构", deadline: "后天 14:00" },
|
||
],
|
||
// 学习进度
|
||
studyProgress: {
|
||
completed: 100,
|
||
total: 100,
|
||
percentage: 100,
|
||
},
|
||
|
||
// 班级排名
|
||
classRanking: [
|
||
{ id: 1, name: "小明", score: 95, rank: 1 },
|
||
{ id: 2, name: "小华", score: 92, rank: 2 },
|
||
{ id: 3, name: "小李", score: 89, rank: 3 },
|
||
{ id: 4, name: "小王", score: 86, rank: 4 },
|
||
{ id: 5, name: "小张", score: 83, rank: 5 },
|
||
],
|
||
|
||
// 事项列表
|
||
tasks: [
|
||
{
|
||
id: 1,
|
||
teacher: "李教授",
|
||
time: "下午16:40",
|
||
course: "高等数学课程作业",
|
||
type: "作业提交",
|
||
duration: "1小时",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 2,
|
||
teacher: "王老师",
|
||
time: "下午18:20",
|
||
course: "计算机网络实验报告",
|
||
type: "实验报告",
|
||
duration: "1小时",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 3,
|
||
teacher: "陈教授",
|
||
time: "明天09:00",
|
||
course: "数据结构课程设计",
|
||
type: "课程设计",
|
||
duration: "1小时",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 4,
|
||
teacher: "陈教授",
|
||
time: "明天09:00",
|
||
course: "数据结构课程设计",
|
||
type: "课程设计",
|
||
duration: "1小时",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
{
|
||
id: 5,
|
||
teacher: "陈教授",
|
||
time: "明天09:00",
|
||
course: "数据结构课程设计",
|
||
type: "课程设计",
|
||
duration: "1小时",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
},
|
||
],
|
||
|
||
// 增强的任务数据 - 支持日期关联和状态管理
|
||
enhancedTasks: (() => {
|
||
const today = new Date();
|
||
const year = today.getFullYear();
|
||
const month = (today.getMonth() + 1).toString().padStart(2, "0");
|
||
|
||
return [
|
||
{
|
||
id: 1,
|
||
title: "高等数学课程作业",
|
||
teacher: "李教授",
|
||
time: "16:40",
|
||
date: `${year}-${month}-05`,
|
||
type: "作业提交",
|
||
status: "PENDING",
|
||
description: "完成第三章习题1-15题",
|
||
priority: "high",
|
||
},
|
||
{
|
||
id: 2,
|
||
title: "计算机网络实验报告",
|
||
teacher: "王老师",
|
||
time: "18:20",
|
||
date: `${year}-${month}-05`,
|
||
type: "实验报告",
|
||
status: "in-progress",
|
||
description: "网络协议分析实验报告",
|
||
priority: "medium",
|
||
},
|
||
{
|
||
id: 3,
|
||
title: "数据结构课程设计",
|
||
teacher: "陈教授",
|
||
time: "09:00",
|
||
date: `${year}-${month}-12`,
|
||
type: "课程设计",
|
||
status: "PENDING",
|
||
description: "设计并实现二叉搜索树",
|
||
priority: "high",
|
||
},
|
||
{
|
||
id: 4,
|
||
title: "1v1求职策略定制",
|
||
teacher: "职业导师",
|
||
time: "14:00",
|
||
date: `${year}-${month}-18`,
|
||
type: "strategy",
|
||
status: "PENDING",
|
||
description: "个人求职策略制定与简历优化",
|
||
priority: "high",
|
||
},
|
||
{
|
||
id: 5,
|
||
title: "线下面试模拟",
|
||
teacher: "面试官",
|
||
time: "15:30",
|
||
date: `${year}-${month}-25`,
|
||
type: "interview",
|
||
status: "PENDING",
|
||
description: "模拟技术面试环节",
|
||
priority: "high",
|
||
},
|
||
{
|
||
id: 6,
|
||
title: "英语口语练习",
|
||
teacher: "外教老师",
|
||
time: "10:00",
|
||
date: `${year}-${month}-28`,
|
||
type: "作业提交",
|
||
status: "completed",
|
||
description: "日常英语对话练习",
|
||
priority: "low",
|
||
},
|
||
];
|
||
})(),
|
||
|
||
// 日历数据
|
||
calendar: {
|
||
currentMonth: "2024年1月",
|
||
today: 15,
|
||
events: [
|
||
{ date: 10, type: "exam" },
|
||
{ date: 15, type: "today" },
|
||
{ date: 20, type: "assignment" },
|
||
{ date: 25, type: "holiday" },
|
||
],
|
||
},
|
||
|
||
// 学习计划配置
|
||
learningPlan: {
|
||
// 学生学习计划总开始日期(注册/加入计划之日)
|
||
startDate: "2024-01-01", // 示例:2024年1月1日开始
|
||
studentId: "STU001",
|
||
studentName: "张同学",
|
||
},
|
||
|
||
// 学习阶段信息 - 符合需求文档的完整数据结构
|
||
learningStages: [
|
||
{
|
||
id: 1,
|
||
name: "生涯启航阶段",
|
||
duration: 4, // 月数
|
||
description: "基础技能建立期",
|
||
// 时间字段 - 根据学习计划开始日期自动计算
|
||
startDate: "2024-01-01",
|
||
endDate: "2024-05-01",
|
||
// 状态字段
|
||
status: "completed", // completed | in_progress | locked | stalled
|
||
progressPercentage: 100, // 基于时间计算的进度百分比
|
||
},
|
||
{
|
||
id: 2,
|
||
name: "能力跃升阶段",
|
||
duration: 8, // 月数 - 是其他阶段的两倍
|
||
description: "核心能力发展期",
|
||
startDate: "2024-05-01",
|
||
endDate: "2025-01-01",
|
||
status: "completed", // 修正:能力跃升阶段已完成
|
||
progressPercentage: 100, // 修正:100%完成,这样才会触发垂直方向选择任务
|
||
},
|
||
{
|
||
id: 3,
|
||
name: "垂直精进阶段",
|
||
duration: 4, // 月数
|
||
description: "专业深度提升期",
|
||
startDate: "2025-01-01",
|
||
endDate: "2025-05-01",
|
||
status: "locked", // 需要完成"垂直方向选择"里程碑才能解锁
|
||
progressPercentage: 0, // 确保为0,因为尚未解锁
|
||
// 解锁条件
|
||
prerequisiteMilestone: "vertical-direction-selection",
|
||
},
|
||
{
|
||
id: 4,
|
||
name: "决胜求职阶段",
|
||
duration: 4, // 月数
|
||
description: "就业准备冲刺期",
|
||
startDate: "2025-05-01",
|
||
endDate: "2025-09-01",
|
||
status: "locked", // 确保为locked状态
|
||
progressPercentage: 0, // 确保为0,因为尚未解锁
|
||
},
|
||
],
|
||
|
||
// 关键里程碑事件定义
|
||
milestones: [
|
||
{
|
||
id: "vertical-direction-selection",
|
||
name: "垂直方向选择",
|
||
description: "选择专业发展的垂直方向",
|
||
// 位置:能力跃升阶段和垂直精进阶段的交界处
|
||
position: {
|
||
afterStageId: 2, // 能力跃升阶段之后
|
||
beforeStageId: 3, // 垂直精进阶段之前
|
||
},
|
||
// 状态
|
||
status: "PENDING", // pending | completed
|
||
completedDate: null,
|
||
// 交互配置
|
||
interaction: {
|
||
clickable: true,
|
||
targetRoute: "/career-tree", // 点击跳转到就业管家知识树
|
||
targetModule: "就业管家知识树",
|
||
},
|
||
// 视觉配置
|
||
visual: {
|
||
icon: "★", // 星形图标
|
||
pendingStyle: {
|
||
color: "#ef4444", // 红色
|
||
animation: "blink", // 闪烁效果
|
||
fillType: "outline", // 轮廓线
|
||
},
|
||
completedStyle: {
|
||
color: "#fbbf24", // 金色
|
||
fillType: "filled", // 填充
|
||
},
|
||
},
|
||
},
|
||
],
|
||
|
||
// 保留原有阶段信息以兼容其他模块
|
||
stages: [
|
||
{ name: "基础阶段", active: false },
|
||
{ name: "进阶阶段", active: true },
|
||
{ name: "提高阶段", active: false },
|
||
{ name: "冲刺阶段", active: false },
|
||
],
|
||
|
||
// 直播相关数据
|
||
courseUnits: [
|
||
{
|
||
id: 1,
|
||
title: "数据库基础",
|
||
isExpanded: true,
|
||
courses: [
|
||
{
|
||
id: 101,
|
||
title: "数据库系统原理",
|
||
teacher: "李教授",
|
||
date: "2023.09.01",
|
||
time: "14:00-15:30",
|
||
status: "live",
|
||
viewCount: 1205,
|
||
thumbnail: "/api/placeholder/120/80",
|
||
startTime: "2023-09-01 14:00",
|
||
endTime: "2023-09-01 15:30",
|
||
description: "本课程主要讲解数据库系统的基本原理和设计方法",
|
||
},
|
||
{
|
||
id: 102,
|
||
title: "SQL语言基础",
|
||
teacher: "李教授",
|
||
date: "2023.09.03",
|
||
time: "10:00-11:30",
|
||
status: "upcoming",
|
||
viewCount: 0,
|
||
thumbnail: "/api/placeholder/120/80",
|
||
startTime: "2023-09-03 10:00",
|
||
endTime: "2023-09-03 11:30",
|
||
description: "SQL语言的基本语法和数据操作",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 2,
|
||
title: "高级数据库",
|
||
isExpanded: false,
|
||
courses: [
|
||
{
|
||
id: 201,
|
||
title: "数据库优化技术",
|
||
teacher: "王教授",
|
||
date: "2023.09.05",
|
||
time: "16:00-17:30",
|
||
status: "completed",
|
||
viewCount: 856,
|
||
thumbnail: "/api/placeholder/120/80",
|
||
startTime: "2023-09-05 16:00",
|
||
endTime: "2023-09-05 17:30",
|
||
description: "数据库性能优化和索引设计",
|
||
},
|
||
{
|
||
id: 202,
|
||
title: "分布式数据库",
|
||
teacher: "王教授",
|
||
date: "2023.09.07",
|
||
time: "14:00-15:30",
|
||
status: "upcoming",
|
||
viewCount: 0,
|
||
thumbnail: "/api/placeholder/120/80",
|
||
startTime: "2023-09-07 14:00",
|
||
endTime: "2023-09-07 15:30",
|
||
description: "分布式数据库系统架构和设计",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 3,
|
||
title: "数据挖掘",
|
||
isExpanded: false,
|
||
courses: [
|
||
{
|
||
id: 301,
|
||
title: "数据挖掘算法",
|
||
teacher: "陈教授",
|
||
date: "2023.09.10",
|
||
time: "09:00-10:30",
|
||
status: "upcoming",
|
||
viewCount: 0,
|
||
thumbnail: "/api/placeholder/120/80",
|
||
startTime: "2023-09-10 09:00",
|
||
endTime: "2023-09-10 10:30",
|
||
description: "常用数据挖掘算法原理和应用",
|
||
},
|
||
],
|
||
},
|
||
],
|
||
|
||
// 当前直播信息
|
||
currentLive: {
|
||
courseId: 101,
|
||
title: "数据库系统原理",
|
||
teacher: "李教授",
|
||
|
||
startTime: "2023-09-01 14:00",
|
||
viewers: 1205,
|
||
description:
|
||
"本课程主要讲解数据库系统的基本原理和设计方法,涵盖关系数据库理论、SQL语言、数据库设计、事务处理、并发控制等核心内容。通过理论学习和实践操作,帮助学生掌握数据库系统的核心技术。",
|
||
status: "live",
|
||
duration: "1小时30分钟",
|
||
},
|
||
|
||
// 直播状态配置
|
||
liveConfig: {
|
||
statusTypes: {
|
||
live: { name: "直播中", color: "#ef4444", bgColor: "#fef2f2" },
|
||
upcoming: { name: "即将开始", color: "#f59e0b", bgColor: "#fffbeb" },
|
||
completed: { name: "已结束", color: "#6b7280", bgColor: "#f9fafb" },
|
||
replay: { name: "课程回放中", color: "#8b5cf6", bgColor: "#f3f4f6" },
|
||
},
|
||
playerSettings: {
|
||
autoplay: true,
|
||
controls: true,
|
||
responsive: true,
|
||
aspectRatio: "16:9",
|
||
},
|
||
},
|
||
|
||
// 就业管家知识树数据
|
||
careerTree: {
|
||
title: "就业管家知识树",
|
||
centerSections: [
|
||
{
|
||
id: 1,
|
||
title: "产业认知课",
|
||
expanded: true,
|
||
child: [
|
||
{
|
||
unit_id: 1,
|
||
unit_name: "互联网行业概述",
|
||
course_list: [
|
||
{
|
||
id: 1,
|
||
course_name: "互联网发展史",
|
||
is_ai: true,
|
||
currentPoster: 1,
|
||
},
|
||
{
|
||
id: 2,
|
||
course_name: "行业分析方法",
|
||
is_ai: false,
|
||
currentPoster: 2,
|
||
},
|
||
{
|
||
id: 3,
|
||
course_name: "技术趋势解读",
|
||
is_ai: true,
|
||
currentPoster: 3,
|
||
},
|
||
],
|
||
resume_resources:
|
||
"高级产品经理简历\n资深运营经理简历\n技术总监简历",
|
||
portfolio_resources: "产品设计作品集\n运营案例合集\n技术项目展示",
|
||
tools: "Axure RP\nFigma\nSketch\nXmind",
|
||
advanced_learning_resources:
|
||
"产品思维训练\n数据分析进阶\n用户体验设计",
|
||
},
|
||
{
|
||
unit_id: 2,
|
||
unit_name: "技术架构基础",
|
||
course_list: [
|
||
{
|
||
id: 4,
|
||
course_name: "前端技术栈",
|
||
is_ai: true,
|
||
currentPoster: 4,
|
||
},
|
||
{
|
||
id: 5,
|
||
course_name: "后端架构设计",
|
||
is_ai: false,
|
||
currentPoster: 5,
|
||
},
|
||
],
|
||
resume_resources: "前端工程师简历\n全栈工程师简历\n架构师简历",
|
||
portfolio_resources: "前端项目作品\n全栈应用展示\n架构设计文档",
|
||
tools: "VS Code\nGit\nDocker\nKubernetes",
|
||
advanced_learning_resources: "微服务架构\n性能优化\n系统设计",
|
||
},
|
||
{
|
||
unit_id: 3,
|
||
unit_name: "市场竞争分析",
|
||
course_list: [
|
||
{
|
||
id: 6,
|
||
course_name: "竞品分析方法",
|
||
is_ai: false,
|
||
currentPoster: 6,
|
||
},
|
||
{
|
||
id: 7,
|
||
course_name: "用户需求调研",
|
||
is_ai: true,
|
||
currentPoster: 7,
|
||
},
|
||
],
|
||
resume_resources: "市场分析师简历\n用户研究员简历\n产品运营简历",
|
||
portfolio_resources: "竞品分析报告\n用户调研案例\n市场洞察文档",
|
||
tools:
|
||
"Questionnaire Star\nUser Interviews\nGoogle Forms\nSurvey Monkey",
|
||
advanced_learning_resources:
|
||
"市场趋势分析\n用户行为学\n商业模式设计",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 2,
|
||
title: "产业技能课",
|
||
expanded: false,
|
||
child: [
|
||
{
|
||
unit_id: 3,
|
||
unit_name: "编程技能提升",
|
||
course_list: [
|
||
{
|
||
id: 8,
|
||
course_name: "JavaScript高级特性",
|
||
is_ai: true,
|
||
currentPoster: 8,
|
||
},
|
||
{
|
||
id: 9,
|
||
course_name: "React框架实战",
|
||
is_ai: true,
|
||
currentPoster: 9,
|
||
},
|
||
{
|
||
id: 10,
|
||
course_name: "Node.js后端开发",
|
||
is_ai: false,
|
||
currentPoster: 10,
|
||
},
|
||
],
|
||
resume_resources:
|
||
"高级前端工程师简历\nReact专家简历\nNode.js开发者简历",
|
||
portfolio_resources: "React项目作品\nNode.js应用\n全栈项目展示",
|
||
tools: "React DevTools\nWebpack\nBabel\nESLint",
|
||
advanced_learning_resources:
|
||
"React源码解析\nNode.js性能优化\n前端工程化",
|
||
},
|
||
{
|
||
unit_id: 4,
|
||
unit_name: "数据库与云服务",
|
||
course_list: [
|
||
{
|
||
id: 11,
|
||
course_name: "MySQL数据库优化",
|
||
is_ai: false,
|
||
currentPoster: 11,
|
||
},
|
||
{
|
||
id: 12,
|
||
course_name: "Redis缓存实战",
|
||
is_ai: true,
|
||
currentPoster: 12,
|
||
},
|
||
],
|
||
resume_resources: "数据库工程师简历\n运维工程师简历\n云架构师简历",
|
||
portfolio_resources: "数据库设计案例\n缓存优化方案\n云服务部署",
|
||
tools: "MySQL Workbench\nRedis Desktop Manager\nAWS\nAliyun",
|
||
advanced_learning_resources: "数据库内核\n分布式缓存\n云原生架构",
|
||
},
|
||
{
|
||
unit_id: 5,
|
||
unit_name: "开发工具与流程",
|
||
course_list: [
|
||
{
|
||
id: 13,
|
||
course_name: "版本控制系统",
|
||
is_ai: false,
|
||
currentPoster: 13,
|
||
},
|
||
{
|
||
id: 14,
|
||
course_name: "自动化测试",
|
||
is_ai: true,
|
||
currentPoster: 14,
|
||
},
|
||
{
|
||
id: 15,
|
||
course_name: "持续集成部署",
|
||
is_ai: true,
|
||
currentPoster: 15,
|
||
},
|
||
],
|
||
resume_resources: "DevOps工程师简历\n测试工程师简历\n运维开发简历",
|
||
portfolio_resources: "CI/CD流水线\n自动化测试套件\n部署脚本集",
|
||
tools: "Git\nJenkins\nDocker\nKubernetes\nSonarQube",
|
||
advanced_learning_resources: "DevOps最佳实践\n容器化部署\n服务网格",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 3,
|
||
title: "项目实战课",
|
||
expanded: false,
|
||
child: [
|
||
{
|
||
unit_id: 6,
|
||
unit_name: "企业级项目开发",
|
||
course_list: [
|
||
{
|
||
id: 16,
|
||
course_name: "电商平台开发",
|
||
is_ai: true,
|
||
currentPoster: 16,
|
||
},
|
||
{
|
||
id: 17,
|
||
course_name: "内容管理系统",
|
||
is_ai: false,
|
||
currentPoster: 17,
|
||
},
|
||
{
|
||
id: 18,
|
||
course_name: "移动应用开发",
|
||
is_ai: true,
|
||
currentPoster: 18,
|
||
},
|
||
],
|
||
resume_resources:
|
||
"项目经理简历\n技术负责人简历\n全栈工程师简历\n移动端开发简历",
|
||
portfolio_resources:
|
||
"电商项目展示\nCMS系统演示\n项目管理文档\n移动应用作品",
|
||
tools: "Jira\nConfluence\nGitLab\nJenkins\nAndroid Studio",
|
||
advanced_learning_resources:
|
||
"项目管理实践\n敏捷开发\n持续集成\n移动端架构",
|
||
},
|
||
{
|
||
unit_id: 7,
|
||
unit_name: "数据分析项目",
|
||
course_list: [
|
||
{
|
||
id: 19,
|
||
course_name: "大数据平台搭建",
|
||
is_ai: true,
|
||
currentPoster: 19,
|
||
},
|
||
{
|
||
id: 20,
|
||
course_name: "机器学习实战",
|
||
is_ai: true,
|
||
currentPoster: 20,
|
||
},
|
||
],
|
||
resume_resources:
|
||
"数据分析师简历\n算法工程师简历\n大数据工程师简历",
|
||
portfolio_resources: "数据分析报告\n机器学习模型\n数据可视化作品",
|
||
tools: "Python\nJupyter\nTableau\nSpark\nHadoop",
|
||
advanced_learning_resources: "深度学习\n数据挖掘\n分布式计算",
|
||
},
|
||
{
|
||
unit_id: 8,
|
||
unit_name: "创新产品设计",
|
||
course_list: [
|
||
{
|
||
id: 21,
|
||
course_name: "AI产品设计",
|
||
is_ai: true,
|
||
currentPoster: 21,
|
||
},
|
||
{
|
||
id: 22,
|
||
course_name: "用户体验优化",
|
||
is_ai: false,
|
||
currentPoster: 22,
|
||
},
|
||
],
|
||
resume_resources: "产品经理简历\nUX设计师简历\nAI产品专家简历",
|
||
portfolio_resources: "AI产品原型\n用户研究报告\n设计系统文档",
|
||
tools: "Figma\nSketch\nProtoPie\nMiro\nAxure",
|
||
advanced_learning_resources: "AI产品策略\n用户心理学\n设计思维",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 4,
|
||
title: "就业指导课",
|
||
expanded: false,
|
||
child: [
|
||
{
|
||
unit_id: 9,
|
||
unit_name: "简历优化与包装",
|
||
course_list: [
|
||
{
|
||
id: 23,
|
||
course_name: "简历写作技巧",
|
||
is_ai: false,
|
||
currentPoster: 23,
|
||
},
|
||
{
|
||
id: 24,
|
||
course_name: "作品集制作",
|
||
is_ai: true,
|
||
currentPoster: 24,
|
||
},
|
||
],
|
||
resume_resources: "技术类简历模板\n产品类简历模板\n设计类简历模板",
|
||
portfolio_resources: "技术作品集\n产品作品集\n设计作品集",
|
||
tools: "Canva\nAdobe Suite\nGitHub Pages\nNotion",
|
||
advanced_learning_resources: "个人品牌打造\n职业规划\n行业洞察",
|
||
},
|
||
{
|
||
unit_id: 10,
|
||
unit_name: "面试技巧训练",
|
||
course_list: [
|
||
{
|
||
id: 25,
|
||
course_name: "技术面试准备",
|
||
is_ai: true,
|
||
currentPoster: 25,
|
||
},
|
||
{
|
||
id: 26,
|
||
course_name: "行为面试技巧",
|
||
is_ai: false,
|
||
currentPoster: 26,
|
||
},
|
||
],
|
||
resume_resources: "面试官简历\nHR专员简历\n技术面试官简历",
|
||
portfolio_resources: "面试案例集\n答题技巧\n模拟面试视频",
|
||
tools: "Zoom\nTencent Meeting\nLeetCode\nHackerRank",
|
||
advanced_learning_resources: "薪资谈判\n职场沟通\n压力面试应对",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: 5,
|
||
title: "职业发展课",
|
||
expanded: false,
|
||
child: [
|
||
{
|
||
unit_id: 11,
|
||
unit_name: "职场软技能",
|
||
course_list: [
|
||
{
|
||
id: 27,
|
||
course_name: "团队协作能力",
|
||
is_ai: false,
|
||
currentPoster: 27,
|
||
},
|
||
{
|
||
id: 28,
|
||
course_name: "沟通表达技巧",
|
||
is_ai: true,
|
||
currentPoster: 28,
|
||
},
|
||
],
|
||
resume_resources: "团队领导简历\n项目协调员简历\n培训师简历",
|
||
portfolio_resources: "团队项目案例\n沟通培训材料\n领导力展示",
|
||
tools: "Slack\nTrello\nZoom\nMindMeister",
|
||
advanced_learning_resources: "领导力培养\n冲突管理\n跨文化沟通",
|
||
},
|
||
{
|
||
unit_id: 12,
|
||
unit_name: "行业趋势分析",
|
||
course_list: [
|
||
{
|
||
id: 29,
|
||
course_name: "技术发展趋势",
|
||
is_ai: true,
|
||
currentPoster: 29,
|
||
},
|
||
{
|
||
id: 30,
|
||
course_name: "市场需求分析",
|
||
is_ai: false,
|
||
currentPoster: 30,
|
||
},
|
||
],
|
||
resume_resources: "行业分析师简历\n市场研究员简历\n战略顾问简历",
|
||
portfolio_resources: "行业报告\n趋势分析\n市场调研",
|
||
tools: "Google Analytics\nSimilarWeb\nCrunchbase\nPitchBook",
|
||
advanced_learning_resources: "商业分析\n战略思维\n创新管理",
|
||
},
|
||
],
|
||
},
|
||
],
|
||
rightResourcesAll: [
|
||
{
|
||
title: "简历资源",
|
||
items: [],
|
||
key: "resume_resources",
|
||
order: 1,
|
||
},
|
||
{
|
||
title: "作品集资源",
|
||
items: [],
|
||
key: "portfolio_resources",
|
||
order: 2,
|
||
},
|
||
{
|
||
title: "工具资源",
|
||
items: [],
|
||
key: "tools",
|
||
order: 3,
|
||
},
|
||
{
|
||
title: "进阶学习资料",
|
||
items: [],
|
||
key: "advanced_learning_resources",
|
||
order: 4,
|
||
},
|
||
],
|
||
},
|
||
// 课后作业数据
|
||
homework: [
|
||
{
|
||
name: "复合能力课",
|
||
id: 1,
|
||
units: [
|
||
{
|
||
name: "岗位体系认知",
|
||
courses: [
|
||
{ id: 1, name: "教育体系认知", level: "completed" },
|
||
{ id: 2, name: "现代文旅类企业的管理体系", level: "completed" },
|
||
{ id: 3, name: "专科生的职业规划", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "产业认知课",
|
||
courses: [
|
||
{ id: 4, name: "文旅产业认知课", level: "completed" },
|
||
{ id: 5, name: "行业详解:旅游行业", level: "completed" },
|
||
{ id: 6, name: "行业详解:酒店与民宿行业", level: "completed" },
|
||
{ id: 7, name: "行业详解:活动与会展行业", level: "completed" },
|
||
{ id: 8, name: "行业详解:文化服务行业", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "旅游产业全景与文旅基础知识",
|
||
courses: [
|
||
{ id: 9, name: "现代文旅产业生态图谱", level: "completed" },
|
||
{ id: 10, name: "文旅政策法规与风险管理", level: "completed" },
|
||
{ id: 11, name: "旅游产品与旅游资源", level: "completed" },
|
||
{ id: 12, name: "游客行为心理学基础", level: "completed" },
|
||
{ id: 13, name: "可持续旅游发展", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "文旅服务:形象、沟通与体验的融合艺术",
|
||
courses: [
|
||
{ id: 14, name: "文旅场景职业形象IP塑造", level: "completed" },
|
||
{ id: 15, name: "情境化服务体验设计", level: "completed" },
|
||
{ id: 16, name: "政务商务接待专项礼仪", level: "completed" },
|
||
{ id: 17, name: "文旅服务中的非语言表达", level: "completed" },
|
||
{ id: 18, name: "服务沟通技巧与表达训练", level: "completed" },
|
||
{ id: 19, name: "多元文化下的服务表达差异", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "文旅与供应链基础",
|
||
courses: [
|
||
{ id: 20, name: "供应链管理的内容", level: "completed" },
|
||
{ id: 21, name: "文旅资源调度", level: "completed" },
|
||
{ id: 22, name: "文旅产品全生命周期管理", level: "completed" },
|
||
{ id: 23, name: "文旅商品供应链", level: "completed" },
|
||
{ id: 24, name: "住宿业资源协同", level: "completed" },
|
||
{ id: 25, name: "小型文旅项目的供应链角色模拟", level: "completed" },
|
||
{ id: 26, name: "文旅项目供应链特征", level: "completed" },
|
||
{ id: 27, name: "文旅供应链中的B2B与B2C模式", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "商业设计基础",
|
||
courses: [
|
||
{ id: 28, name: "现代设计行业的发展现状", level: "completed" },
|
||
{ id: 29, name: "设计基础", level: "completed" },
|
||
{ id: 30, name: "字体设计与中文字体情绪表达", level: "completed" },
|
||
{ id: 31, name: "商业平面色彩搭配", level: "completed" },
|
||
{ id: 32, name: "平面设计构图", level: "completed" },
|
||
{ id: 33, name: "图像编辑工具:Photoshop", level: "completed" },
|
||
{ id: 34, name: "矢量与标志设计:Illustrator", level: "completed" },
|
||
{ id: 35, name: "快速设计工具使用:Canva", level: "completed" },
|
||
{ id: 36, name: "移动端视觉原型设计:Figma", level: "completed" },
|
||
{ id: 37, name: "视频剪辑入门:剪映", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "AIGC人工智能生成内容",
|
||
courses: [
|
||
{ id: 38, name: "AIGC发展简史与基本逻辑", level: "completed" },
|
||
{ id: 39, name: "AIGC的基本概念与各领域的应用", level: "completed" },
|
||
{ id: 40, name: "AIGC语言模型:chatgpt的灵活应用", level: "completed" },
|
||
{ id: 41, name: "AIGC生成内容的版权问题与合规使用", level: "completed" },
|
||
{ id: 42, name: "AIGC图像生成模型:Stable Diffusion Al摄影和平面设计", level: "completed" },
|
||
{ id: 43, name: "AIGC图像生成模型:Stable Diffusion的应用操作", level: "completed" },
|
||
{ id: 44, name: "AIGC视频应用:音视频生成与AI自动剪辑", level: "completed" },
|
||
{ id: 45, name: "AI词曲创作:suno", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "全栈新媒体运营赋能文旅营销",
|
||
courses: [
|
||
{ id: 46, name: "新媒体应用传播学", level: "completed" },
|
||
{ id: 47, name: "新媒体故事结构入门", level: "completed" },
|
||
{ id: 48, name: "新媒体产品策划", level: "completed" },
|
||
{ id: 49, name: "平台账号经营与内容赛道", level: "completed" },
|
||
{ id: 50, name: "各平台变现方式与具体方法", level: "completed" },
|
||
{ id: 51, name: "内容运营:短视频的制作工具", level: "completed" },
|
||
{ id: 52, name: "内容运营:短视频制作内容对标", level: "completed" },
|
||
{ id: 53, name: "直播运营:直播间的搭建", level: "completed" },
|
||
{ id: 54, name: "品牌运营:当地文化IP数字化传播", level: "completed" },
|
||
{ id: 55, name: "品牌运营:跨界营销创新", level: "completed" },
|
||
{ id: 56, name: "私域运营:私域流量池的运营", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "活动策划基础",
|
||
courses: [
|
||
{ id: 57, name: "活动类型与功能认知", level: "completed" },
|
||
{ id: 58, name: "受众定位与主题创意方法", level: "completed" },
|
||
{ id: 59, name: "活动宣传渠道与推广方式", level: "completed" },
|
||
{ id: 60, name: "活动文案写作与表达技巧", level: "completed" },
|
||
{ id: 61, name: "活动流程设计与时间节点把控", level: "completed" },
|
||
{ id: 62, name: "活动场地选择与布置基础", level: "completed" },
|
||
{ id: 63, name: "活动预算与资源统筹", level: "completed" },
|
||
{ id: 64, name: "应急预案与活动风险管理", level: "completed" },
|
||
{ id: 65, name: "活动复盘报告撰写与数据分析方法", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "智慧文旅应用",
|
||
courses: [
|
||
{ id: 66, name: "智慧文旅概论", level: "completed" },
|
||
{ id: 67, name: "OTA平台运营", level: "completed" },
|
||
{ id: 68, name: "票务分销平台", level: "completed" },
|
||
{ id: 69, name: "景区智能导览系统", level: "completed" },
|
||
{ id: 70, name: "智能导览设备运用", level: "completed" },
|
||
{ id: 71, name: "智慧酒店/智慧景区体验场景模拟", level: "completed" },
|
||
]
|
||
}
|
||
],
|
||
// 保留原始list用于兼容
|
||
list: [
|
||
// 岗位体系认知
|
||
{ id: 1, name: "教育体系认知", level: "completed" },
|
||
{ id: 2, name: "现代文旅类企业的管理体系", level: "completed" },
|
||
{ id: 3, name: "专科生的职业规划", level: "completed" },
|
||
// 产业认知课
|
||
{ id: 4, name: "文旅产业认知课", level: "completed" },
|
||
{ id: 5, name: "行业详解:旅游行业", level: "completed" },
|
||
{ id: 6, name: "行业详解:酒店与民宿行业", level: "completed" },
|
||
{ id: 7, name: "行业详解:活动与会展行业", level: "completed" },
|
||
{ id: 8, name: "行业详解:文化服务行业", level: "completed" },
|
||
// 旅游产业全景与文旅基础知识
|
||
{ id: 9, name: "现代文旅产业生态图谱", level: "completed" },
|
||
{ id: 10, name: "文旅政策法规与风险管理", level: "completed" },
|
||
{ id: 11, name: "旅游产品与旅游资源", level: "completed" },
|
||
{ id: 12, name: "游客行为心理学基础", level: "completed" },
|
||
{ id: 13, name: "可持续旅游发展", level: "completed" },
|
||
// 文旅服务:形象、沟通与体验的融合艺术
|
||
{ id: 14, name: "文旅场景职业形象IP塑造", level: "completed" },
|
||
{ id: 15, name: "情境化服务体验设计", level: "completed" },
|
||
{ id: 16, name: "政务商务接待专项礼仪", level: "completed" },
|
||
{ id: 17, name: "文旅服务中的非语言表达", level: "completed" },
|
||
{ id: 18, name: "服务沟通技巧与表达训练", level: "completed" },
|
||
{ id: 19, name: "多元文化下的服务表达差异", level: "completed" },
|
||
// 文旅与供应链基础
|
||
{ id: 20, name: "供应链管理的内容", level: "completed" },
|
||
{ id: 21, name: "文旅资源调度", level: "completed" },
|
||
{ id: 22, name: "文旅产品全生命周期管理", level: "completed" },
|
||
{ id: 23, name: "文旅商品供应链", level: "completed" },
|
||
{ id: 24, name: "住宿业资源协同", level: "completed" },
|
||
{ id: 25, name: "小型文旅项目的供应链角色模拟", level: "completed" },
|
||
{ id: 26, name: "文旅项目供应链特征", level: "completed" },
|
||
{ id: 27, name: "文旅供应链中的B2B与B2C模式", level: "completed" },
|
||
// 商业设计基础
|
||
{ id: 28, name: "现代设计行业的发展现状", level: "completed" },
|
||
{ id: 29, name: "设计基础", level: "completed" },
|
||
{ id: 30, name: "字体设计与中文字体情绪表达", level: "completed" },
|
||
{ id: 31, name: "商业平面色彩搭配", level: "completed" },
|
||
{ id: 32, name: "平面设计构图", level: "completed" },
|
||
{ id: 33, name: "图像编辑工具:Photoshop", level: "completed" },
|
||
{ id: 34, name: "矢量与标志设计:Illustrator", level: "completed" },
|
||
{ id: 35, name: "快速设计工具使用:Canva", level: "completed" },
|
||
{ id: 36, name: "移动端视觉原型设计:Figma", level: "completed" },
|
||
{ id: 37, name: "视频剪辑入门:剪映", level: "completed" },
|
||
// AIGC人工智能生成内容
|
||
{ id: 38, name: "AIGC发展简史与基本逻辑", level: "completed" },
|
||
{ id: 39, name: "AIGC的基本概念与各领域的应用", level: "completed" },
|
||
{ id: 40, name: "AIGC语言模型:chatgpt的灵活应用", level: "completed" },
|
||
{ id: 41, name: "AIGC生成内容的版权问题与合规使用", level: "completed" },
|
||
{ id: 42, name: "AIGC图像生成模型:Stable Diffusion Al摄影和平面设计", level: "completed" },
|
||
{ id: 43, name: "AIGC图像生成模型:Stable Diffusion的应用操作", level: "completed" },
|
||
{ id: 44, name: "AIGC视频应用:音视频生成与AI自动剪辑", level: "completed" },
|
||
{ id: 45, name: "AI词曲创作:suno", level: "completed" },
|
||
// 全栈新媒体运营赋能文旅营销
|
||
{ id: 46, name: "新媒体应用传播学", level: "completed" },
|
||
{ id: 47, name: "新媒体故事结构入门", level: "completed" },
|
||
{ id: 48, name: "新媒体产品策划", level: "completed" },
|
||
{ id: 49, name: "平台账号经营与内容赛道", level: "completed" },
|
||
{ id: 50, name: "各平台变现方式与具体方法", level: "completed" },
|
||
{ id: 51, name: "内容运营:短视频的制作工具", level: "completed" },
|
||
{ id: 52, name: "内容运营:短视频制作内容对标", level: "completed" },
|
||
{ id: 53, name: "直播运营:直播间的搭建", level: "completed" },
|
||
{ id: 54, name: "品牌运营:当地文化IP数字化传播", level: "completed" },
|
||
{ id: 55, name: "品牌运营:跨界营销创新", level: "completed" },
|
||
{ id: 56, name: "私域运营:私域流量池的运营", level: "completed" },
|
||
// 活动策划基础
|
||
{ id: 57, name: "活动类型与功能认知", level: "completed" },
|
||
{ id: 58, name: "受众定位与主题创意方法", level: "completed" },
|
||
{ id: 59, name: "活动宣传渠道与推广方式", level: "completed" },
|
||
{ id: 60, name: "活动文案写作与表达技巧", level: "completed" },
|
||
{ id: 61, name: "活动流程设计与时间节点把控", level: "completed" },
|
||
{ id: 62, name: "活动场地选择与布置基础", level: "completed" },
|
||
{ id: 63, name: "活动预算与资源统筹", level: "completed" },
|
||
{ id: 64, name: "应急预案与活动风险管理", level: "completed" },
|
||
{ id: 65, name: "活动复盘报告撰写与数据分析方法", level: "completed" },
|
||
// 智慧文旅应用
|
||
{ id: 66, name: "智慧文旅概论", level: "completed" },
|
||
{ id: 67, name: "OTA平台运营", level: "completed" },
|
||
{ id: 68, name: "票务分销平台", level: "completed" },
|
||
{ id: 69, name: "景区智能导览系统", level: "completed" },
|
||
{ id: 70, name: "智能导览设备运用", level: "completed" },
|
||
{ id: 71, name: "智慧酒店/智慧景区体验场景模拟", level: "completed" },
|
||
|
||
],
|
||
},
|
||
{
|
||
name: "垂直能力课",
|
||
id: 2,
|
||
units: [
|
||
{
|
||
name: "职业规划课",
|
||
courses: [
|
||
{ id: 1, name: "活动策划行业讲解", level: "completed" },
|
||
{ id: 2, name: "活动策划行业岗位职业发展认知", level: "completed" },
|
||
{ id: 3, name: "个人职业目标与发展路径规划", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "商业活动策略设计与创意策划",
|
||
courses: [
|
||
{ id: 4, name: "文旅商业活动概论", level: "completed" },
|
||
{ id: 5, name: "受众洞察与市场分析", level: "completed" },
|
||
{ id: 6, name: "活动定位与价值主张", level: "completed" },
|
||
{ id: 7, name: "创意主题与故事化设计", level: "completed" },
|
||
{ id: 8, name: "品牌 IP 与形象塑造", level: "completed" },
|
||
{ id: 9, name: "合作伙伴与赞助方案设计", level: "completed" },
|
||
{ id: 10, name: "法规合规与风险评估", level: "completed" },
|
||
{ id: 11, name: "预算编制与资源整合", level: "completed" },
|
||
{ id: 12, name: "整合营销传播策划", level: "completed" },
|
||
{ id: 13, name: "策划案撰写与提案技巧", level: "completed" },
|
||
{ id: 14, name: "AI 辅助创意与洞察", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "商业活动全程策划执行与运营优化",
|
||
courses: [
|
||
{ id: 15, name: "项目时间线与里程碑规划", level: "completed" },
|
||
{ id: 16, name: "场地选择与供应商协调", level: "completed" },
|
||
{ id: 17, name: "现场动线与流程设计", level: "completed" },
|
||
{ id: 18, name: "物料设计与场景布置概览", level: "completed" },
|
||
{ id: 19, name: "安全管控与应急预案", level: "completed" },
|
||
{ id: 20, name: "现场客户体验管理", level: "completed" },
|
||
{ id: 21, name: "数据采集与成效评估", level: "completed" },
|
||
{ id: 22, name: "运营复盘与持续改进", level: "completed" },
|
||
{ id: 23, name: "关键绩效指标与ROI评估", level: "completed" },
|
||
{ id: 24, name: "运营优化策略与流程改进", level: "completed" },
|
||
{ id: 25, name: "AI 驱动运营优化", level: "completed" },
|
||
]
|
||
},
|
||
{
|
||
name: "消费电子展品牌策划与执行",
|
||
courses: [
|
||
{ id: 26, name: "展会主题与品牌定位", level: "completed", isShowCase: true },
|
||
{ id: 27, name: "展区规划与动线设计", level: "completed" },
|
||
{ id: 28, name: "新品发布会策划", level: "completed" },
|
||
{ id: 29, name: "高层对接与 B2B 洽谈", level: "completed" },
|
||
{ id: 30, name: "观众体验与互动区运营", level: "completed" },
|
||
{ id: 31, name: "媒体公关与国际报道", level: "completed" },
|
||
{ id: 32, name: "数据采集与商机管理", level: "completed" },
|
||
{ id: 33, name: "展后商机跟进与 CRM 管理", level: "completed" },
|
||
{ id: 34, name: "效果评估与改进计划", level: "completed" },
|
||
{ id: 35, name: "AI 数字导览与多语种客服", level: "completed" },
|
||
]
|
||
}
|
||
],
|
||
// 保留原始list用于兼容
|
||
list: [
|
||
{ id: 1, name: "品牌运营实训", level: "completed" },
|
||
{ id: 2, name: "内容运营实训", level: "completed" },
|
||
{
|
||
id: 3,
|
||
name: "拉新策略项目",
|
||
level: "in-progress",
|
||
},
|
||
{
|
||
id: 4,
|
||
name: "拉新落地项目",
|
||
level: "in-progress",
|
||
},
|
||
{
|
||
id: 5,
|
||
name: "拉新优化项目",
|
||
level: "in-progress",
|
||
},
|
||
{ id: 6, name: "激活策略项目", level: "locked" },
|
||
{ id: 7, name: "激活落地项目", level: "locked" },
|
||
{ id: 8, name: "激活优化项目", level: "locked" },
|
||
{ id: 9, name: "全渠道运营", level: "locked" },
|
||
{ id: 10, name: "全渠道统筹", level: "locked" },
|
||
{ id: 11, name: "全渠道复盘", level: "locked" },
|
||
{ id: 12, name: "文旅项目策划", level: "locked" },
|
||
{ id: 13, name: "文旅项目运营", level: "locked" },
|
||
{ id: 14, name: "文旅项目推广", level: "locked" },
|
||
{ id: 15, name: "文旅项目复盘", level: "locked" },
|
||
],
|
||
},
|
||
],
|
||
// 1v1定制求职策略数据
|
||
jobStrategy: {
|
||
title: "1v1定制求职策略",
|
||
isLocked: true,
|
||
lockMessage: '还没收到了"综合能力培养",你的综合能力有所欠缺',
|
||
lockSubMessage: "您还在低收费阶段进行1v1求职策略咨询",
|
||
requirements: ["基础求职技能", "简历优化", "面试技巧", "薪资谈判"],
|
||
},
|
||
|
||
// 线下面试模拟数据
|
||
interviewSimulation: {
|
||
title: "线下面试模拟",
|
||
stages: [
|
||
{
|
||
id: "stage1",
|
||
name: "懵懂初试",
|
||
description: "初次接触面试,记录成长起点",
|
||
interviews: [
|
||
{
|
||
id: 1,
|
||
company: "求职面试初体验",
|
||
position: "自我介绍练习",
|
||
date: "2023-09-15",
|
||
time: "14:30",
|
||
status: "evaluated",
|
||
videoUrl: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/video/teach_sys/interview_simulation/3years_ago.mov",
|
||
interviewer: "职业导师",
|
||
duration: "05:32",
|
||
type: "first_experience",
|
||
},
|
||
{
|
||
id: 2,
|
||
company: "未来三年的我",
|
||
position: "AI模拟展望",
|
||
date: "2023-09-20",
|
||
time: "10:00",
|
||
status: "evaluated",
|
||
videoUrl: "/live.mp4",
|
||
interviewer: "AI助手",
|
||
duration: "08:15",
|
||
type: "future_simulation",
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: "stage2",
|
||
name: "有备而战",
|
||
description: "系统训练,不断精进",
|
||
interviews: [
|
||
{
|
||
id: 3,
|
||
company: "第一次线下模拟演练",
|
||
position: "全流程面试训练",
|
||
date: "2023-10-10",
|
||
time: "14:00",
|
||
status: "evaluated",
|
||
videoUrl: "/live.mp4",
|
||
interviewer: "资深HR",
|
||
duration: "25:18",
|
||
type: "practice",
|
||
},
|
||
{
|
||
id: 4,
|
||
company: "第二次线下模拟演练",
|
||
position: "全流程面试训练",
|
||
date: "2023-11-05",
|
||
time: "15:30",
|
||
status: "evaluated",
|
||
videoUrl: "/live.mp4",
|
||
interviewer: "行业专家",
|
||
duration: "28:43",
|
||
type: "practice",
|
||
},
|
||
{
|
||
id: 5,
|
||
company: "第三次线下模拟演练",
|
||
position: "全流程面试训练",
|
||
date: "2023-12-02",
|
||
time: "16:00",
|
||
status: "evaluated",
|
||
videoUrl: "/live.mp4",
|
||
interviewer: "企业高管",
|
||
duration: "32:15",
|
||
type: "practice",
|
||
},
|
||
{
|
||
id: 6,
|
||
company: "第四次线下模拟演练",
|
||
position: "全流程面试训练",
|
||
date: "2024-01-08",
|
||
time: "09:30",
|
||
status: "evaluated",
|
||
videoUrl: "/live.mp4",
|
||
interviewer: "技术总监",
|
||
duration: "30:45",
|
||
type: "practice",
|
||
},
|
||
{
|
||
id: 7,
|
||
company: "第五次线下模拟演练",
|
||
position: "全流程面试训练",
|
||
date: "2024-01-15",
|
||
time: "11:00",
|
||
status: "completed",
|
||
videoUrl: "/live.mp4",
|
||
interviewer: "CEO",
|
||
duration: "35:20",
|
||
type: "practice",
|
||
},
|
||
],
|
||
},
|
||
],
|
||
currentInterview: null,
|
||
// 不同类型面试的评分数据
|
||
evaluationDataMap: {
|
||
// 初次体验的评分
|
||
first_experience: {
|
||
scores: [
|
||
{
|
||
category: "表达能力",
|
||
score: 65,
|
||
total: 100,
|
||
description: "声音略显紧张,需加强语言组织",
|
||
},
|
||
{
|
||
category: "仪态形象",
|
||
score: 70,
|
||
total: 100,
|
||
description: "着装得体,眼神交流需改进",
|
||
},
|
||
{
|
||
category: "内容完整度",
|
||
score: 72,
|
||
total: 100,
|
||
description: "基本信息完整,亮点展示不足",
|
||
},
|
||
{
|
||
category: "时间控制",
|
||
score: 80,
|
||
total: 100,
|
||
description: "控制在合理范围内",
|
||
},
|
||
],
|
||
totalScore: 287,
|
||
totalPossible: 400,
|
||
hrComments: [
|
||
{
|
||
interviewer: "职业导师",
|
||
comment:
|
||
"第一次面试表现不错!虽然有些紧张,但能完整表达自己的基本信息。建议多练习眼神交流,增强自信心。",
|
||
timestamp: "2023-09-15 14:40",
|
||
},
|
||
{
|
||
interviewer: "心理辅导老师",
|
||
comment:
|
||
"看得出你很认真准备了。紧张是正常的,随着练习次数增加会越来越自然。记住微笑是最好的名片!",
|
||
timestamp: "2023-09-15 14:45",
|
||
},
|
||
],
|
||
recommendation: "continue",
|
||
nextSteps: "建议参加表达能力训练课程,多进行模拟练习,培养自信心。",
|
||
},
|
||
// 未来三年的我 - 完美状态
|
||
future_simulation: {
|
||
scores: [
|
||
{
|
||
category: "表达能力",
|
||
score: 95,
|
||
total: 100,
|
||
description: "声音自信有力,逻辑清晰,富有感染力",
|
||
},
|
||
{
|
||
category: "仪态形象",
|
||
score: 98,
|
||
total: 100,
|
||
description: "职业形象完美,眼神坚定,气场强大",
|
||
},
|
||
{
|
||
category: "内容完整度",
|
||
score: 96,
|
||
total: 100,
|
||
description: "内容丰富翔实,亮点突出,令人印象深刻",
|
||
},
|
||
{
|
||
category: "时间控制",
|
||
score: 100,
|
||
total: 100,
|
||
description: "节奏把控完美,张弛有度",
|
||
},
|
||
],
|
||
totalScore: 389,
|
||
totalPossible: 400,
|
||
hrComments: [
|
||
{
|
||
interviewer: "AI分析系统",
|
||
comment:
|
||
"这就是三年后的你!自信、专业、充满魅力。你已经完全掌握了面试技巧,能够从容应对各种挑战。你的专业知识深厚,项目经验丰富,更重要的是你散发出的自信光芒让人无法忽视。",
|
||
timestamp: "2023-09-20 10:15",
|
||
},
|
||
{
|
||
interviewer: "未来导师",
|
||
comment:
|
||
"看到这样的你,我由衷地感到骄傲!你不仅技术过硬,更具备了优秀的软实力。你的故事有温度,你的目标有高度,你的规划有深度。相信自己,这就是你努力的方向!",
|
||
timestamp: "2023-09-20 10:20",
|
||
},
|
||
],
|
||
recommendation: "excellent",
|
||
nextSteps:
|
||
"继续保持这种状态!记住,这不是幻想,而是你通过努力完全可以达到的目标。每一次练习都让你离这个理想状态更近一步。加油!",
|
||
},
|
||
// 正式模拟演练的评分
|
||
practice: {
|
||
scores: [
|
||
{
|
||
category: "技术能力",
|
||
score: 85,
|
||
total: 100,
|
||
description: "基础扎实,框架理解到位",
|
||
},
|
||
{
|
||
category: "沟通表达",
|
||
score: 78,
|
||
total: 100,
|
||
description: "表达清晰,逻辑性强",
|
||
},
|
||
{
|
||
category: "问题解决",
|
||
score: 82,
|
||
total: 100,
|
||
description: "思路清晰,方案合理",
|
||
},
|
||
{
|
||
category: "团队协作",
|
||
score: 80,
|
||
total: 100,
|
||
description: "有良好的团队意识",
|
||
},
|
||
],
|
||
totalScore: 325,
|
||
totalPossible: 400,
|
||
hrComments: [
|
||
{
|
||
interviewer: "资深HR",
|
||
comment:
|
||
"整体表现良好,专业知识扎实,沟通能力不错。建议在项目经验的讲述上更加具体,突出自己的贡献。",
|
||
timestamp: "2023-10-10 14:30",
|
||
},
|
||
{
|
||
interviewer: "技术面试官",
|
||
comment:
|
||
"技术基础不错,对常见问题都能给出合理答案。建议深入学习一些高级特性和最佳实践。",
|
||
timestamp: "2023-10-10 14:45",
|
||
},
|
||
],
|
||
recommendation: "pass",
|
||
nextSteps:
|
||
"表现不错!建议继续加强技术深度,多准备一些实际项目中的技术难点和解决方案。",
|
||
},
|
||
},
|
||
},
|
||
|
||
// 专家支持中心数据
|
||
expertSupport: {
|
||
title: "专家支持中心",
|
||
subtitle: "Expert Tutor Support Center",
|
||
categories: [
|
||
{ id: 1, name: "专业咨询", isActive: true },
|
||
{ id: 2, name: "技术指导", isActive: false },
|
||
{ id: 3, name: "24小时服务", isActive: false },
|
||
],
|
||
experts: [
|
||
{
|
||
id: 1,
|
||
name: "多多教务数据系统",
|
||
avatar: "/api/placeholder/60/60",
|
||
time: "2023-09-07 13:11",
|
||
message: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...",
|
||
isBot: true,
|
||
},
|
||
{
|
||
id: 2,
|
||
name: "张老师",
|
||
avatar: "/api/placeholder/60/60",
|
||
time: "2023-09-07 14:20",
|
||
message:
|
||
"收到-项目需求的设计图----项目需求的设计图----项目需求的设计图...",
|
||
isBot: false,
|
||
},
|
||
],
|
||
promotion: {
|
||
title: "学有所问,向专有答",
|
||
subtitle: "有问题联系专家咨询吧",
|
||
buttonText: "联系专家",
|
||
topics: ["基础概念", "技术分析", "问题排查", "性能优化", "架构设计"],
|
||
},
|
||
},
|
||
|
||
// 企业内推岗位数据
|
||
companyJobs: {
|
||
title: "企业内推岗位",
|
||
subtitle: "基于AI智能匹配的企业内推岗位推荐系统",
|
||
companyPositions: transformCompanyJobs(companyJobsData),
|
||
},
|
||
|
||
// 用户简历数据
|
||
userResumes: [
|
||
{
|
||
id: 1,
|
||
title: "物联网工程师简历",
|
||
targetPosition: "物联网实施工程师",
|
||
status: "active",
|
||
statusText: "活跃",
|
||
updateTime: "2024-01-15",
|
||
submitCount: 8,
|
||
type: "技术类",
|
||
skills: [
|
||
"物联网技术",
|
||
"Linux系统",
|
||
"TCP/IP",
|
||
"MQTT",
|
||
"嵌入式开发",
|
||
"项目管理",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "物联网工程",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "1-2年",
|
||
company: "华为技术有限公司",
|
||
},
|
||
{
|
||
id: 2,
|
||
title: "前端开发工程师简历",
|
||
targetPosition: "前端开发工程师",
|
||
status: "draft",
|
||
statusText: "草稿",
|
||
updateTime: "2024-01-10",
|
||
submitCount: 3,
|
||
type: "技术类",
|
||
skills: [
|
||
"React",
|
||
"Vue",
|
||
"JavaScript",
|
||
"TypeScript",
|
||
"Node.js",
|
||
"Webpack",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "计算机科学与技术",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "2-3年",
|
||
company: "腾讯科技",
|
||
},
|
||
{
|
||
id: 3,
|
||
title: "数据分析师简历",
|
||
targetPosition: "数据分析师",
|
||
status: "active",
|
||
statusText: "活跃",
|
||
updateTime: "2024-01-12",
|
||
submitCount: 5,
|
||
type: "分析类",
|
||
skills: ["Python", "SQL", "数据可视化", "Excel", "统计分析", "Tableau"],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "数据科学与大数据技术",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "1-3年",
|
||
company: "阿里巴巴",
|
||
},
|
||
{
|
||
id: 4,
|
||
title: "项目管理简历",
|
||
targetPosition: "项目经理",
|
||
status: "inactive",
|
||
statusText: "未激活",
|
||
updateTime: "2023-12-20",
|
||
submitCount: 1,
|
||
type: "管理类",
|
||
skills: [
|
||
"项目管理",
|
||
"PMP",
|
||
"敏捷开发",
|
||
"团队协作",
|
||
"风险控制",
|
||
"需求分析",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "工商管理",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "3-5年",
|
||
company: "美团",
|
||
},
|
||
{
|
||
id: 5,
|
||
title: "物联网工程师简历",
|
||
targetPosition: "物联网实施工程师",
|
||
status: "active",
|
||
statusText: "活跃",
|
||
updateTime: "2024-01-15",
|
||
submitCount: 8,
|
||
type: "技术类",
|
||
skills: [
|
||
"物联网技术",
|
||
"Linux系统",
|
||
"TCP/IP",
|
||
"MQTT",
|
||
"嵌入式开发",
|
||
"项目管理",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "物联网工程",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "1-2年",
|
||
company: "华为技术有限公司",
|
||
},
|
||
{
|
||
id: 6,
|
||
title: "前端开发工程师简历",
|
||
targetPosition: "前端开发工程师",
|
||
status: "draft",
|
||
statusText: "草稿",
|
||
updateTime: "2024-01-10",
|
||
submitCount: 3,
|
||
type: "技术类",
|
||
skills: [
|
||
"React",
|
||
"Vue",
|
||
"JavaScript",
|
||
"TypeScript",
|
||
"Node.js",
|
||
"Webpack",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "计算机科学与技术",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "2-3年",
|
||
company: "腾讯科技",
|
||
},
|
||
{
|
||
id: 7,
|
||
title: "数据分析师简历",
|
||
targetPosition: "数据分析师",
|
||
status: "active",
|
||
statusText: "活跃",
|
||
updateTime: "2024-01-12",
|
||
submitCount: 5,
|
||
type: "分析类",
|
||
skills: ["Python", "SQL", "数据可视化", "Excel", "统计分析", "Tableau"],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "数据科学与大数据技术",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "1-3年",
|
||
company: "阿里巴巴",
|
||
},
|
||
{
|
||
id: 8,
|
||
title: "项目管理简历",
|
||
targetPosition: "项目经理",
|
||
status: "inactive",
|
||
statusText: "未激活",
|
||
updateTime: "2023-12-20",
|
||
submitCount: 1,
|
||
type: "管理类",
|
||
skills: [
|
||
"项目管理",
|
||
"PMP",
|
||
"敏捷开发",
|
||
"团队协作",
|
||
"风险控制",
|
||
"需求分析",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "工商管理",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "3-5年",
|
||
company: "美团",
|
||
},
|
||
{
|
||
id: 9,
|
||
title: "物联网工程师简历",
|
||
targetPosition: "物联网实施工程师",
|
||
status: "active",
|
||
statusText: "活跃",
|
||
updateTime: "2024-01-15",
|
||
submitCount: 8,
|
||
type: "技术类",
|
||
skills: [
|
||
"物联网技术",
|
||
"Linux系统",
|
||
"TCP/IP",
|
||
"MQTT",
|
||
"嵌入式开发",
|
||
"项目管理",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "物联网工程",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "1-2年",
|
||
company: "华为技术有限公司",
|
||
},
|
||
{
|
||
id: 10,
|
||
title: "前端开发工程师简历",
|
||
targetPosition: "前端开发工程师",
|
||
status: "draft",
|
||
statusText: "草稿",
|
||
updateTime: "2024-01-10",
|
||
submitCount: 3,
|
||
type: "技术类",
|
||
skills: [
|
||
"React",
|
||
"Vue",
|
||
"JavaScript",
|
||
"TypeScript",
|
||
"Node.js",
|
||
"Webpack",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "计算机科学与技术",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "2-3年",
|
||
company: "腾讯科技",
|
||
},
|
||
{
|
||
id: 11,
|
||
title: "数据分析师简历",
|
||
targetPosition: "数据分析师",
|
||
status: "active",
|
||
statusText: "活跃",
|
||
updateTime: "2024-01-12",
|
||
submitCount: 5,
|
||
type: "分析类",
|
||
skills: ["Python", "SQL", "数据可视化", "Excel", "统计分析", "Tableau"],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "数据科学与大数据技术",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "1-3年",
|
||
company: "阿里巴巴",
|
||
},
|
||
{
|
||
id: 12,
|
||
title: "项目管理简历",
|
||
targetPosition: "项目经理",
|
||
status: "inactive",
|
||
statusText: "未激活",
|
||
updateTime: "2023-12-20",
|
||
submitCount: 1,
|
||
type: "管理类",
|
||
skills: [
|
||
"项目管理",
|
||
"PMP",
|
||
"敏捷开发",
|
||
"团队协作",
|
||
"风险控制",
|
||
"需求分析",
|
||
],
|
||
personalInfo: {
|
||
name: "张同学",
|
||
phone: "138****8888",
|
||
email: "zhangxue@example.com",
|
||
location: "苏州市",
|
||
},
|
||
education: {
|
||
university: "苏州信息职业技术学院",
|
||
major: "工商管理",
|
||
degree: "专科",
|
||
graduationYear: "2024",
|
||
},
|
||
experience: "3-5年",
|
||
company: "美团",
|
||
},
|
||
],
|
||
|
||
// 我的简历与面试题数据
|
||
resumeInterview: {
|
||
title: "我的简历与面试题",
|
||
industries: [
|
||
{
|
||
id: "frontend",
|
||
name: "前端开发",
|
||
positions: [
|
||
{
|
||
id: "react-developer",
|
||
name: "React开发工程师",
|
||
company: "腾讯科技",
|
||
level: "技术骨干岗",
|
||
salary: "12-20K",
|
||
experience: "2-4年",
|
||
resume: {
|
||
personalInfo: {
|
||
name: "张三",
|
||
phone: "138****8888",
|
||
email: "zhangsan@example.com",
|
||
location: "深圳市南山区",
|
||
},
|
||
education: {
|
||
university: "华南理工大学",
|
||
major: "计算机科学与技术",
|
||
degree: "本科",
|
||
graduationYear: "2021",
|
||
},
|
||
experience: [
|
||
{
|
||
company: "腾讯科技有限公司",
|
||
position: "React开发工程师",
|
||
duration: "2022.03-至今",
|
||
responsibilities: [
|
||
"负责QQ音乐Web端核心功能开发,日活用户500万+",
|
||
"主导前端架构重构,性能提升40%",
|
||
"建立组件库体系,提升开发效率30%",
|
||
],
|
||
},
|
||
],
|
||
skills: ["React", "Vue", "TypeScript", "Node.js", "Webpack"],
|
||
},
|
||
interviews: {
|
||
hookQuestions: [
|
||
"如何优化React应用的性能?",
|
||
"什么是虚拟DOM?它的优势是什么?",
|
||
"React Hooks相比Class组件有什么优势?",
|
||
"如何处理React组件的状态管理?",
|
||
"React18的新特性有哪些?",
|
||
],
|
||
allQuestions: [
|
||
{
|
||
id: 1,
|
||
category: "技术基础",
|
||
question: "如何优化React应用的性能?",
|
||
answer:
|
||
"1. 使用React.memo避免不必要的重渲染;2. 使用useMemo和useCallback缓存计算结果;3. 代码分割和懒加载;4. 虚拟化长列表;5. 优化bundle大小。",
|
||
},
|
||
],
|
||
},
|
||
},
|
||
{
|
||
id: "vue-developer",
|
||
name: "Vue开发工程师",
|
||
company: "阿里巴巴",
|
||
level: "储备干部岗",
|
||
salary: "15-25K",
|
||
experience: "3-5年",
|
||
resume: { personalInfo: { name: "李四" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"Vue3相比Vue2有哪些重大改进?",
|
||
"什么是响应式原理?",
|
||
"如何进行Vue项目性能优化?",
|
||
"Composition API的优势是什么?",
|
||
"Pinia与Vuex的区别?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "angular-developer",
|
||
name: "Angular开发工程师",
|
||
company: "华为技术",
|
||
level: "技术骨干岗",
|
||
salary: "12-18K",
|
||
experience: "2-4年",
|
||
resume: { personalInfo: { name: "王五" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"Angular的依赖注入是如何工作的?",
|
||
"什么是RxJS?",
|
||
"Angular的生命周期钩子有哪些?",
|
||
"Angular模块系统的设计?",
|
||
"如何进行Angular单元测试?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "frontend-architect",
|
||
name: "前端架构师",
|
||
company: "美团",
|
||
level: "资深",
|
||
salary: "25-35K",
|
||
experience: "5-8年",
|
||
resume: { personalInfo: { name: "赵六" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"如何设计一个大型前端应用的架构?",
|
||
"微前端架构的优缺点是什么?",
|
||
"如何制定前端技术选型标准?",
|
||
"前端监控系统如何设计?",
|
||
"如何处理跨团队协作?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "mobile-developer",
|
||
name: "移动端开发工程师",
|
||
company: "小米科技",
|
||
level: "储备干部岗",
|
||
salary: "18-28K",
|
||
experience: "3-6年",
|
||
resume: { personalInfo: { name: "钱七" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"React Native与原生开发的区别?",
|
||
"如何优化移动端应用性能?",
|
||
"Flutter与React Native如何选择?",
|
||
"移动端适配方案有哪些?",
|
||
"Hybrid开发的优缺点?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "ui-developer",
|
||
name: "UI开发工程师",
|
||
company: "网易",
|
||
level: "技术骨干岗",
|
||
salary: "10-16K",
|
||
experience: "2-4年",
|
||
resume: { personalInfo: { name: "孙八" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"如何实现响应式设计?",
|
||
"CSS3动画的最佳实践是什么?",
|
||
"如何处理浏览器兼容性问题?",
|
||
"CSS预处理器的选择?",
|
||
"组件化开发的思路?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "fullstack-developer",
|
||
name: "全栈开发工程师",
|
||
company: "京东",
|
||
level: "储备干部岗",
|
||
salary: "20-30K",
|
||
experience: "4-7年",
|
||
resume: { personalInfo: { name: "周九" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"全栈开发的技术栈如何选择?",
|
||
"如何平衡前后端开发时间?",
|
||
"DevOps在全栈开发中的作用?",
|
||
"数据库设计原则?",
|
||
"系统架构如何演进?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "frontend-lead",
|
||
name: "前端技术负责人",
|
||
company: "滴滴出行",
|
||
level: "专家",
|
||
salary: "30-50K",
|
||
experience: "6-10年",
|
||
resume: { personalInfo: { name: "吴十" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"如何管理前端团队?",
|
||
"如何制定前端规范?",
|
||
"如何处理技术债务?",
|
||
"人才培养体系建设?",
|
||
"技术决策的制定流程?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "frontend-intern",
|
||
name: "前端开发实习生",
|
||
company: "百度",
|
||
level: "实习",
|
||
salary: "3-5K",
|
||
experience: "应届生",
|
||
resume: { personalInfo: { name: "郑十一" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"JavaScript基础知识掌握程度?",
|
||
"如何学习前端技术?",
|
||
"对前端发展趋势的看法?",
|
||
"项目经验分享?",
|
||
"学习规划是什么?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: "backend",
|
||
name: "后端开发",
|
||
positions: [
|
||
{
|
||
id: "java-developer",
|
||
name: "Java开发工程师",
|
||
company: "阿里巴巴",
|
||
level: "储备干部岗",
|
||
salary: "18-30K",
|
||
resume: { personalInfo: { name: "陈一" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"Spring Boot的核心特性是什么?",
|
||
"JVM调优有哪些关键参数?",
|
||
"如何设计高并发系统?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "python-developer",
|
||
name: "Python开发工程师",
|
||
company: "字节跳动",
|
||
level: "技术骨干岗",
|
||
salary: "12-20K",
|
||
resume: { personalInfo: { name: "林二" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"Django与Flask的区别?",
|
||
"Python的GIL是什么?",
|
||
"如何优化Python程序性能?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "golang-developer",
|
||
name: "Go开发工程师",
|
||
company: "腾讯",
|
||
level: "储备干部岗",
|
||
salary: "20-35K",
|
||
resume: { personalInfo: { name: "黄三" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"Go语言的并发模型是什么?",
|
||
"Go的垃圾回收机制?",
|
||
"如何进行Go程序调优?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "nodejs-developer",
|
||
name: "Node.js开发工程师",
|
||
company: "美团",
|
||
level: "技术骨干岗",
|
||
salary: "14-22K",
|
||
resume: { personalInfo: { name: "何四" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"Node.js的事件循环机制?",
|
||
"如何处理Node.js内存泄漏?",
|
||
"Express与Koa的区别?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "php-developer",
|
||
name: "PHP开发工程师",
|
||
company: "新浪",
|
||
level: "技术骨干岗",
|
||
salary: "10-18K",
|
||
resume: { personalInfo: { name: "罗五" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"PHP8的新特性有哪些?",
|
||
"Laravel框架的核心概念?",
|
||
"如何优化PHP应用性能?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "microservice-architect",
|
||
name: "微服务架构师",
|
||
company: "华为",
|
||
level: "专家",
|
||
salary: "35-60K",
|
||
resume: { personalInfo: { name: "高六" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"微服务拆分的原则是什么?",
|
||
"如何处理分布式事务?",
|
||
"服务网格的作用是什么?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "devops-engineer",
|
||
name: "DevOps工程师",
|
||
company: "小米",
|
||
level: "储备干部岗",
|
||
salary: "18-32K",
|
||
resume: { personalInfo: { name: "梁七" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"CI/CD流水线如何设计?",
|
||
"Docker与Kubernetes的关系?",
|
||
"如何实现灰度发布?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "database-engineer",
|
||
name: "数据库工程师",
|
||
company: "蚂蚁金服",
|
||
level: "专家",
|
||
salary: "30-50K",
|
||
resume: { personalInfo: { name: "韩八" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"MySQL索引优化策略?",
|
||
"分库分表如何设计?",
|
||
"Redis与MySQL的使用场景?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "backend-intern",
|
||
name: "后端开发实习生",
|
||
company: "网易",
|
||
level: "实习",
|
||
salary: "3-6K",
|
||
resume: { personalInfo: { name: "冯九" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"计算机网络基础知识?",
|
||
"数据结构与算法掌握程度?",
|
||
"对后端技术栈的理解?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: "data-analysis",
|
||
name: "数据分析",
|
||
positions: [
|
||
{
|
||
id: "data-analyst",
|
||
name: "数据分析师",
|
||
company: "阿里巴巴",
|
||
level: "储备干部岗",
|
||
salary: "15-25K",
|
||
resume: { personalInfo: { name: "陈数据" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"SQL优化的常用技巧?",
|
||
"如何进行用户行为分析?",
|
||
"A/B测试的设计原则?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "data-scientist",
|
||
name: "数据科学家",
|
||
company: "腾讯",
|
||
level: "专家",
|
||
salary: "30-50K",
|
||
resume: { personalInfo: { name: "李科学" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"机器学习算法如何选择?",
|
||
"特征工程的最佳实践?",
|
||
"如何评估模型效果?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "ml-engineer",
|
||
name: "机器学习工程师",
|
||
company: "百度",
|
||
level: "储备干部岗",
|
||
salary: "20-35K",
|
||
resume: { personalInfo: { name: "王学习" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"深度学习框架比较?",
|
||
"模型部署的挑战?",
|
||
"如何处理数据倾斜?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "bi-analyst",
|
||
name: "BI分析师",
|
||
company: "美团",
|
||
level: "技术骨干岗",
|
||
salary: "12-20K",
|
||
resume: { personalInfo: { name: "赵商业" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"数据仓库建模方法?",
|
||
"ETL流程设计原则?",
|
||
"可视化工具选择?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "data-engineer",
|
||
name: "数据工程师",
|
||
company: "字节跳动",
|
||
level: "储备干部岗",
|
||
salary: "18-30K",
|
||
resume: { personalInfo: { name: "钱工程" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"大数据处理架构设计?",
|
||
"Spark与Hadoop的区别?",
|
||
"实时数据处理方案?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "algorithm-engineer",
|
||
name: "算法工程师",
|
||
company: "华为",
|
||
level: "专家",
|
||
salary: "25-45K",
|
||
resume: { personalInfo: { name: "孙算法" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"推荐算法的演进?",
|
||
"深度学习在推荐中的应用?",
|
||
"算法效果如何评估?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "quant-analyst",
|
||
name: "量化分析师",
|
||
company: "招商证券",
|
||
level: "储备干部岗",
|
||
salary: "25-40K",
|
||
resume: { personalInfo: { name: "周量化" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"量化交易策略设计?",
|
||
"风险管理模型?",
|
||
"因子挖掘方法?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "research-scientist",
|
||
name: "研究科学家",
|
||
company: "微软亚洲研究院",
|
||
level: "专家",
|
||
salary: "35-60K",
|
||
resume: { personalInfo: { name: "吴研究" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"前沿技术研究方向?",
|
||
"学术成果转化?",
|
||
"研究方法论?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "data-intern",
|
||
name: "数据分析实习生",
|
||
company: "京东",
|
||
level: "实习",
|
||
salary: "3-5K",
|
||
resume: { personalInfo: { name: "郑实习" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"统计学基础知识?",
|
||
"Python数据分析库?",
|
||
"数据可视化经验?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: "product-design",
|
||
name: "产品设计",
|
||
positions: [
|
||
{
|
||
id: "product-manager",
|
||
name: "产品经理",
|
||
company: "腾讯",
|
||
level: "储备干部岗",
|
||
salary: "20-35K",
|
||
resume: { personalInfo: { name: "陈产品" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"如何进行需求分析?",
|
||
"产品规划方法论?",
|
||
"用户体验设计原则?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "ui-designer",
|
||
name: "UI设计师",
|
||
company: "字节跳动",
|
||
level: "技术骨干岗",
|
||
salary: "12-22K",
|
||
resume: { personalInfo: { name: "李设计" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"设计系统如何建立?",
|
||
"色彩搭配原理?",
|
||
"移动端设计规范?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "ux-designer",
|
||
name: "UX设计师",
|
||
company: "阿里巴巴",
|
||
level: "储备干部岗",
|
||
salary: "18-30K",
|
||
resume: { personalInfo: { name: "王体验" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"用户研究方法?",
|
||
"交互设计原则?",
|
||
"可用性测试流程?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "product-designer",
|
||
name: "产品设计师",
|
||
company: "美团",
|
||
level: "储备干部岗",
|
||
salary: "16-28K",
|
||
resume: { personalInfo: { name: "赵全能" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"设计思维流程?",
|
||
"跨平台设计一致性?",
|
||
"设计与开发协作?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "interaction-designer",
|
||
name: "交互设计师",
|
||
company: "网易",
|
||
level: "技术骨干岗",
|
||
salary: "14-24K",
|
||
resume: { personalInfo: { name: "钱交互" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"交互原型工具比较?",
|
||
"手势交互设计?",
|
||
"无障碍设计考虑?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "visual-designer",
|
||
name: "视觉设计师",
|
||
company: "小米",
|
||
level: "技术骨干岗",
|
||
salary: "10-18K",
|
||
resume: { personalInfo: { name: "孙视觉" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"品牌视觉一致性?",
|
||
"图标设计规范?",
|
||
"视觉层次构建?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "design-director",
|
||
name: "设计总监",
|
||
company: "华为",
|
||
level: "专家",
|
||
salary: "35-60K",
|
||
resume: { personalInfo: { name: "周总监" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"设计团队管理?",
|
||
"设计质量控制?",
|
||
"设计文化建设?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "motion-designer",
|
||
name: "动效设计师",
|
||
company: "蚂蚁金服",
|
||
level: "储备干部岗",
|
||
salary: "15-26K",
|
||
resume: { personalInfo: { name: "吴动效" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"动效设计原则?",
|
||
"性能与美观平衡?",
|
||
"动效实现技术?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "design-intern",
|
||
name: "设计实习生",
|
||
company: "滴滴",
|
||
level: "实习",
|
||
salary: "3-5K",
|
||
resume: { personalInfo: { name: "郑新人" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"设计基础理论?",
|
||
"软件工具掌握?",
|
||
"作品集展示?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
id: "project-management",
|
||
name: "项目管理",
|
||
positions: [
|
||
{
|
||
id: "project-manager",
|
||
name: "项目经理",
|
||
company: "华为",
|
||
level: "储备干部岗",
|
||
salary: "18-30K",
|
||
resume: { personalInfo: { name: "陈项目" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"项目管理方法论?",
|
||
"风险管理策略?",
|
||
"团队沟通技巧?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "scrum-master",
|
||
name: "Scrum Master",
|
||
company: "阿里巴巴",
|
||
level: "技术骨干岗",
|
||
salary: "15-25K",
|
||
resume: { personalInfo: { name: "李敏捷" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"Scrum框架实践?",
|
||
"敏捷转型挑战?",
|
||
"团队效能提升?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "pmo",
|
||
name: "PMO专员",
|
||
company: "腾讯",
|
||
level: "技术骨干岗",
|
||
salary: "12-20K",
|
||
resume: { personalInfo: { name: "王规范" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"PMO职能定位?",
|
||
"项目治理体系?",
|
||
"流程标准化?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "program-manager",
|
||
name: "项目群经理",
|
||
company: "字节跳动",
|
||
level: "专家",
|
||
salary: "28-45K",
|
||
resume: { personalInfo: { name: "赵项目群" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"多项目协调?",
|
||
"资源优化配置?",
|
||
"战略目标分解?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "business-analyst",
|
||
name: "业务分析师",
|
||
company: "美团",
|
||
level: "储备干部岗",
|
||
salary: "16-28K",
|
||
resume: { personalInfo: { name: "钱分析" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"需求分析方法?",
|
||
"业务流程梳理?",
|
||
"干系人管理?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "delivery-manager",
|
||
name: "交付经理",
|
||
company: "百度",
|
||
level: "储备干部岗",
|
||
salary: "20-32K",
|
||
resume: { personalInfo: { name: "孙交付" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"交付质量保证?",
|
||
"客户满意度管理?",
|
||
"交付流程优化?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "change-manager",
|
||
name: "变更管理专员",
|
||
company: "IBM",
|
||
level: "技术骨干岗",
|
||
salary: "14-22K",
|
||
resume: { personalInfo: { name: "周变更" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"变更管理流程?",
|
||
"组织变革策略?",
|
||
"变更阻力应对?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "agile-coach",
|
||
name: "敏捷教练",
|
||
company: "微软",
|
||
level: "专家",
|
||
salary: "30-50K",
|
||
resume: { personalInfo: { name: "吴教练" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"敏捷文化建设?",
|
||
"团队辅导方法?",
|
||
"持续改进机制?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
{
|
||
id: "pm-intern",
|
||
name: "项目管理实习生",
|
||
company: "京东",
|
||
level: "实习",
|
||
salary: "3-5K",
|
||
resume: { personalInfo: { name: "郑学习者" } },
|
||
interviews: {
|
||
hookQuestions: [
|
||
"项目管理基础?",
|
||
"沟通协调能力?",
|
||
"学习成长规划?",
|
||
],
|
||
allQuestions: [],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
|
||
// 我的项目库数据
|
||
projectLibrary: {
|
||
title: "我的项目库",
|
||
searchPlaceholder: "搜索",
|
||
projects: [
|
||
{
|
||
id: 1,
|
||
title: "长安汽车车机测试项目案例",
|
||
subtitle: "物联网业务管理课程",
|
||
tags: ["物联网", "车机测试", "项目管理"],
|
||
details: {
|
||
overview:
|
||
"本项目旨在为长安汽车设计并实施一套完整的车机测试系统,通过物联网技术实现对车载设备的远程监控和管理。项目涵盖了从需求分析到系统部署的完整开发流程,采用微服务架构和云原生技术,确保系统的高可用性和可扩展性。项目团队运用敏捷开发方法,在6个月内成功交付了符合客户要求的产品。",
|
||
teamConfig: [
|
||
{ role: "项目经理", name: "XXXXXXXXX" },
|
||
{ role: "技术经理", name: "XXXXXXXXX" },
|
||
{ role: "前端开发", name: "XXXXXXXXX" },
|
||
{ role: "后端开发", name: "XXXXXXXXX" },
|
||
{ role: "测试工程师", name: "XXXXXXXXX" },
|
||
{ role: "运维工程师", name: "XXXXXXXXX" },
|
||
],
|
||
dataInterface: [
|
||
{ label: "服务器", value: "XXXXXXXXX" },
|
||
{ label: "中间件", value: "XXXXXXXXX" },
|
||
{ label: "数据库", value: "XXXXXXXXX" },
|
||
],
|
||
businessFlow: [
|
||
{
|
||
title: "需求分析",
|
||
description:
|
||
"深入分析客户需求,确定项目范围和技术方案。与客户进行多轮沟通,明确功能需求和性能指标,形成详细的需求文档和技术架构设计。",
|
||
},
|
||
{
|
||
title: "系统设计",
|
||
description:
|
||
"设计系统架构和数据库结构,制定开发计划。采用微服务架构,确保系统的模块化和可扩展性,同时制定详细的接口规范。",
|
||
},
|
||
{ title: "XXXXXXXXX", description: "XXXXXXXXXXXXXXXXXX" },
|
||
{ title: "XXXXXXXXX", description: "XXXXXXXXXXXXXXXXXX" },
|
||
],
|
||
keyTechnologies: [
|
||
"基于微服务架构的系统设计,XXXXXXXXXXXXXXXXXX",
|
||
"XXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXX",
|
||
"XXXXXXXXX,XXXXXXXXXXXXXXXXXX",
|
||
"XXXXXXXXX,XXXXXXXXXXXXXXXXXX",
|
||
],
|
||
attachments: [
|
||
{
|
||
name: "车机测试报告.pdf",
|
||
type: "pdf",
|
||
size: "2.5MB",
|
||
url: "/files/report.pdf",
|
||
},
|
||
{
|
||
name: "项目需求文档.docx",
|
||
type: "word",
|
||
size: "1.8MB",
|
||
url: "/files/requirements.docx",
|
||
},
|
||
{
|
||
name: "系统架构图.pptx",
|
||
type: "ppt",
|
||
size: "3.2MB",
|
||
url: "/files/architecture.pptx",
|
||
},
|
||
{
|
||
name: "测试数据分析.xlsx",
|
||
type: "excel",
|
||
size: "4.1MB",
|
||
url: "/files/analysis.xlsx",
|
||
},
|
||
],
|
||
},
|
||
},
|
||
...Array.from({ length: 17 }, (_, i) => ({
|
||
id: i + 2,
|
||
title: `长安汽车车机测试项目案例`,
|
||
subtitle: `物联网业务管理课程`,
|
||
tags: ["物联网", "车机测试", "项目管理"],
|
||
details: {
|
||
overview: "项目概述数据加载中...",
|
||
teamConfig: [],
|
||
dataInterface: [],
|
||
businessFlow: [],
|
||
keyTechnologies: [],
|
||
attachments: [],
|
||
},
|
||
})),
|
||
],
|
||
},
|
||
|
||
// 1V1求职策略直播数据
|
||
jobStrategyLive: {
|
||
courseId: "job-strategy-001",
|
||
title: "1V1定制求职策略直播指导",
|
||
teacher: "企业资深HR - 魏立慧",
|
||
teacherAvatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png",
|
||
startTime: new Date().toISOString(),
|
||
viewers: 1,
|
||
description:
|
||
"企业资深一线HR,专注于为求职者提供一对一的个性化指导。通过真实招聘视角,深入剖析个人优势与短板、传授面试技巧、规划职业定位与发展路径,帮助学生快速提升求职竞争力。求职策略以实用落地为核心,注重互动交流与角色定位,让学员在轻松氛围中获得直击痛点的求职策略。",
|
||
status: "live",
|
||
duration: "60分钟",
|
||
},
|
||
|
||
// 求职策略直播纪要
|
||
jobStrategyNotes: {
|
||
title: "直播纪要",
|
||
keyPoints: [
|
||
{
|
||
id: 1,
|
||
time: "5:05",
|
||
type: "strategy",
|
||
title: "个人优势挖掘与定位",
|
||
content: "通过深入分析你的专业背景、项目经验和个人特质,确定最适合的求职方向。魏老师强调要从企业用人需求角度出发,找到个人优势与市场需求的最佳匹配点,避免盲目投递简历。"
|
||
},
|
||
{
|
||
id: 2,
|
||
time: "12:18",
|
||
type: "advice",
|
||
title: "简历包装的黄金法则",
|
||
content: "简历要讲故事,不是流水账。每一个项目经验都要用STAR法则(情景、任务、行动、结果)来描述,量化成果数据。技能部分要与目标岗位高度匹配,删除无关经历,确保HR在30秒内抓住重点。"
|
||
},
|
||
{
|
||
id: 3,
|
||
time: "10:32",
|
||
type: "technique",
|
||
title: "面试谈薪的心理博弈",
|
||
content: "薪资谈判不是讨价还价,而是价值展示。要提前调研行业薪资水平,准备3个薪资区间,学会用非货币化福利进行缓冲。魏老师分享了HR心理:他们更愿意给有准备、有底气的候选人更高的薪资。"
|
||
},
|
||
{
|
||
id: 4,
|
||
time: "8:45",
|
||
type: "strategy",
|
||
title: "面试流程全解析",
|
||
content: "从企业角度解读面试环节设置的真实意图:初面看基本素质、复面看专业能力、终面看文化匹配。每个环节的考核重点不同,要针对性准备。特别是行为面试题,要提前准备5-8个核心故事。"
|
||
},
|
||
{
|
||
id: 5,
|
||
time: "13:58",
|
||
type: "timeline",
|
||
title: "求职时间管理策略",
|
||
content: "制定3阶段求职计划:第1-2周完成市场调研和简历优化,第3-5周集中投递和面试准备,第6-8周面试冲刺和offer选择。合理安排时间节点,避免拖延症和焦虑情绪影响求职效果。"
|
||
},
|
||
{
|
||
id: 6,
|
||
time: "15:12",
|
||
type: "advice",
|
||
title: "职场新人的发展路径规划",
|
||
content: "入职后的前3年是职业发展的黄金期,要主动承担挑战性工作,建立个人品牌。魏老师建议制定'321职业规划':3年内成为业务骨干,2年内获得晋升机会,1年内建立核心竞争力。"
|
||
},
|
||
{
|
||
id: 7,
|
||
time: "20:25",
|
||
type: "qa",
|
||
title: "热门问题答疑",
|
||
content: "针对学员提出的跳槽时机、职业转型、学历不足等问题,魏老师给出针对性建议。特别强调要用成长思维面对职场挑战,每一次求职都是个人品牌的重新包装和升级。"
|
||
}
|
||
],
|
||
expertAdvices: [
|
||
"投递简历要有针对性,避免海投浪费时间",
|
||
"面试前深度研究目标公司业务模式和企业文化",
|
||
"用STAR法则准备5-8个核心项目故事",
|
||
"薪资谈判要基于充分市场调研,准备3个薪资区间",
|
||
"简历要突出量化成果,用数据说话",
|
||
"建立个人职业品牌,持续输出专业内容",
|
||
"保持学习心态,跟上行业发展趋势"
|
||
],
|
||
personalPlan: {
|
||
currentStatus: "求职准备阶段",
|
||
targetRole: "文旅产品策划师",
|
||
targetSalary: "6K-10K",
|
||
targetCompanies: ["携程", "马蜂窝", "途牛", "飞猪", "去哪儿"],
|
||
targetIndustries: ["在线旅游", "文化传媒", "主题乐园", "民宿酒店"],
|
||
strengthAreas: [
|
||
"创意策划能力",
|
||
"用户体验设计",
|
||
"数据分析思维",
|
||
"跨部门协作经验",
|
||
"文案撰写能力"
|
||
],
|
||
improvementAreas: [
|
||
"行业深度认知",
|
||
"商业模式理解",
|
||
"项目管理技能",
|
||
"用户调研方法",
|
||
"营销推广策略"
|
||
],
|
||
careerGoals: {
|
||
shortTerm: "3个月内获得心仪offer,快速适应新环境",
|
||
midTerm: "1年内成为产品策划骨干,主导重要项目",
|
||
longTerm: "3年内晋升为高级策划师,具备团队管理能力"
|
||
}
|
||
},
|
||
interviewPreparation: {
|
||
commonQuestions: [
|
||
{
|
||
question: "请介绍一下你最有成就感的项目经历",
|
||
tips: "用STAR法则,重点突出你的贡献和最终成果",
|
||
keywords: ["项目背景", "个人职责", "解决方案", "量化结果"]
|
||
},
|
||
{
|
||
question: "为什么选择文旅行业?",
|
||
tips: "结合个人兴趣和行业发展趋势,体现深度思考",
|
||
keywords: ["行业前景", "个人匹配", "职业规划", "价值认同"]
|
||
},
|
||
{
|
||
question: "如何看待文旅行业的未来发展?",
|
||
tips: "展现行业洞察力,结合实际案例分析",
|
||
keywords: ["数字化转型", "体验升级", "个性化需求", "可持续发展"]
|
||
}
|
||
],
|
||
skillAssessment: {
|
||
technical: ["方案设计", "数据分析", "用户调研", "项目管理"],
|
||
soft: ["沟通协调", "创新思维", "抗压能力", "学习能力"],
|
||
industry: ["市场敏感度", "用户洞察", "运营思维", "成本控制"]
|
||
}
|
||
},
|
||
upcomingActions: [
|
||
{
|
||
id: 1,
|
||
task: "简历优化升级",
|
||
description: "根据魏老师建议,重点突出文旅项目经验,量化成果数据",
|
||
deadline: "3天内",
|
||
priority: "high",
|
||
status: "PENDING",
|
||
checklist: [
|
||
"调整简历结构,突出核心竞争力",
|
||
"补充3个STAR格式的项目案例",
|
||
"优化技能关键词匹配度",
|
||
"完善自我评价和职业目标"
|
||
]
|
||
},
|
||
{
|
||
id: 2,
|
||
task: "准备3个项目案例详细介绍",
|
||
deadline: "下周二",
|
||
priority: "high",
|
||
status: "PENDING",
|
||
},
|
||
{
|
||
id: 3,
|
||
task: "练习2分钟自我介绍",
|
||
deadline: "本周日",
|
||
priority: "medium",
|
||
status: "PENDING",
|
||
},
|
||
{
|
||
id: 4,
|
||
task: "调研目标公司岗位要求",
|
||
deadline: "下周五",
|
||
priority: "medium",
|
||
status: "PENDING",
|
||
},
|
||
],
|
||
},
|
||
|
||
// 日历事件将在后面添加引用
|
||
};
|
||
|
||
// 获取指定日期的事项
|
||
export const getEventsForDate = (year, month, date) => {
|
||
// 格式化日期字符串 (YYYY-MM-DD)
|
||
const dateString = `${year}-${(month + 1).toString().padStart(2, "0")}-${date
|
||
.toString()
|
||
.padStart(2, "0")}`;
|
||
|
||
// 从 calendarEvents 中筛选匹配的事项
|
||
const matchingEvents = mockData.calendarEvents.filter((event) => {
|
||
const eventDate = event.startTime.split(" ")[0];
|
||
return eventDate === dateString;
|
||
});
|
||
|
||
return matchingEvents;
|
||
};
|
||
|
||
// 生成日历数据的辅助函数
|
||
export const generateCalendarDays = (
|
||
calendarEvents = [],
|
||
targetDate = new Date(),
|
||
enhancedTasks = []
|
||
) => {
|
||
const days = [];
|
||
const today = new Date();
|
||
const currentMonth = targetDate.getMonth();
|
||
const currentYear = targetDate.getFullYear();
|
||
const firstDay = new Date(currentYear, currentMonth, 1);
|
||
const lastDay = new Date(currentYear, currentMonth + 1, 0);
|
||
const daysInMonth = lastDay.getDate();
|
||
const startingDayOfWeek = firstDay.getDay();
|
||
|
||
// 添加前一个月的日期(灰色显示)
|
||
for (let i = startingDayOfWeek - 1; i >= 0; i--) {
|
||
const date = new Date(currentYear, currentMonth, -i);
|
||
days.push({
|
||
date: date.getDate(),
|
||
isCurrentMonth: false,
|
||
isToday: false,
|
||
hasEvent: false,
|
||
});
|
||
}
|
||
|
||
// 添加当前月的日期
|
||
for (let day = 1; day <= daysInMonth; day++) {
|
||
const isToday =
|
||
day === today.getDate() &&
|
||
currentMonth === today.getMonth() &&
|
||
currentYear === today.getFullYear();
|
||
|
||
// 检查是否有日历事件
|
||
const hasCalendarEvent = calendarEvents.some((event) => {
|
||
const eventDate = event.startTime.split(" ")[0];
|
||
return (
|
||
eventDate ===
|
||
`${currentYear}-${(currentMonth + 1).toString().padStart(2, "0")}-${day
|
||
.toString()
|
||
.padStart(2, "0")}`
|
||
);
|
||
});
|
||
|
||
// 检查是否有任务事项
|
||
const dateString = `${currentYear}-${(currentMonth + 1)
|
||
.toString()
|
||
.padStart(2, "0")}-${day.toString().padStart(2, "0")}`;
|
||
const hasTask = enhancedTasks.some((task) => task.date === dateString);
|
||
|
||
days.push({
|
||
date: day,
|
||
isCurrentMonth: true,
|
||
isToday,
|
||
hasEvent: hasCalendarEvent || hasTask,
|
||
});
|
||
}
|
||
|
||
// 添加下个月的日期(完整显示42天)
|
||
const totalCells = 42;
|
||
const remainingCells = totalCells - days.length;
|
||
for (let day = 1; day <= remainingCells; day++) {
|
||
days.push({
|
||
date: day,
|
||
isCurrentMonth: false,
|
||
isToday: false,
|
||
hasEvent: false,
|
||
});
|
||
}
|
||
|
||
return days;
|
||
};
|
||
|
||
// 日历工具函数
|
||
export const getMonthDays = (year, month) => {
|
||
const firstDay = new Date(year, month, 1);
|
||
const lastDay = new Date(year, month + 1, 0);
|
||
const daysInMonth = lastDay.getDate();
|
||
const startingDayOfWeek = firstDay.getDay();
|
||
|
||
const days = [];
|
||
|
||
// 添加上个月的末尾几天
|
||
const prevMonth = month === 0 ? 11 : month - 1;
|
||
const prevYear = month === 0 ? year - 1 : year;
|
||
const prevMonthLastDay = new Date(prevYear, prevMonth + 1, 0).getDate();
|
||
|
||
for (let i = startingDayOfWeek - 1; i >= 0; i--) {
|
||
days.push({
|
||
date: prevMonthLastDay - i,
|
||
month: prevMonth,
|
||
year: prevYear,
|
||
isCurrentMonth: false,
|
||
isToday: false,
|
||
});
|
||
}
|
||
|
||
// 添加当前月的天数
|
||
const today = new Date();
|
||
for (let day = 1; day <= daysInMonth; day++) {
|
||
const isToday =
|
||
today.getFullYear() === year &&
|
||
today.getMonth() === month &&
|
||
today.getDate() === day;
|
||
|
||
days.push({
|
||
date: day,
|
||
month: month,
|
||
year: year,
|
||
isCurrentMonth: true,
|
||
isToday,
|
||
});
|
||
}
|
||
|
||
// 补齐到42天(6周)
|
||
const nextMonth = month === 11 ? 0 : month + 1;
|
||
const nextYear = month === 11 ? year + 1 : year;
|
||
const remainingDays = 42 - days.length;
|
||
|
||
for (let day = 1; day <= remainingDays; day++) {
|
||
days.push({
|
||
date: day,
|
||
month: nextMonth,
|
||
year: nextYear,
|
||
isCurrentMonth: false,
|
||
isToday: false,
|
||
});
|
||
}
|
||
|
||
return days;
|
||
};
|
||
|
||
// 获取周的日期
|
||
export const getWeekDays = (date) => {
|
||
const week = [];
|
||
const startOfWeek = new Date(date);
|
||
const day = startOfWeek.getDay();
|
||
const diff = startOfWeek.getDate() - day;
|
||
startOfWeek.setDate(diff);
|
||
|
||
for (let i = 0; i < 7; i++) {
|
||
const weekDay = new Date(startOfWeek);
|
||
weekDay.setDate(startOfWeek.getDate() + i);
|
||
week.push(weekDay);
|
||
}
|
||
|
||
return week;
|
||
};
|
||
|
||
// 时间驱动的进度计算工具函数
|
||
export const calculateStageProgress = (stage, currentDate = new Date()) => {
|
||
const startDate = new Date(stage.startDate);
|
||
const endDate = new Date(stage.endDate);
|
||
const current = new Date(currentDate);
|
||
|
||
// 如果当前日期在阶段开始之前,进度为0%
|
||
if (current < startDate) {
|
||
return 0;
|
||
}
|
||
|
||
// 如果当前日期在阶段结束之后,进度为100%
|
||
if (current >= endDate) {
|
||
return 100;
|
||
}
|
||
|
||
// 计算当前阶段的进度百分比
|
||
const totalDuration = endDate.getTime() - startDate.getTime();
|
||
const elapsedDuration = current.getTime() - startDate.getTime();
|
||
const progressPercentage = (elapsedDuration / totalDuration) * 100;
|
||
|
||
// 限制在0%到100%之间
|
||
return Math.max(0, Math.min(100, Math.round(progressPercentage * 100) / 100));
|
||
};
|
||
|
||
// 获取当前活跃阶段
|
||
export const getCurrentActiveStage = (stages, currentDate = new Date()) => {
|
||
const current = new Date(currentDate);
|
||
|
||
for (const stage of stages) {
|
||
const startDate = new Date(stage.startDate);
|
||
const endDate = new Date(stage.endDate);
|
||
|
||
if (current >= startDate && current < endDate) {
|
||
return stage;
|
||
}
|
||
}
|
||
|
||
return null;
|
||
};
|
||
|
||
// 检查里程碑是否阻塞阶段切换
|
||
export const checkMilestoneBlockage = (
|
||
stages,
|
||
milestones,
|
||
currentDate = new Date()
|
||
) => {
|
||
const current = new Date(currentDate);
|
||
|
||
for (const stage of stages) {
|
||
const endDate = new Date(stage.endDate);
|
||
|
||
// 如果阶段时间已结束但状态不是completed
|
||
if (current >= endDate && stage.status !== "completed") {
|
||
// 检查是否有前置里程碑要求
|
||
if (stage.prerequisiteMilestone) {
|
||
const milestone = milestones.find(
|
||
(m) => m.id === stage.prerequisiteMilestone
|
||
);
|
||
if (milestone && milestone.status !== "completed") {
|
||
return {
|
||
isBlocked: true,
|
||
blockingMilestone: milestone,
|
||
stalledStage: stage,
|
||
message: `需要完成"${milestone.name}"才能进入下一阶段`,
|
||
};
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return { isBlocked: false };
|
||
};
|
||
|
||
// 动态更新学习阶段状态 - 修正版本,保持固定进度设置
|
||
export const updateStageStatuses = (learningPlan = new Date()) => {
|
||
const { learningStages, milestones } = learningPlan;
|
||
|
||
// 直接使用mockData中预设的状态和进度,不进行自动计算
|
||
// 这样确保能力跃升阶段保持60%,后续阶段保持locked状态0%
|
||
const updatedStages = learningStages.map((stage) => {
|
||
// 对于教务原型,我们使用固定的状态和进度,不依赖时间计算
|
||
let newStatus = stage.status;
|
||
let newProgressPercentage = stage.progressPercentage;
|
||
|
||
// 如果有里程碑依赖且里程碑未完成,则保持locked状态
|
||
if (stage.prerequisiteMilestone) {
|
||
const milestone = milestones.find(
|
||
(m) => m.id === stage.prerequisiteMilestone
|
||
);
|
||
if (milestone && milestone.status !== "completed") {
|
||
newStatus = "locked";
|
||
newProgressPercentage = 0;
|
||
}
|
||
}
|
||
|
||
return {
|
||
...stage,
|
||
status: newStatus,
|
||
progressPercentage: newProgressPercentage,
|
||
};
|
||
});
|
||
|
||
return updatedStages;
|
||
};
|
||
|
||
// 获取整体学习进度(用于原有的进度条显示)
|
||
export const getOverallProgress = (stages) => {
|
||
const totalDuration = stages.reduce((sum, stage) => sum + stage.duration, 0);
|
||
let completedDuration = 0;
|
||
|
||
for (const stage of stages) {
|
||
if (stage.status === "completed") {
|
||
completedDuration += stage.duration;
|
||
} else if (stage.status === "in_progress") {
|
||
completedDuration += (stage.duration * stage.progressPercentage) / 100;
|
||
break; // 当前阶段之后的不计算
|
||
} else {
|
||
break; // 未开始的阶段不计算
|
||
}
|
||
}
|
||
|
||
return (completedDuration / totalDuration) * 100;
|
||
};
|
||
|
||
// 面试直播间数据
|
||
mockData.interviewLiveRoom = {
|
||
videoUrl: "/videos/interview-demo.mp4",
|
||
position: "物联网实施工程师",
|
||
company: "苏州信息科技有限公司",
|
||
interviewTime: "2025-07-16 14:00",
|
||
round: "第一轮技术面试",
|
||
duration: "45分钟",
|
||
interviewer: {
|
||
name: "张建华",
|
||
title: "技术总监",
|
||
company: "苏州信息科技有限公司",
|
||
avatar: "/images/experts/expert1.jpg",
|
||
},
|
||
tips: [
|
||
"准备好简历和项目经历介绍",
|
||
"了解公司业务和岗位要求",
|
||
"准备技术相关问题的回答",
|
||
"保持良好的沟通状态",
|
||
],
|
||
interviewNotes: {
|
||
title: "面试笔记",
|
||
keyPoints: [
|
||
{
|
||
id: 1,
|
||
time: "02:15",
|
||
type: "question",
|
||
title: "自我介绍",
|
||
content:
|
||
"请简单介绍一下你的教育背景和项目经历,重点说明物联网相关的项目经验。",
|
||
},
|
||
{
|
||
id: 2,
|
||
time: "08:30",
|
||
type: "answer",
|
||
title: "项目经验回答",
|
||
content:
|
||
"介绍了智慧农业物联网系统项目,包括传感器部署、数据采集、云平台搭建等关键技术点。",
|
||
},
|
||
{
|
||
id: 3,
|
||
time: "15:45",
|
||
type: "question",
|
||
title: "MQTT协议理解",
|
||
content:
|
||
"请详细说明MQTT协议的特点,以及在物联网项目中如何选择合适的QoS级别?",
|
||
},
|
||
{
|
||
id: 4,
|
||
time: "22:10",
|
||
type: "suggestion",
|
||
title: "技术深度建议",
|
||
content:
|
||
"建议深入学习边缘计算相关技术,了解EdgeX Foundry等开源框架,这对物联网实施工程师很重要。",
|
||
},
|
||
{
|
||
id: 5,
|
||
time: "28:30",
|
||
type: "keypoint",
|
||
title: "岗位核心要求",
|
||
content:
|
||
"强调了现场实施能力的重要性,需要具备良好的客户沟通能力和问题解决能力。",
|
||
},
|
||
{
|
||
id: 6,
|
||
time: "35:20",
|
||
type: "question",
|
||
title: "技术选型问题",
|
||
content:
|
||
"在物联网项目中,如何选择合适的通信协议?请比较LoRa、NB-IoT、4G等技术的应用场景。",
|
||
},
|
||
{
|
||
id: 7,
|
||
time: "42:00",
|
||
type: "keypoint",
|
||
title: "面试总结",
|
||
content:
|
||
"整体表现良好,技术基础扎实,建议加强实际项目经验积累,特别是大型项目的实施经验。",
|
||
},
|
||
],
|
||
},
|
||
};
|
||
|
||
// 生成Dashboard课程数据的函数(需要在courseLiveList定义后调用)
|
||
const generateDashboardCourses = (courseLiveList) => {
|
||
const today = new Date();
|
||
today.setHours(0, 0, 0, 0);
|
||
|
||
// 获取所有课程
|
||
const allCourses = [];
|
||
courseLiveList.forEach(unit => {
|
||
unit.courses.forEach(course => {
|
||
allCourses.push({
|
||
...course,
|
||
unitName: unit.unitName
|
||
});
|
||
});
|
||
});
|
||
|
||
// 根据日期排序
|
||
allCourses.sort((a, b) => new Date(a.date) - new Date(b.date));
|
||
|
||
// 查找今天的课程
|
||
const todayStr = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`;
|
||
const todaysCourses = allCourses.filter(course => course.date === todayStr);
|
||
|
||
// 查找下一节课(今天之后的第一节课)
|
||
const nextCourse = allCourses.find(course => new Date(course.date) > today);
|
||
|
||
// 查找最近的课程(最近7天内已完成的课程)
|
||
const sevenDaysAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
|
||
const recentCourses = allCourses
|
||
.filter(course => {
|
||
const courseDate = new Date(course.date);
|
||
return courseDate < today && courseDate >= sevenDaysAgo;
|
||
})
|
||
.slice(-3) // 取最近3个
|
||
.reverse(); // 按时间倒序
|
||
|
||
// 统计数据
|
||
const completedCourses = allCourses.filter(course => course.completed).length;
|
||
const totalCourses = allCourses.length;
|
||
const overallProgress = Math.round((completedCourses / totalCourses) * 100);
|
||
|
||
return {
|
||
todaysCourses: todaysCourses.map(course => ({
|
||
id: course.courseId,
|
||
courseName: course.courseName,
|
||
teacher: course.teacherName,
|
||
time: "20:00-21:00", // 固定时间
|
||
location: "线上直播",
|
||
status: course.current ? "直播中" : "待开始",
|
||
unit: course.unitName
|
||
})),
|
||
nextCourse: nextCourse ? {
|
||
id: nextCourse.courseId,
|
||
courseName: nextCourse.courseName,
|
||
teacher: nextCourse.teacherName,
|
||
date: nextCourse.date,
|
||
time: "20:00",
|
||
location: "线上直播",
|
||
unit: nextCourse.unitName
|
||
} : null,
|
||
recentCourses: recentCourses.map(course => ({
|
||
id: course.courseId,
|
||
courseName: course.courseName,
|
||
date: course.date,
|
||
teacher: course.teacherName,
|
||
unit: course.unitName
|
||
}))
|
||
};
|
||
};
|
||
|
||
// 添加Dashboard主页数据(先定义结构,稍后填充数据)
|
||
mockData.dashboardStatistics = {
|
||
// 概览数据(临时数据,稍后更新)
|
||
overview: {
|
||
totalCourses: 100,
|
||
completedCourses: 100,
|
||
ongoingCourses: 2,
|
||
overallProgress: 100,
|
||
totalCredits: 99,
|
||
currentRank: 1,
|
||
},
|
||
|
||
// 课程数据(临时数据,稍后更新)
|
||
courses: {
|
||
todaysCourses: [],
|
||
nextCourse: null,
|
||
recentCourses: []
|
||
},
|
||
|
||
// 任务数据(临时数据,稍后更新)
|
||
tasks: {
|
||
todayTasks: [],
|
||
weekTasks: [],
|
||
allTasks: []
|
||
},
|
||
|
||
// 排名数据
|
||
ranking: {
|
||
myRank: {
|
||
rank: 1,
|
||
totalStudents: 45,
|
||
trend: "up",
|
||
change: 0,
|
||
},
|
||
topStudents: [
|
||
{
|
||
rank: 1,
|
||
studentId: "2325030612",
|
||
studentName: "万圆",
|
||
name: "万圆",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
|
||
score: 99,
|
||
credits: 99,
|
||
isMe: true,
|
||
},
|
||
{
|
||
rank: 2,
|
||
studentId: "2325030601",
|
||
studentName: "李阳",
|
||
name: "李阳",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/07a0a14c8c8d5476b2c8d54de12e6a06.jpg",
|
||
score: 97,
|
||
credits: 97,
|
||
},
|
||
{
|
||
rank: 3,
|
||
studentId: "2325030599",
|
||
studentName: "何晓彤",
|
||
name: "何晓彤",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13823046201f0ef17517fb46da12bc35.jpg",
|
||
score: 96,
|
||
credits: 96,
|
||
},
|
||
{
|
||
rank: 4,
|
||
studentId: "2325030602",
|
||
studentName: "李伟",
|
||
name: "李伟",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13c5709a3993fdf353d147209f8145cb.jpg",
|
||
score: 95,
|
||
credits: 95,
|
||
},
|
||
{
|
||
rank: 5,
|
||
studentId: "2325030598",
|
||
studentName: "程子涵",
|
||
name: "程子涵",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
|
||
score: 94,
|
||
credits: 94,
|
||
},
|
||
{
|
||
rank: 6,
|
||
studentId: "2325030603",
|
||
studentName: "马一鸣",
|
||
name: "马一鸣",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
|
||
score: 93,
|
||
credits: 93,
|
||
},
|
||
{
|
||
rank: 7,
|
||
studentId: "2325030604",
|
||
studentName: "唐思远",
|
||
name: "唐思远",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 92,
|
||
credits: 92,
|
||
},
|
||
{
|
||
rank: 8,
|
||
studentId: "2325030597",
|
||
studentName: "魏韬",
|
||
name: "魏韬",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 92,
|
||
credits: 92,
|
||
},
|
||
{
|
||
rank: 9,
|
||
studentId: "2325030596",
|
||
studentName: "赵子墨",
|
||
name: "赵子墨",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 90,
|
||
credits: 90,
|
||
},
|
||
{
|
||
rank: 10,
|
||
studentId: "2325030605",
|
||
studentName: "梁静怡",
|
||
name: "梁静怡",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 89,
|
||
credits: 89,
|
||
},
|
||
],
|
||
classInfo: {
|
||
className: "文旅班",
|
||
totalStudents: 45,
|
||
averageScore: 75.5,
|
||
},
|
||
},
|
||
},
|
||
|
||
// 添加Profile个人档案页面数据
|
||
mockData.profileOverview = {
|
||
// 学生基本信息
|
||
studentInfo: {
|
||
name: "万圆",
|
||
realName: "万圆",
|
||
studentId: "2426030612",
|
||
studentNo: "2426030612",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
|
||
school: "苏州工艺美术职业技术学院",
|
||
major: "数字媒体艺术设计",
|
||
className: "文旅班",
|
||
grade: "2024级",
|
||
studyPhase: "复合能力培养",
|
||
stageName: "商业活动策划",
|
||
mbti: "ENFJ",
|
||
mbtiType: "ENFJ",
|
||
enrollmentDate: "2024-09-01",
|
||
expectedGraduation: "2027-06-30",
|
||
credits: 99,
|
||
gpa: 4.8,
|
||
classRank: 1,
|
||
totalStudents: 45,
|
||
myRank: {
|
||
rank: 1,
|
||
score: 99,
|
||
},
|
||
},
|
||
|
||
// 学习统计
|
||
studyStatistics: {
|
||
studyTime: {
|
||
personal: 273,
|
||
classAverage: 242,
|
||
},
|
||
courseCompletion: {
|
||
personalProgress: 100,
|
||
classAverageProgress: 89,
|
||
},
|
||
homeworkCompletion: {
|
||
personalProgress: 100,
|
||
classAverageProgress: 71,
|
||
},
|
||
attendance: {
|
||
attendanceRate: 98,
|
||
absenceRate: 2,
|
||
},
|
||
ranking: {
|
||
study: { rank: 1, total: 45 },
|
||
attendance: { rank: 1, total: 45 },
|
||
homework: { rank: 1, total: 45 },
|
||
},
|
||
},
|
||
|
||
// 学习进度
|
||
learningProgress: {
|
||
overallProgress: 100,
|
||
currentStage: "复合能力培养",
|
||
stageProgress: 65,
|
||
completedModules: [
|
||
"基础理论",
|
||
"设计软件应用",
|
||
"创意思维训练",
|
||
"项目管理基础",
|
||
],
|
||
ongoingModules: [
|
||
"展会策划实务",
|
||
"文旅产业研究",
|
||
"数字创意设计",
|
||
"品牌营销策略",
|
||
],
|
||
upcomingModules: [
|
||
"实习实训",
|
||
"毕业设计",
|
||
],
|
||
},
|
||
|
||
// 技能标签
|
||
skills: [
|
||
"Photoshop精通",
|
||
"Illustrator熟练",
|
||
"After Effects",
|
||
"展会策划",
|
||
"文案撰写",
|
||
"创意设计",
|
||
"项目管理",
|
||
"团队协作",
|
||
],
|
||
|
||
// 获得的证书
|
||
certificates: [
|
||
{
|
||
name: "Adobe认证设计师",
|
||
issueDate: "2024-12-15",
|
||
issuer: "Adobe",
|
||
},
|
||
{
|
||
name: "展会策划师普通岗",
|
||
issueDate: "2024-11-20",
|
||
issuer: "中国会展协会",
|
||
},
|
||
],
|
||
|
||
// 参与的项目
|
||
projects: [
|
||
{
|
||
name: "苏州园林文创设计",
|
||
role: "主设计师",
|
||
period: "2024.10 - 2024.12",
|
||
status: "已完成",
|
||
},
|
||
{
|
||
name: "江南水乡旅游品牌策划",
|
||
role: "策划组长",
|
||
period: "2024.11 - 至今",
|
||
status: "进行中",
|
||
},
|
||
],
|
||
|
||
// 排名信息(与dashboard共享)
|
||
ranking: {
|
||
myRank: {
|
||
rank: 1,
|
||
score: 99,
|
||
totalStudents: 45,
|
||
trend: "stable",
|
||
change: 0,
|
||
},
|
||
classInfo: {
|
||
className: "文旅班",
|
||
totalStudents: 45,
|
||
averageScore: 75.5,
|
||
},
|
||
rankings: [
|
||
{
|
||
rank: 1,
|
||
studentId: "2325030612",
|
||
studentName: "万圆",
|
||
name: "万圆",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
|
||
score: 99,
|
||
credits: 99,
|
||
isMe: true,
|
||
},
|
||
{
|
||
rank: 2,
|
||
studentId: "2325030601",
|
||
studentName: "李阳",
|
||
name: "李阳",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/07a0a14c8c8d5476b2c8d54de12e6a06.jpg",
|
||
score: 97,
|
||
credits: 97,
|
||
},
|
||
{
|
||
rank: 3,
|
||
studentId: "2325030599",
|
||
studentName: "何晓彤",
|
||
name: "何晓彤",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13823046201f0ef17517fb46da12bc35.jpg",
|
||
score: 96,
|
||
credits: 96,
|
||
},
|
||
{
|
||
rank: 4,
|
||
studentId: "2325030602",
|
||
studentName: "李伟",
|
||
name: "李伟",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13c5709a3993fdf353d147209f8145cb.jpg",
|
||
score: 95,
|
||
credits: 95,
|
||
},
|
||
{
|
||
rank: 5,
|
||
studentId: "2325030598",
|
||
studentName: "程子涵",
|
||
name: "程子涵",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
|
||
score: 94,
|
||
credits: 94,
|
||
},
|
||
{
|
||
rank: 6,
|
||
studentId: "2325030603",
|
||
studentName: "马一鸣",
|
||
name: "马一鸣",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
|
||
score: 93,
|
||
credits: 93,
|
||
},
|
||
{
|
||
rank: 7,
|
||
studentId: "2325030604",
|
||
studentName: "唐思远",
|
||
name: "唐思远",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 92,
|
||
credits: 92,
|
||
},
|
||
{
|
||
rank: 8,
|
||
studentId: "2325030597",
|
||
studentName: "魏韬",
|
||
name: "魏韬",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 92,
|
||
credits: 92,
|
||
},
|
||
{
|
||
rank: 9,
|
||
studentId: "2325030596",
|
||
studentName: "赵子墨",
|
||
name: "赵子墨",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 90,
|
||
credits: 90,
|
||
},
|
||
{
|
||
rank: 10,
|
||
studentId: "2325030605",
|
||
studentName: "梁静怡",
|
||
name: "梁静怡",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 89,
|
||
credits: 89,
|
||
},
|
||
],
|
||
classInfo: {
|
||
className: "文旅班",
|
||
totalStudents: 45,
|
||
averageScore: 75.5,
|
||
myPercentile: 100,
|
||
},
|
||
},
|
||
};
|
||
|
||
// 课程直播间的课程列表数据(从CSV生成)
|
||
// 重复定义已删除
|
||
|
||
// 面试直播间数据
|
||
mockData.interviewLiveRoom = {
|
||
videoUrl: "/videos/interview-demo.mp4",
|
||
position: "物联网实施工程师",
|
||
company: "苏州信息科技有限公司",
|
||
interviewTime: "2025-07-16 14:00",
|
||
round: "第一轮技术面试",
|
||
duration: "45分钟",
|
||
interviewer: {
|
||
name: "张建华",
|
||
title: "技术总监",
|
||
company: "苏州信息科技有限公司",
|
||
avatar: "/images/experts/expert1.jpg",
|
||
},
|
||
tips: [
|
||
"准备好简历和项目经历介绍",
|
||
"了解公司业务和岗位要求",
|
||
"准备技术相关问题的回答",
|
||
"保持良好的沟通状态",
|
||
],
|
||
interviewNotes: {
|
||
title: "面试笔记",
|
||
keyPoints: [
|
||
{
|
||
id: 1,
|
||
time: "02:15",
|
||
type: "question",
|
||
title: "自我介绍",
|
||
content:
|
||
"请简单介绍一下你的教育背景和项目经历,重点说明物联网相关的项目经验。",
|
||
},
|
||
{
|
||
id: 2,
|
||
time: "08:30",
|
||
type: "answer",
|
||
title: "项目经验回答",
|
||
content:
|
||
"介绍了智慧农业物联网系统项目,包括传感器部署、数据采集、云平台搭建等关键技术点。",
|
||
},
|
||
{
|
||
id: 3,
|
||
time: "15:45",
|
||
type: "question",
|
||
title: "MQTT协议理解",
|
||
content:
|
||
"请详细说明MQTT协议的特点,以及在物联网项目中如何选择合适的QoS级别?",
|
||
},
|
||
{
|
||
id: 4,
|
||
time: "22:10",
|
||
type: "suggestion",
|
||
title: "技术深度建议",
|
||
content:
|
||
"建议深入学习边缘计算相关技术,了解EdgeX Foundry等开源框架,这对物联网实施工程师很重要。",
|
||
},
|
||
{
|
||
id: 5,
|
||
time: "28:30",
|
||
type: "keypoint",
|
||
title: "岗位核心要求",
|
||
content:
|
||
"强调了现场实施能力的重要性,需要具备良好的客户沟通能力和问题解决能力。",
|
||
},
|
||
{
|
||
id: 6,
|
||
time: "35:20",
|
||
type: "question",
|
||
title: "技术选型问题",
|
||
content:
|
||
"在物联网项目中,如何选择合适的通信协议?请比较LoRa、NB-IoT、4G等技术的应用场景。",
|
||
},
|
||
{
|
||
id: 7,
|
||
time: "42:00",
|
||
type: "keypoint",
|
||
title: "面试总结",
|
||
content:
|
||
"整体表现良好,技术基础扎实,建议加强实际项目经验积累,特别是大型项目的实施经验。",
|
||
},
|
||
],
|
||
},
|
||
};
|
||
|
||
mockData.profileOverview = {
|
||
// 学生基本信息
|
||
studentInfo: {
|
||
name: "万圆",
|
||
realName: "万圆",
|
||
studentId: "2426030612",
|
||
studentNo: "2426030612",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
|
||
school: "苏州信息职业技术学院",
|
||
major: "旅游管理",
|
||
className: "文旅班",
|
||
grade: "2024级",
|
||
studyPhase: "复合能力培养",
|
||
stageName: "商业活动策划班",
|
||
mbti: "ENFJ",
|
||
mbtiType: "ENFJ",
|
||
enrollmentDate: "2024-09-01",
|
||
expectedGraduation: "2027-06-30",
|
||
credits: 99,
|
||
gpa: 4.8,
|
||
classRank: 1,
|
||
totalStudents: 45,
|
||
myRank: {
|
||
rank: 1,
|
||
score: 99,
|
||
},
|
||
},
|
||
|
||
// 学习统计
|
||
studyStatistics: {
|
||
studyTime: {
|
||
personal: 273,
|
||
classAverage: 242,
|
||
},
|
||
courseCompletion: {
|
||
personalProgress: 100,
|
||
classAverageProgress: 89,
|
||
},
|
||
homeworkCompletion: {
|
||
personalProgress: 100,
|
||
classAverageProgress: 71,
|
||
},
|
||
attendance: {
|
||
attendanceRate: 98,
|
||
absenceRate: 2,
|
||
},
|
||
ranking: {
|
||
study: { rank: 1, total: 45 },
|
||
attendance: { rank: 1, total: 45 },
|
||
homework: { rank: 1, total: 45 },
|
||
},
|
||
},
|
||
|
||
// 学习进度
|
||
learningProgress: {
|
||
overallProgress: 100,
|
||
currentStage: "复合能力培养",
|
||
stageProgress: 65,
|
||
completedModules: [
|
||
"基础理论",
|
||
"设计软件应用",
|
||
"创意思维训练",
|
||
"项目管理基础",
|
||
],
|
||
ongoingModules: [
|
||
"展会策划实务",
|
||
"文旅产业研究",
|
||
"数字创意设计",
|
||
"品牌营销策略",
|
||
],
|
||
upcomingModules: [
|
||
"实习实训",
|
||
"毕业设计",
|
||
],
|
||
},
|
||
|
||
// 技能标签
|
||
skills: [
|
||
"Photoshop精通",
|
||
"Illustrator熟练",
|
||
"After Effects",
|
||
"展会策划",
|
||
"文案撰写",
|
||
"创意设计",
|
||
"项目管理",
|
||
"团队协作",
|
||
],
|
||
|
||
// 获得的证书
|
||
certificates: [
|
||
{
|
||
name: "Adobe认证设计师",
|
||
issueDate: "2024-12-15",
|
||
issuer: "Adobe",
|
||
},
|
||
{
|
||
name: "展会策划师普通岗",
|
||
issueDate: "2024-11-20",
|
||
issuer: "中国会展协会",
|
||
},
|
||
],
|
||
|
||
// 参与的项目
|
||
projects: [
|
||
{
|
||
name: "苏州园林文创设计",
|
||
role: "主设计师",
|
||
period: "2024.10 - 2024.12",
|
||
status: "已完成",
|
||
},
|
||
{
|
||
name: "江南水乡旅游品牌策划",
|
||
role: "策划组长",
|
||
period: "2024.11 - 至今",
|
||
status: "进行中",
|
||
},
|
||
],
|
||
|
||
// 排名信息(与dashboard共享)
|
||
ranking: {
|
||
myRank: {
|
||
rank: 1,
|
||
score: 99,
|
||
totalStudents: 45,
|
||
trend: "stable",
|
||
change: 0,
|
||
},
|
||
classInfo: {
|
||
className: "文旅班",
|
||
totalStudents: 45,
|
||
averageScore: 75.5,
|
||
},
|
||
rankings: [
|
||
{
|
||
rank: 1,
|
||
studentId: "2325030612",
|
||
studentName: "万圆",
|
||
name: "万圆",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
|
||
score: 99,
|
||
credits: 99,
|
||
isMe: true,
|
||
},
|
||
{
|
||
rank: 2,
|
||
studentId: "2325030601",
|
||
studentName: "李阳",
|
||
name: "李阳",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/07a0a14c8c8d5476b2c8d54de12e6a06.jpg",
|
||
score: 97,
|
||
credits: 97,
|
||
},
|
||
{
|
||
rank: 3,
|
||
studentId: "2325030599",
|
||
studentName: "何晓彤",
|
||
name: "何晓彤",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13823046201f0ef17517fb46da12bc35.jpg",
|
||
score: 96,
|
||
credits: 96,
|
||
},
|
||
{
|
||
rank: 4,
|
||
studentId: "2325030602",
|
||
studentName: "李伟",
|
||
name: "李伟",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13c5709a3993fdf353d147209f8145cb.jpg",
|
||
score: 95,
|
||
credits: 95,
|
||
},
|
||
{
|
||
rank: 5,
|
||
studentId: "2325030598",
|
||
studentName: "程子涵",
|
||
name: "程子涵",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
|
||
score: 94,
|
||
credits: 94,
|
||
},
|
||
{
|
||
rank: 6,
|
||
studentId: "2325030603",
|
||
studentName: "马一鸣",
|
||
name: "马一鸣",
|
||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
|
||
score: 93,
|
||
credits: 93,
|
||
},
|
||
{
|
||
rank: 7,
|
||
studentId: "2325030604",
|
||
studentName: "唐思远",
|
||
name: "唐思远",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 92,
|
||
credits: 92,
|
||
},
|
||
{
|
||
rank: 8,
|
||
studentId: "2325030597",
|
||
studentName: "魏韬",
|
||
name: "魏韬",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 92,
|
||
credits: 92,
|
||
},
|
||
{
|
||
rank: 9,
|
||
studentId: "2325030596",
|
||
studentName: "赵子墨",
|
||
name: "赵子墨",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 90,
|
||
credits: 90,
|
||
},
|
||
{
|
||
rank: 10,
|
||
studentId: "2325030605",
|
||
studentName: "梁静怡",
|
||
name: "梁静怡",
|
||
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
|
||
score: 89,
|
||
credits: 89,
|
||
},
|
||
],
|
||
classInfo: {
|
||
className: "文旅班",
|
||
totalStudents: 45,
|
||
averageScore: 75.5,
|
||
myPercentile: 100,
|
||
},
|
||
},
|
||
};
|
||
|
||
// 课程直播间的课程列表数据(从CSV生成)
|
||
|
||
mockData.courseLiveList = generateCourseLiveListFromCalendar(allCalendarEvents);
|
||
|
||
// 生成公共课程列表
|
||
mockData.publicCourseLiveList = generatePublicCourseLiveList(allCalendarEvents);
|
||
|
||
// 生成垂直能力课列表(传入unitPosters以包含海报数据)
|
||
mockData.verticalCourseLiveList = generateVerticalCourseLiveList(allCalendarEvents, mockData.unitPosters);
|
||
|
||
// 动态更新垂直能力课作业列表
|
||
if (mockData.homework && mockData.homework[1]) {
|
||
const verticalHomeworkList = [];
|
||
let homeworkId = 1;
|
||
|
||
// 遍历所有垂直能力课单元
|
||
mockData.verticalCourseLiveList.forEach(unit => {
|
||
unit.courses.forEach(course => {
|
||
// 判断课程状态
|
||
let level = "locked";
|
||
if (course.completed) {
|
||
level = "completed";
|
||
} else if (course.current) {
|
||
level = "in-progress";
|
||
}
|
||
|
||
const homeworkItem = {
|
||
id: homeworkId++,
|
||
name: course.courseName,
|
||
level: level,
|
||
unitName: unit.unitName,
|
||
teacherName: course.teacherName,
|
||
date: course.date
|
||
};
|
||
|
||
// 为展会主题与品牌定位课程添加特殊标记(使其可点击)
|
||
if (course.courseName === "展会主题与品牌定位" && unit.unitName === "消费电子展品牌策划与执行") {
|
||
homeworkItem.isShowCase = true;
|
||
homeworkItem.previewUrl = "https://du9uay.github.io/zhanhui/";
|
||
}
|
||
|
||
verticalHomeworkList.push(homeworkItem);
|
||
});
|
||
});
|
||
|
||
// 更新垂直能力课作业列表
|
||
mockData.homework[1].list = verticalHomeworkList;
|
||
}
|
||
|
||
// 在courseLiveList定义后,更新dashboardStatistics的课程和任务数据
|
||
const dashboardCourseData = generateDashboardCourses(mockData.courseLiveList);
|
||
|
||
// 更新课程数据
|
||
mockData.dashboardStatistics.courses = {
|
||
todaysCourses: dashboardCourseData.todaysCourses,
|
||
nextCourse: dashboardCourseData.nextCourse,
|
||
recentCourses: dashboardCourseData.recentCourses
|
||
};
|
||
|
||
// 更新任务数据
|
||
(() => {
|
||
const today = new Date();
|
||
today.setHours(0, 0, 0, 0);
|
||
const todayStr = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`;
|
||
|
||
// 获取今天的课程作为今日任务
|
||
const todayTasks = dashboardCourseData.todaysCourses.map((course, index) => ({
|
||
id: index + 1,
|
||
title: `完成${course.courseName}课程学习`,
|
||
courseName: course.courseName,
|
||
deadline: "今天 21:00",
|
||
priority: index === 0 ? "high" : index === 1 ? "medium" : "low",
|
||
status: course.status === "直播中" ? "IN_PROGRESS" : "PENDING",
|
||
teacher: course.teacher,
|
||
unit: course.unit
|
||
}));
|
||
|
||
// 获取未来7天的课程作为周任务
|
||
const futureDate = new Date(today.getTime() + 7 * 24 * 60 * 60 * 1000);
|
||
const weekTasks = [];
|
||
mockData.courseLiveList.forEach(unit => {
|
||
unit.courses.forEach(course => {
|
||
const courseDate = new Date(course.date);
|
||
if (courseDate > today && courseDate <= futureDate) {
|
||
weekTasks.push({
|
||
id: weekTasks.length + 1,
|
||
title: `预习${course.courseName}`,
|
||
date: course.date,
|
||
status: "PENDING",
|
||
courseName: course.courseName,
|
||
teacher: course.teacherName,
|
||
unit: unit.unitName
|
||
});
|
||
}
|
||
});
|
||
});
|
||
|
||
// 生成allTasks - 基于所有课程数据
|
||
const allTasks = [];
|
||
let taskId = 1;
|
||
|
||
mockData.courseLiveList.forEach(unit => {
|
||
unit.courses.forEach(course => {
|
||
const courseDate = new Date(course.date);
|
||
const status = course.completed ? 'COMPLETED' :
|
||
course.current ? 'IN_PROGRESS' :
|
||
courseDate > today ? 'PENDING' : 'COMPLETED';
|
||
|
||
allTasks.push({
|
||
id: taskId++,
|
||
title: `完成${course.courseName}课程学习`,
|
||
date: course.date,
|
||
time: '20:00',
|
||
type: 'HOMEWORK',
|
||
courseName: course.courseName,
|
||
status: status,
|
||
teacherName: course.teacherName,
|
||
teacherAvatar: 'https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp',
|
||
duration: '1小时',
|
||
unit: unit.unitName
|
||
});
|
||
});
|
||
});
|
||
|
||
mockData.dashboardStatistics.tasks = {
|
||
todayTasks: [
|
||
{
|
||
"id": 48,
|
||
"title": "完成AIGC的基本概念与各领域的应用课程学习",
|
||
"courseName": "AIGC的基本概念与各领域的应用",
|
||
"date": "2025-09-03",
|
||
"deadline": "2025-09-03 21:00",
|
||
"priority": "high",
|
||
"status": "IN_PROGRESS",
|
||
"teacher": "赵志强",
|
||
"unit": "AIGC人工智能生成内容",
|
||
"type": "course"
|
||
}
|
||
],
|
||
weekTasks: [
|
||
{
|
||
"id": 47,
|
||
"title": "完成AIGC发展简史与基本逻辑课程学习",
|
||
"courseName": "AIGC发展简史与基本逻辑",
|
||
"date": "2025-09-02",
|
||
"deadline": "2025-09-02 21:00",
|
||
"priority": "low",
|
||
"status": "COMPLETED",
|
||
"teacher": "赵志强",
|
||
"unit": "AIGC人工智能生成内容",
|
||
"type": "course"
|
||
},
|
||
{
|
||
"id": 48,
|
||
"title": "完成AIGC的基本概念与各领域的应用课程学习",
|
||
"courseName": "AIGC的基本概念与各领域的应用",
|
||
"date": "2025-09-03",
|
||
"deadline": "2025-09-03 21:00",
|
||
"priority": "high",
|
||
"status": "IN_PROGRESS",
|
||
"teacher": "赵志强",
|
||
"unit": "AIGC人工智能生成内容",
|
||
"type": "course"
|
||
},
|
||
{
|
||
"id": 49,
|
||
"title": "完成AIGC语言模型:chatgpt的灵活应...课程学习",
|
||
"courseName": "AIGC语言模型:chatgpt的灵活应用",
|
||
"date": "2025-09-04",
|
||
"deadline": "2025-09-04 21:00",
|
||
"priority": "medium",
|
||
"status": "PENDING",
|
||
"teacher": "赵志强",
|
||
"unit": "AIGC人工智能生成内容",
|
||
"type": "course"
|
||
}
|
||
],
|
||
allTasks: generateTasksFromCalendarEvents(allCalendarEvents)
|
||
};
|
||
})();
|
||
|
||
// 更新概览数据
|
||
mockData.dashboardStatistics.overview.completedCourses = mockData.courseLiveList.reduce((acc, unit) =>
|
||
acc + unit.courses.filter(c => c.completed).length, 0);
|
||
mockData.dashboardStatistics.overview.ongoingCourses = dashboardCourseData.todaysCourses.filter(c => c.status === "直播中").length;
|
||
// mockData.dashboardStatistics.overview.overallProgress = Math.round(
|
||
// (mockData.dashboardStatistics.overview.completedCourses / mockData.dashboardStatistics.overview.totalCourses) * 100
|
||
// );
|
||
|
||
// 添加日历事件到dashboardStatistics
|
||
mockData.dashboardStatistics.calendarEvents = mockData.calendarEvents;
|
||
|
||
// 模拟数据加载完成
|