7.1 KiB
7.1 KiB
简历存储功能 - 前置条件和使用说明
⚠️ 重要前置条件
在使用简历存储功能之前,必须确保以下条件已满足:
1. 数据库表已创建
✅ pla_account 表(平台账户表)
此表存储设备与平台账户的绑定关系,必须先有记录才能存储简历。
表结构:
CREATE TABLE `pla_account` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '账户名',
`sn_code` varchar(50) NOT NULL DEFAULT '' COMMENT '设备SN码',
`platform_type` varchar(50) NOT NULL DEFAULT '' COMMENT '平台类型(boss/liepin)',
`login_name` varchar(50) NOT NULL DEFAULT '' COMMENT '登录名',
`pwd` varchar(50) NOT NULL DEFAULT '' COMMENT '密码',
`keyword` varchar(50) NOT NULL DEFAULT '' COMMENT '关键词',
`search_url` varchar(50) NOT NULL DEFAULT '' COMMENT '搜索页网址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
示例数据:
INSERT INTO `pla_account` (`name`, `sn_code`, `platform_type`, `login_name`, `pwd`)
VALUES ('张三的Boss账号', 'GHJU', 'boss', '13800138000', 'password123');
✅ resume_info 表(简历信息表)
此表存储简历详细信息,会自动创建(通过 Sequelize sync)。
关键字段:
id- 简历UUID(主键)sn_code- 设备SN码(关联设备)account_id- 账户ID(关联 pla_account.id)platform- 平台类型(boss/liepin)
2. 数据关联关系
┌─────────────────┐ ┌──────────────────┐
│ pla_account │ │ resume_info │
├─────────────────┤ ├──────────────────┤
│ id (自增) │◄────────│ account_id │
│ sn_code │ │ sn_code │
│ platform_type │ │ platform │
│ login_name │ │ fullName │
│ pwd │ │ ... │
└─────────────────┘ └──────────────────┘
查询逻辑:
- 通过
sn_code+platform查询pla_account表 - 获取
pla_account.id作为account_id - 将
account_id存入resume_info表
3. 环境配置
数据库连接
确保数据库连接配置正确(config/config.js)
AI服务配置(可选)
如需AI分析功能,需配置 DeepSeek API:
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxx
DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions
DEEPSEEK_MODEL=deepseek-chat
🚀 使用流程
步骤1: 创建平台账户记录
在调用简历存储功能之前,必须先在 pla_account 表中创建账户记录:
const db = require('./api/middleware/dbProxy');
const pla_account = db.getModel('pla_account');
// 创建账户记录
await pla_account.create({
name: '张三的Boss账号',
sn_code: 'GHJU',
platform_type: 'boss',
login_name: '13800138000',
pwd: 'password123',
keyword: '前端工程师',
search_url: 'https://www.zhipin.com/web/geek/job'
});
步骤2: 同步数据库表结构
运行同步脚本确保表结构正确:
node scripts/sync_resume_table.js
步骤3: 调用简历存储功能
const jobManager = require('./api/middleware/job/jobManager');
// 获取在线简历(自动存储)
const resumeData = await jobManager.get_online_resume(
'GHJU', // 设备SN码(必须在 pla_account 中存在)
mqttClient, // MQTT客户端
{ platform: 'boss' } // 平台类型(必须与 pla_account.platform_type 匹配)
);
❌ 常见错误
错误1: "未找到设备 GHJU 在平台 boss 的账户信息"
原因: pla_account 表中没有对应的记录
解决方案:
// 检查是否存在账户记录
const account = await pla_account.findOne({
where: { sn_code: 'GHJU', platform_type: 'boss' }
});
if (!account) {
// 创建账户记录
await pla_account.create({
name: '账户名称',
sn_code: 'GHJU',
platform_type: 'boss',
login_name: '登录名',
pwd: '密码'
});
}
错误2: "Unknown column 'sn_code' in 'field list'"
原因: 数据库表结构未同步
解决方案:
# 运行同步脚本
node scripts/sync_resume_table.js
# 或手动执行SQL
ALTER TABLE `resume_info`
ADD COLUMN `sn_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '设备SN码',
ADD COLUMN `account_id` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户ID';
错误3: "account_id 不能为空"
原因: pla_account 查询失败或返回 null
解决方案:
- 确认
sn_code和platform_type匹配 - 检查
pla_account表中是否有对应记录 - 确认
platform参数正确('boss' 不是 'Boss')
✅ 验证清单
使用简历存储功能前,请确认:
pla_account表已创建pla_account表中有对应设备的记录sn_code和platform_type匹配resume_info表已创建resume_info表包含sn_code和account_id字段- 数据库连接正常
- MQTT 客户端可用
- (可选)DeepSeek API 配置正确
📝 完整示例
const db = require('./api/middleware/dbProxy');
const jobManager = require('./api/middleware/job/jobManager');
async function setupAndGetResume() {
const pla_account = db.getModel('pla_account');
// 1. 检查或创建账户记录
let account = await pla_account.findOne({
where: { sn_code: 'GHJU', platform_type: 'boss' }
});
if (!account) {
console.log('创建账户记录...');
account = await pla_account.create({
name: '测试账号',
sn_code: 'GHJU',
platform_type: 'boss',
login_name: '13800138000',
pwd: 'password123'
});
console.log('账户创建成功,ID:', account.id);
} else {
console.log('账户已存在,ID:', account.id);
}
// 2. 获取简历(自动存储)
console.log('获取在线简历...');
const resumeData = await jobManager.get_online_resume(
'GHJU',
mqttClient,
{ platform: 'boss' }
);
console.log('简历获取成功!');
console.log('姓名:', resumeData.baseInfo?.name);
// 3. 验证存储结果
const resume_info = db.getModel('resume_info');
const savedResume = await resume_info.findOne({
where: { sn_code: 'GHJU', platform: 'boss', isActive: true }
});
console.log('简历已保存,ID:', savedResume.id);
console.log('关联账户ID:', savedResume.account_id);
console.log('竞争力评分:', savedResume.aiCompetitiveness);
}
🔗 相关文档
- 详细功能说明:
_doc/简历存储和分析功能说明.md - 数据库同步指南:
_doc/数据库表同步指南.md - 快速参考:
_doc/简历功能快速参考.md - 示例代码:
examples/resume_storage_example.js