Files
autoAiWorkSys/api/model/resume_info.js
张成 58c9d64e55 1
2026-02-28 13:31:32 +08:00

296 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const Sequelize = require('sequelize');
/**
* 简历信息表模型
* 存储用户简历的核心要素和分析结果
*/
module.exports = (db) => {
const resume_info = db.define("resume_info", {
// 基本信息
sn_code: {
comment: '设备SN码',
type: Sequelize.STRING(50),
allowNull: false,
defaultValue: ''
},
account_id: {
comment: '用户ID',
type: Sequelize.STRING(50),
allowNull: false,
defaultValue: ''
},
platform: {
comment: '平台: boss-Boss直聘, liepin-猎聘',
type: Sequelize.STRING(20),
allowNull: false,
defaultValue: 'boss'
},
resumeId: {
comment: '简历ID',
type: Sequelize.STRING(50),
allowNull: false,
defaultValue: ''
},
// 个人信息
fullName: {
comment: '姓名',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
gender: {
comment: '性别',
type: Sequelize.STRING(10),
allowNull: true,
defaultValue: ''
},
age: {
comment: '年龄',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
phone: {
comment: '电话',
type: Sequelize.STRING(20),
allowNull: true,
defaultValue: ''
},
email: {
comment: '邮箱',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
location: {
comment: '所在地',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
// 教育背景
education: {
comment: '学历',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
major: {
comment: '专业',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
school: {
comment: '毕业院校',
type: Sequelize.STRING(200),
allowNull: true,
defaultValue: ''
},
graduationYear: {
comment: '毕业年份',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
// 工作经验
workYears: {
comment: '工作年限',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
currentPosition: {
comment: '当前职位',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
currentCompany: {
comment: '当前公司',
type: Sequelize.STRING(200),
allowNull: true,
defaultValue: ''
},
currentSalary: {
comment: '当前薪资',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
// 期望信息
expectedPosition: {
comment: '期望职位',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
expectedSalary: {
comment: '期望薪资',
type: Sequelize.STRING(50),
allowNull: true,
defaultValue: ''
},
expectedLocation: {
comment: '期望工作地点',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
expectedIndustry: {
comment: '期望行业',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
// 技能和专长
skills: {
comment: '技能标签(JSON数组)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
skillDescription: {
comment: '技能描述',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
certifications: {
comment: '证书资质(JSON数组)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
// 项目经验
projectExperience: {
comment: '项目经验(JSON数组)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
// 工作经历
workExperience: {
comment: '工作经历(JSON数组)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
// AI分析结果
aiSkillTags: {
comment: 'AI提取的技能标签(JSON数组)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
aiStrengths: {
comment: 'AI分析的优势',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
aiWeaknesses: {
comment: 'AI分析的劣势',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
aiCareerSuggestion: {
comment: 'AI职业建议',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
aiCompetitiveness: {
comment: 'AI竞争力评分(0-100)',
type: Sequelize.INTEGER,
allowNull: true,
defaultValue: 0
},
// 简历内容
resumeContent: {
comment: '简历完整内容(HTML或文本)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
// 原始数据
originalData: {
comment: '原始数据(JSON)',
type: Sequelize.TEXT,
allowNull: true,
defaultValue: ''
},
// 投递用期望标签get_job_listings 拉取的 tab 列表与当前选中的 tab 文本
job_listings: {
comment: '简历/期望 tab 列表(JSON数组),如 ["推荐", "前端开发工程师"]',
type: Sequelize.JSON(),
allowNull: true,
defaultValue: null
},
deliver_tab_label: {
comment: '投递时使用的标签文本,对应 job_listings 中的某一项,如 "前端开发工程师"',
type: Sequelize.STRING(100),
allowNull: true,
defaultValue: ''
},
// 状态信息
isActive: {
comment: '是否活跃简历',
type: Sequelize.BOOLEAN,
allowNull: true,
defaultValue: true
},
isPublic: {
comment: '是否公开',
type: Sequelize.BOOLEAN,
allowNull: true,
defaultValue: true
},
syncTime: {
comment: '同步时间',
type: Sequelize.DATE,
allowNull: true,
defaultValue: Sequelize.NOW
}
}, {
timestamps: true,
createdAt: 'create_time',
updatedAt: 'last_modify_time',
indexes: [
{
unique: false,
fields: ['sn_code']
},
{
unique: false,
fields: ['platform']
},
{
unique: false,
fields: ['isActive']
},
]
});
// resume_info.sync({ force: true });
return resume_info
};