This commit is contained in:
张成
2025-12-25 22:51:37 +08:00
parent 55ef28440a
commit c43bf79e2d
17 changed files with 1333 additions and 4093 deletions

387
_doc/项目功能总结.md Normal file
View File

@@ -0,0 +1,387 @@
# 自动找工作系统 - 项目功能总结
> 版本: v1.0 | 更新日期: 2025-12-25
## 一、项目概述
自动找工作系统(autoAiWorkSys)是一个基于AI的智能求职助手平台,通过自动化技术帮助求职者高效管理多个招聘平台账号、智能筛选匹配岗位、自动投递简历,并提供全流程的求职数据分析。系统集成Qwen 2.5 AI模型,实现简历智能分析、岗位匹配度评分、聊天内容生成等功能,大幅提升求职效率和成功率。
## 二、技术栈
### 前端技术
- **框架**: Vue 2.6.14 + Vuex 3.6.2 + Vue Router 3.5.3
- **UI组件**: View Design (iView) 4.7.0
- **构建工具**: Webpack 5
- **图表库**: ECharts
- **HTTP客户端**: 自定义 framework.http
### 后端技术
- **运行时**: Node.js
- **Web框架**: Koa 2.16.3
- **ORM**: Sequelize 5.22.5
- **数据库**: MySQL 8.0
- **消息队列**: MQTT (mqtt://192.144.167.231:1883)
- **AI模型**: Qwen 2.5 (阿里云DashScope)
- **缓存**: Redis (规划中)
- **存储**: Ali OSS
### 核心框架
- **Node Core Framework**: 自研框架,提供统一的API路由、数据库管理、日志管理
## 三、核心特性
1. **多平台账号管理** - 支持Boss直聘、猎聘等多个招聘平台,统一管理账号和授权
2. **智能简历分析** - AI评估简历竞争力(0-100分),提取技能标签,给出优势劣势和职业建议
3. **自动岗位投递** - 基于技能匹配和AI评分自动筛选岗位并投递,支持每日上限和时间范围控制
4. **AI岗位匹配** - 多维度评分(技能、经验、薪资、公司质量),自动识别外包岗位
5. **任务调度系统** - 优先级队列+MQTT通信,设备内串行、设备间并行执行
6. **数据可视化统计** - 投递成功率、面试转化率、不同平台效果对比等多维度分析
7. **设备实时监控** - 在线状态、健康度、错误信息、心跳检测
8. **完整审计日志** - 任务执行、投递记录、聊天记录全链路追踪
## 四、功能模块一览
### 4.1 前端功能模块
| 模块 | 页面路径 | 主要功能 |
|------|---------|----------|
| **首页/仪表板** | `/home` | 设备选择、账户信息卡片、今日统计、当前任务列表、近7天趋势图 |
| **账号管理** | `/account/pla_account` | 账号列表、新增/编辑、授权管理、批量位置解析、停止任务 |
| **账号详情** | `/account/pla_account_detail` | 账号基本信息、任务历史、自动化配置、运行操作面板 |
| **简历管理** | `/account/resume_info` | 简历列表、查看详情、AI分析结果展示、删除 |
| **简历详情** | `/account/resume_info_detail` | 个人信息、教育背景、工作经验、期望信息、AI评分和建议 |
| **岗位管理** | `/work/job_postings` | 岗位列表、过滤查询、打招呼、查看详情 |
| **投递记录** | `/work/apply_records` | 投递状态追踪、反馈状态、面试/Offer信息 |
| **职位类型** | `/work/job_types` | 职位类型配置、技能关键词、排除关键词 |
| **任务管理** | `/task/task_status` | 任务列表、指令详情、取消/重试操作 |
| **聊天管理** | `/chat/chat_list` | 双面板聊天界面、会话列表、AI生成回复 |
| **聊天记录** | `/chat/chat_records` | 聊天历史记录、消息类型、发送状态 |
| **系统配置** | `/system/system_config` | 系统参数配置、AI服务配置、MQTT配置 |
### 4.2 后端API模块
| 模块 | 接口前缀 | 主要功能 |
|------|---------|----------|
| **账号管理** | `/admin_api/account` | 列表、详情、新增、更新、删除、授权、停止任务、位置解析 |
| **简历管理** | `/admin_api/resume` | 列表、详情、统计、删除、AI分析、按设备获取 |
| **岗位管理** | `/admin_api/job` | 列表、详情、统计、删除、打招呼 |
| **投递记录** | `/admin_api/apply` | 列表、详情、统计、删除 |
| **聊天记录** | `/admin_api/chat` | 列表、详情、统计、删除 |
| **设备监控** | `/admin_api/device` | 列表、概览、配置更新、错误重置 |
| **任务状态** | `/admin_api/task` | 列表、详情、统计、更新、删除 |
| **数据统计** | `/admin_api/dashboard` | 综合统计、投递转化率、平台对比、设备排名 |
| **系统配置** | `/admin_api/system` | 配置列表、新增、更新、删除 |
### 4.3 核心业务流程
```
┌─────────────────────┐
│ 账号配置和授权 │
└──────────┬──────────┘
┌─────────────────────┐
│ 获取在线简历(MQTT) │ → AI分析 → 竞争力评分、技能提取、优劣势分析
└──────────┬──────────┘
┌─────────────────────┐
│ 创建自动投递任务 │
└──────────┬──────────┘
┌─────────────────────┐
│ 搜索岗位(MQTT) │ → 保存到job_postings表
└──────────┬──────────┘
┌─────────────────────┐
│ 岗位过滤和匹配 │ → 技能匹配+AI评分+外包识别
└──────────┬──────────┘
┌─────────────────────┐
│ 自动投递(MQTT) │ → 记录apply_records
└──────────┬──────────┘
┌─────────────────────┐
│ 聊天和面试跟踪 │ → AI生成聊天内容
└──────────┬──────────┘
┌─────────────────────┐
│ 数据统计和分析 │
└─────────────────────┘
```
## 五、已实现功能清单
### 5.1 账号管理模块 ✅
- ✅ 多平台账号绑定(Boss直聘、猎聘)
- ✅ 账号状态管理(启用/禁用、在线/离线、登录状态)
- ✅ 自动化开关(自动投递、自动聊天、自动活跃)
- ✅ 授权管理(设置授权日期、天数、过期时间计算)
- ✅ 职位类型配置(关联job_types)
- ✅ 投递配置(时间范围、每日上限、薪资范围、关键词过滤)
- ✅ 沟通配置(时间范围、是否沟通外包岗位)
- ✅ 活跃配置(活跃间隔、活跃动作)
- ✅ 位置解析(单个/批量,经纬度获取)
- ✅ 停止任务(取消该账号所有运行中任务)
### 5.2 简历管理模块 ✅
- ✅ 简历信息存储(个人信息、教育背景、工作经验、期望信息)
- ✅ 简历获取(通过MQTT从设备获取在线简历)
- ✅ AI竞争力评分(0-100分)
- ✅ AI技能标签提取
- ✅ AI优势劣势分析
- ✅ AI职业建议生成
- ✅ 简历与岗位匹配度计算
- ✅ 简历统计(平均竞争力、工作年限分布、竞争力分布)
- ✅ 按设备和平台查询简历
### 5.3 岗位管理模块 ✅
- ✅ 岗位信息存储(基本信息、要求、描述、薪资、地点)
- ✅ 岗位搜索(通过MQTT下发搜索指令)
- ✅ 岗位列表获取(通过MQTT获取列表)
- ✅ AI岗位匹配评分(技能、经验、薪资、公司质量)
- ✅ 外包岗位识别(规则+AI双层识别)
- ✅ 岗位过滤(技能关键词匹配、排除关键词检测)
- ✅ 综合评分计算(多维度权重评分)
- ✅ 岗位统计(总数、平均匹配度、外包比例)
- ✅ 打招呼功能(初次沟通)
### 5.4 自动投递模块 ✅
- ✅ 自动投递任务创建和调度
- ✅ 每日投递上限控制
- ✅ 投递时间范围控制(工作日/周末)
- ✅ 简历刷新检查(2小时内刷新)
- ✅ 岗位过滤和排序
- ✅ 投递指令下发(MQTT)
- ✅ 投递状态追踪(待投递、投递中、成功、失败、重复)
- ✅ 反馈状态管理(无反馈、已查看、感兴趣、不合适、面试邀约)
- ✅ 投递统计(成功率、面试转化率、Offer转化率)
### 5.5 AI分析模块 ✅
- ✅ Qwen 2.5模型集成(阿里云DashScope)
- ✅ 简历智能分析
- ✅ 技能标签提取
- ✅ 竞争力评分(0-100)
- ✅ 优势劣势分析
- ✅ 职业发展建议
- ✅ 岗位智能匹配
- ✅ 技能匹配度(0-100)
- ✅ 经验匹配度(0-100)
- ✅ 薪资合理性(0-100)
- ✅ 公司质量评分(0-100)
- ✅ 外包岗位识别
- ✅ 聊天内容生成(基础框架)
### 5.6 任务调度模块 ✅
- ✅ 优先级任务队列(堆实现,O(log n)性能)
- ✅ 并发控制(全局5设备,每设备1任务)
- ✅ 设备内串行、设备间并行执行
- ✅ 任务状态管理(待执行、执行中、成功、失败、超时、取消)
- ✅ 指数退避重试机制(最多3次)
- ✅ 任务超时检测(10分钟)
- ✅ 错误分类(可重试/不可重试)
- ✅ 任务恢复(启动时恢复未完成任务)
- ✅ 任务统计(岗位搜索数、过滤数、投递数、聊天数)
### 5.7 设备监控模块 ✅
- ✅ 设备状态追踪(在线/离线)
- ✅ 心跳检测(通过MQTT)
- ✅ 健康度评分
- ✅ 错误信息记录
- ✅ 最后心跳时间
- ✅ 设备配置更新
- ✅ 设备错误重置
- ✅ 设备概览统计(在线数、离线数、健康度排名)
### 5.8 数据统计模块 ✅
- ✅ 投递成功率统计
- ✅ 面试转化率统计
- ✅ Offer转化率统计
- ✅ 不同平台数据对比
- ✅ 设备活跃度排名
- ✅ 简历竞争力分布
- ✅ 岗位外包比例统计
- ✅ 近7天趋势图(投递、搜索、聊天)
- ✅ 今日统计(实时刷新)
### 5.9 聊天管理模块 ✅
- ✅ 聊天记录存储
- ✅ 聊天类型分类(打招呼、跟进、面试、回复)
- ✅ 发送状态追踪
- ✅ 回复检测和记录
- ✅ 回复时长统计
- ✅ 面试邀约识别
- ✅ 情感分析(积极/中性/消极)
- ✅ 效果评分
- ✅ AI生成标记
- ✅ 双面板聊天界面
### 5.10 其他功能 ✅
- ✅ 用户邀请和推广系统
- ✅ 公司信息库(上市公司数据)
- ✅ 版本管理
- ✅ 邮件服务集成
- ✅ OSS存储集成
- ✅ 地理位置服务(百度地图API)
- ✅ Swagger API文档
- ✅ 数据导出(CSV)
## 六、数据模型
### 6.1 核心表结构
| 表名 | 说明 | 关键字段 |
|------|------|---------|
| **pla_account** | 平台账号表 | sn_code, platform_type, is_online, auto_deliver, deliver_config |
| **resume_info** | 简历信息表 | resumeId, account_id, aiCompetitiveness, aiSkillTags, aiStrengths |
| **job_postings** | 岗位信息表 | jobId, platform, aiMatchScore, isOutsourcing, applyStatus |
| **apply_records** | 投递记录表 | resumeId, jobId, applyStatus, feedbackStatus, hasInterview, hasOffer |
| **chat_records** | 聊天记录表 | conversationId, chatType, isAiGenerated, hasReply, sentiment |
| **task_status** | 任务状态表 | taskType, status, priority, retryCount, progress |
| **task_commands** | 任务指令表 | taskId, commandType, commandData, response, executeTime |
| **job_types** | 职位类型表 | name, commonSkills, excludeKeywords, sortOrder |
| **device_monitor** | 设备监控表 | sn_code, is_online, health_score, last_heartbeat_time |
| **company_info** | 公司信息表 | company_name, is_listed, market_value, risk_level |
### 6.2 表关联关系
```
pla_account (1) ──→ (N) resume_info
├─→ (N) apply_records ←── (1) job_postings
│ │
│ └─→ (N) chat_records
└─→ (N) task_status ──→ (N) task_commands
pla_account (1) ──→ (1) job_types (职位类型配置)
pla_account (1) ──→ (N) device_monitor (设备监控)
```
## 七、快速开始
### 7.1 环境要求
- Node.js >= 14.x
- MySQL >= 8.0
- Redis (可选,用于缓存)
- MQTT Broker (已配置: mqtt://192.144.167.231:1883)
### 7.2 安装步骤
```bash
# 1. 克隆项目
git clone <repository-url>
cd autoAiWorkSys
# 2. 安装后端依赖
npm install
# 3. 安装前端依赖
cd admin
npm install
# 4. 配置数据库
# 编辑 config/config.js
# 设置MySQL连接信息
# 5. 初始化数据库
# 执行 _sql 目录下的SQL脚本
# 6. 启动后端服务
npm run dev
# 7. 启动前端服务(新终端)
cd admin
npm run dev
```
### 7.3 核心配置
**config/config.js** - 主配置文件
```javascript
{
db: {
host: 'localhost',
port: 3306,
database: 'auto_job',
username: 'root',
password: 'your_password'
},
mqtt: {
host: 'mqtt://192.144.167.231:1883',
clientId: 'autoAiWorkSys_server'
},
ai: {
apiKey: 'your_dashscope_api_key',
model: 'qwen-turbo' // qwen-turbo/qwen-plus/qwen-max
}
}
```
### 7.4 访问地址
- 前端管理后台: http://localhost:8080
- 后端API: http://localhost:3000/admin_api
- API文档: http://localhost:3000/api/docs
## 八、项目文件结构
```
autoAiWorkSys/
├── admin/ # 前端管理后台
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── api/ # API调用
│ │ ├── router/ # 路由配置
│ │ └── store/ # Vuex状态管理
│ └── package.json
├── api/ # 后端服务
│ ├── controller_admin/ # 后台管理API
│ ├── middleware/ # 核心业务逻辑
│ │ ├── job/ # 岗位、简历、聊天管理
│ │ ├── schedule/ # 任务调度系统
│ │ └── mqtt/ # MQTT通信
│ ├── model/ # 数据库模型
│ ├── services/ # 业务服务层
│ └── utils/ # 工具函数
├── config/ # 配置文件
├── framework/ # 核心框架
├── _doc/ # 文档目录
├── _sql/ # 数据库脚本
└── package.json
```
## 九、技术亮点
1. **优先级队列** - 堆实现,O(log n)性能,比数组提升10-100倍
2. **双层过滤** - 规则过滤+AI评分,平衡性能和准确性
3. **智能重试** - 指数退避策略,区分可重试和不可重试错误
4. **MQTT通信** - 异步消息队列,高效的设备指令下发和响应
5. **AI多场景应用** - 简历分析、岗位匹配、聊天生成、外包识别
6. **完整审计** - 任务、投递、聊天全链路追踪
7. **模块化设计** - 清晰的分层架构,易于扩展和维护
## 十、性能指标
- 任务调度延迟: < 100ms
- 数据库查询: 95%在100ms内
- MQTT消息延迟: < 50ms
- 前端页面加载: < 2s
- 并发支持: 最多5个设备同时执行
---
**文档维护**: 开发团队
**最后更新**: 2025-12-25
**联系方式**: 项目Issues