# resume_info 表同步指南

## ❌ 错误信息

```
Unknown column 'sn_code' in 'field list'
```

这个错误表示数据库中的 `resume_info` 表缺少 `sn_code` 字段。

## 🔧 解决方案

### 方案1: 使用同步脚本（推荐）

运行以下命令同步表结构：

```bash
node scripts/sync_resume_table.js
```

这个脚本会：
- ✅ 使用 `alter: true` 模式同步表（保留现有数据）
- ✅ 显示当前表结构
- ✅ 检查所有必需字段是否存在
- ✅ 提示缺少的字段

### 方案2: 手动添加字段

如果同步脚本无法运行，可以手动执行以下SQL：

```sql
-- 添加 sn_code 字段
ALTER TABLE `resume_info` 
ADD COLUMN `sn_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '设备SN码' AFTER `id`;

-- 添加 account_id 字段
ALTER TABLE `resume_info` 
ADD COLUMN `account_id` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户ID' AFTER `sn_code`;

-- 添加索引
ALTER TABLE `resume_info` 
ADD INDEX `idx_sn_code` (`sn_code`);
```

### 方案3: 重建表（会删除现有数据！）

⚠️ **警告：此操作会删除表中所有数据！**

如果表中没有重要数据，可以删除表让系统重新创建：

```sql
DROP TABLE IF EXISTS `resume_info`;
```

然后重启应用，Sequelize 会自动创建表（因为模型中有 `sync({ force: true })`）。

## 📋 必需字段列表

`resume_info` 表必须包含以下字段：

### 核心字段
- ✅ `id` - 主键（VARCHAR/UUID）
- ✅ `sn_code` - 设备SN码（VARCHAR(50)，必填）
- ✅ `account_id` - 用户ID（VARCHAR(50)，必填）
- ✅ `platform` - 平台（VARCHAR(20)，默认'boss'）

### 个人信息
- ✅ `fullName` - 姓名
- ✅ `gender` - 性别
- ✅ `age` - 年龄
- ✅ `phone` - 电话
- ✅ `email` - 邮箱
- ✅ `location` - 所在地

### 教育背景
- ✅ `education` - 学历
- ✅ `major` - 专业
- ✅ `school` - 毕业院校
- ✅ `graduationYear` - 毕业年份

### 工作信息
- ✅ `workYears` - 工作年限
- ✅ `currentPosition` - 当前职位
- ✅ `currentCompany` - 当前公司
- ✅ `currentSalary` - 当前薪资

### 期望信息
- ✅ `expectedPosition` - 期望职位
- ✅ `expectedSalary` - 期望薪资
- ✅ `expectedLocation` - 期望地点
- ✅ `expectedIndustry` - 期望行业

### 技能和经验（TEXT类型）
- ✅ `skills` - 技能标签（JSON）
- ✅ `skillDescription` - 技能描述
- ✅ `certifications` - 证书资质（JSON）
- ✅ `projectExperience` - 项目经验（JSON）
- ✅ `workExperience` - 工作经历（JSON）

### AI分析字段（TEXT类型）
- ✅ `aiSkillTags` - AI技能标签（JSON）
- ✅ `aiStrengths` - AI优势分析
- ✅ `aiWeaknesses` - AI劣势分析
- ✅ `aiCareerSuggestion` - AI职业建议
- ✅ `aiCompetitiveness` - AI竞争力评分（INT）

### 其他字段
- ✅ `resumeContent` - 简历内容（TEXT）
- ✅ `originalData` - 原始数据（TEXT/JSON）
- ✅ `isActive` - 是否活跃（BOOLEAN）
- ✅ `isPublic` - 是否公开（BOOLEAN）
- ✅ `syncTime` - 同步时间（DATETIME）

## 🔍 验证表结构

运行以下SQL查看表结构：

```sql
DESCRIBE resume_info;
```

或者查看完整的建表语句：

```sql
SHOW CREATE TABLE resume_info;
```

## 📝 完整建表SQL（参考）

```sql
CREATE TABLE `resume_info` (
  `id` varchar(255) NOT NULL,
  `sn_code` varchar(50) NOT NULL DEFAULT '' COMMENT '设备SN码',
  `account_id` varchar(50) NOT NULL DEFAULT '' COMMENT '用户ID',
  `platform` varchar(20) NOT NULL DEFAULT 'boss' COMMENT '平台',
  `fullName` varchar(50) DEFAULT '' COMMENT '姓名',
  `gender` varchar(10) DEFAULT '' COMMENT '性别',
  `age` int(11) DEFAULT 0 COMMENT '年龄',
  `phone` varchar(20) DEFAULT '' COMMENT '电话',
  `email` varchar(100) DEFAULT '' COMMENT '邮箱',
  `location` varchar(100) DEFAULT '' COMMENT '所在地',
  `education` varchar(50) DEFAULT '' COMMENT '学历',
  `major` varchar(100) DEFAULT '' COMMENT '专业',
  `school` varchar(200) DEFAULT '' COMMENT '毕业院校',
  `graduationYear` int(11) DEFAULT 0 COMMENT '毕业年份',
  `workYears` varchar(50) DEFAULT '' COMMENT '工作年限',
  `currentPosition` varchar(100) DEFAULT '' COMMENT '当前职位',
  `currentCompany` varchar(200) DEFAULT '' COMMENT '当前公司',
  `currentSalary` varchar(50) DEFAULT '' COMMENT '当前薪资',
  `expectedPosition` varchar(100) DEFAULT '' COMMENT '期望职位',
  `expectedSalary` varchar(50) DEFAULT '' COMMENT '期望薪资',
  `expectedLocation` varchar(100) DEFAULT '' COMMENT '期望地点',
  `expectedIndustry` varchar(100) DEFAULT '' COMMENT '期望行业',
  `skills` text COMMENT '技能标签(JSON)',
  `skillDescription` text COMMENT '技能描述',
  `certifications` text COMMENT '证书资质(JSON)',
  `projectExperience` text COMMENT '项目经验(JSON)',
  `workExperience` text COMMENT '工作经历(JSON)',
  `aiSkillTags` text COMMENT 'AI技能标签(JSON)',
  `aiStrengths` text COMMENT 'AI优势分析',
  `aiWeaknesses` text COMMENT 'AI劣势分析',
  `aiCareerSuggestion` text COMMENT 'AI职业建议',
  `aiCompetitiveness` int(11) DEFAULT 0 COMMENT 'AI竞争力评分',
  `resumeContent` text COMMENT '简历内容',
  `originalData` text COMMENT '原始数据(JSON)',
  `isActive` tinyint(1) DEFAULT 1 COMMENT '是否活跃',
  `isPublic` tinyint(1) DEFAULT 1 COMMENT '是否公开',
  `syncTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '同步时间',
  PRIMARY KEY (`id`),
  KEY `idx_sn_code` (`sn_code`),
  KEY `idx_platform` (`platform`),
  KEY `idx_isActive` (`isActive`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='简历信息表';
```

## ✅ 验证修复

修复后，运行以下代码验证：

```javascript
const db = require('./api/middleware/dbProxy');
const resume_info = db.getModel('resume_info');

// 测试创建记录
const testResume = await resume_info.create({
    id: 'test-uuid-123',
    sn_code: 'TEST001',
    account_id: 'user123',
    platform: 'boss',
    fullName: '测试用户',
    isActive: true
});

console.log('✅ 创建成功:', testResume.id);
```

## 🚀 下一步

表结构同步完成后，就可以正常使用简历存储功能了：

```javascript
const jobManager = require('./api/middleware/job/jobManager');

const resumeData = await jobManager.get_online_resume(
    'GHJU',
    mqttClient,
    { platform: 'boss' }
);
```

