resume-parser-mcp
Version:
To install dependencies:
61 lines (53 loc) • 1.97 kB
text/typescript
export function extractWorkExperience(text: string) {
const keywords = ['工作经历', 'Work Experience', '职业经历', 'employment'];
const stopKeywords = ['教育', 'Education', '技能', 'Skills', '项目', 'Projects'];
const lines = text.split('\n');
let workStartIndex = -1;
let workEndIndex = lines.length;
// 找到工作经历开始行
for (let i = 0; i < lines.length; i++) {
if (keywords.some(keyword => lines[i].toLowerCase().includes(keyword.toLowerCase()))) {
workStartIndex = i + 1;
break;
}
}
// 如果没找到工作经历关键词,返回空数组
if (workStartIndex === -1) return [];
// 找到工作经历结束行
for (let i = workStartIndex; i < lines.length; i++) {
if (stopKeywords.some(keyword => lines[i].toLowerCase().includes(keyword.toLowerCase()))) {
workEndIndex = i;
break;
}
}
// 提取工作经历内容行
const workLines = lines.slice(workStartIndex, workEndIndex)
.filter(line => line.trim().length > 0);
// 简单解析工作经历(这里只是示例,实际需要更复杂的逻辑)
const experiences = [];
let currentExperience: {
name?: string;
startDate?: string;
summary?: string;
} = {};
workLines.forEach(line => {
// 假设包含年份的行是新的工作经历开始
if (/\b(19|20)\d{2}\b/.test(line)) {
if (Object.keys(currentExperience).length > 0) {
experiences.push(currentExperience);
}
currentExperience = {
name: line.split(/\d{4}/)[0].trim(),
startDate: line.match(/\b(19|20)\d{2}\b/g)?.[0] || '',
summary: ''
};
} else if (currentExperience) {
currentExperience.summary += line + ' ';
}
});
// 添加最后一个工作经历
if (Object.keys(currentExperience).length > 0) {
experiences.push(currentExperience);
}
return experiences;
}