Files
autoAiWorkSys/api/model/resume_info.js
张成 5d7444cd65 1
2025-11-24 13:23:42 +08:00

282 lines
5.8 KiB
JavaScript

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: ''
},
// 状态信息
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
};