feat: 添加AI课程集成和修复初始化错误

- 将终生学习系统课添加到公共课直播间
- 修复allCalendarEvents初始化顺序问题
- 更正AI课程导师为李奇
- 添加AI课程与日历页面同步功能
This commit is contained in:
KQL
2025-09-07 23:09:48 +08:00
parent 6337cc4812
commit 27f2339c9e
81 changed files with 41799 additions and 1654 deletions

View File

@@ -29,15 +29,26 @@ export default ({ visible, onClose, data }) => {
if (studentInfo) {
// 处理教育经历
resumeData.educational_experience = studentInfo.educational_experience || ["相关专业大学 本科"];
if (studentInfo.education) {
resumeData.educational_experience = [
`${studentInfo.education.university || '苏州信息职业技术学院'} ${studentInfo.education.period || '2020.9 - 2023.6'}`
];
} else {
resumeData.educational_experience = studentInfo.educational_experience || ["相关专业大学 本科"];
}
// 处理项目经历
if (studentInfo.project_experience) {
// 处理项目经历 - 支持新格式
if (studentInfo.projectExperience) {
// 新格式projectExperience是字符串
resumeData.project_experience = [{
name: "项目经历",
description: studentInfo.projectExperience
}];
} else if (studentInfo.project_experience) {
// 旧格式兼容
if (Array.isArray(studentInfo.project_experience)) {
// 如果已经是数组格式
resumeData.project_experience = studentInfo.project_experience;
} else if (typeof studentInfo.project_experience === 'object') {
// 如果是对象格式,转换为数组
const proj = studentInfo.project_experience;
resumeData.project_experience = [
{
@@ -48,10 +59,18 @@ export default ({ visible, onClose, data }) => {
}
}
// 处理核心技能和复合技能
resumeData.core_skills = studentInfo.core_skills || [];
resumeData.compound_skills = studentInfo.compound_skills || [];
resumeData.personal_summary = studentInfo.personal_summary || "具有扎实的专业基础和实践经验";
// 处理专业技能 - 支持新格式
if (studentInfo.skills) {
// 新格式skills是字符串
resumeData.skills_text = studentInfo.skills;
} else {
// 旧格式兼容
resumeData.core_skills = studentInfo.core_skills || [];
resumeData.compound_skills = studentInfo.compound_skills || [];
}
// 处理个人总结 - 支持新格式
resumeData.personal_summary = studentInfo.personalSummary || studentInfo.personal_summary || "具有扎实的专业基础和实践经验";
}
return (
@@ -107,32 +126,38 @@ export default ({ visible, onClose, data }) => {
{/* 专业技能 */}
<li className="resume-info-moda-item">
<p className="resume-info-moda-item-title">专业技能</p>
<ul className="professional-skills-list">
{resumeData.core_skills && resumeData.core_skills.length > 0 && (
<li className="professional-skills-list-item">
<p className="skill-name">核心能力</p>
<div className="core-capabilities-list">
{resumeData.core_skills.map((skill, index) => (
<p key={index} className="core-capabilities-list-item">
{skill}
</p>
))}
</div>
</li>
)}
{resumeData.compound_skills && resumeData.compound_skills.length > 0 && (
<li className="professional-skills-list-item">
<p className="skill-name">复合能力</p>
<div className="core-capabilities-list">
{resumeData.compound_skills.map((skill, index) => (
<p key={index} className="core-capabilities-list-item">
{skill}
</p>
))}
</div>
</li>
)}
</ul>
{resumeData.skills_text ? (
<div className="professional-skills-content" style={{ whiteSpace: 'pre-wrap', lineHeight: '1.8', padding: '0 20px' }}>
{resumeData.skills_text}
</div>
) : (
<ul className="professional-skills-list">
{resumeData.core_skills && resumeData.core_skills.length > 0 && (
<li className="professional-skills-list-item">
<p className="skill-name">核心能力</p>
<div className="core-capabilities-list">
{resumeData.core_skills.map((skill, index) => (
<p key={index} className="core-capabilities-list-item">
{skill}
</p>
))}
</div>
</li>
)}
{resumeData.compound_skills && resumeData.compound_skills.length > 0 && (
<li className="professional-skills-list-item">
<p className="skill-name">复合能力</p>
<div className="core-capabilities-list">
{resumeData.compound_skills.map((skill, index) => (
<p key={index} className="core-capabilities-list-item">
{skill}
</p>
))}
</div>
</li>
)}
</ul>
)}
</li>
{/* 个人总结 */}
{resumeData.personal_summary && resumeData.personal_summary.trim() !== '' && (