1
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,3 +4,4 @@ node_modules.*
|
|||||||
dist.zip
|
dist.zip
|
||||||
dist/
|
dist/
|
||||||
admin/node_modules/
|
admin/node_modules/
|
||||||
|
app/
|
||||||
529
_doc/搜索列表和投递功能开发规划.md
Normal file
529
_doc/搜索列表和投递功能开发规划.md
Normal file
@@ -0,0 +1,529 @@
|
|||||||
|
# Boss直聘搜索列表和投递功能开发规划
|
||||||
|
|
||||||
|
## 📋 功能概述
|
||||||
|
|
||||||
|
基于Boss直聘Web端职位搜索页面(`https://www.zhipin.com/web/geek/jobs`),完善搜索列表获取和职位投递功能,包括服务端任务创建、指令生成和完整流程实现。
|
||||||
|
|
||||||
|
## 🎯 目标功能
|
||||||
|
|
||||||
|
### 1. 搜索列表功能
|
||||||
|
- 支持多条件搜索(关键词、城市、薪资、经验、学历等)
|
||||||
|
- 支持分页获取职位列表
|
||||||
|
- 自动保存职位到数据库
|
||||||
|
- 支持职位去重和更新
|
||||||
|
|
||||||
|
### 2. 投递功能
|
||||||
|
- 单个职位投递
|
||||||
|
- 批量职位投递
|
||||||
|
- 投递状态跟踪
|
||||||
|
- 投递记录管理
|
||||||
|
|
||||||
|
## 📊 功能架构
|
||||||
|
|
||||||
|
```
|
||||||
|
用户/系统触发
|
||||||
|
↓
|
||||||
|
创建任务 (task_status)
|
||||||
|
↓
|
||||||
|
生成指令序列 (task_commands)
|
||||||
|
↓
|
||||||
|
执行指令 (通过MQTT发送到设备)
|
||||||
|
↓
|
||||||
|
设备执行并返回结果
|
||||||
|
↓
|
||||||
|
保存数据到数据库
|
||||||
|
↓
|
||||||
|
更新任务和指令状态
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 技术实现
|
||||||
|
|
||||||
|
### 一、搜索列表功能完善
|
||||||
|
|
||||||
|
#### 1.1 指令参数扩展
|
||||||
|
|
||||||
|
**文件**: `api/middleware/job/jobManager.js`
|
||||||
|
|
||||||
|
**方法**: `get_job_list()`
|
||||||
|
|
||||||
|
**需要支持的参数**:
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
keyword: '全栈工程师', // 搜索关键词
|
||||||
|
city: '101020100', // 城市代码(上海)
|
||||||
|
cityName: '上海', // 城市名称
|
||||||
|
salary: '20-30K', // 薪资范围
|
||||||
|
experience: '3-5年', // 工作经验
|
||||||
|
education: '本科', // 学历要求
|
||||||
|
industry: '互联网', // 公司行业
|
||||||
|
companySize: '100-499人', // 公司规模
|
||||||
|
financingStage: 'B轮', // 融资阶段
|
||||||
|
page: 1, // 页码
|
||||||
|
pageSize: 20, // 每页数量
|
||||||
|
pageCount: 3 // 获取页数(用于批量获取)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.2 任务创建接口
|
||||||
|
|
||||||
|
**文件**: `api/services/pla_account_service.js`
|
||||||
|
|
||||||
|
**新增方法**: `createSearchJobListTask()`
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
/**
|
||||||
|
* 创建搜索职位列表任务
|
||||||
|
* @param {Object} params - 任务参数
|
||||||
|
* @param {number} params.id - 账号ID
|
||||||
|
* @param {string} params.keyword - 搜索关键词
|
||||||
|
* @param {string} params.city - 城市代码
|
||||||
|
* @param {Object} params.searchParams - 搜索条件(薪资、经验、学历等)
|
||||||
|
* @param {number} params.pageCount - 获取页数
|
||||||
|
* @returns {Promise<Object>} 任务创建结果
|
||||||
|
*/
|
||||||
|
async createSearchJobListTask(params) {
|
||||||
|
// 1. 验证账号和授权
|
||||||
|
// 2. 创建任务记录
|
||||||
|
// 3. 生成搜索指令
|
||||||
|
// 4. 执行指令
|
||||||
|
// 5. 返回任务ID
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.3 指令生成逻辑
|
||||||
|
|
||||||
|
**文件**: `api/middleware/schedule/taskHandlers.js`
|
||||||
|
|
||||||
|
**需要完善**: `handleAutoDeliverTask()` 中的搜索指令生成
|
||||||
|
|
||||||
|
**当前实现**:
|
||||||
|
```javascript
|
||||||
|
const getJobListCommand = {
|
||||||
|
command_type: 'getJobList',
|
||||||
|
command_name: '获取职位列表',
|
||||||
|
command_params: JSON.stringify({
|
||||||
|
sn_code: sn_code,
|
||||||
|
keyword: keyword || accountConfig.keyword || '',
|
||||||
|
platform: platform || 'boss',
|
||||||
|
pageCount: pageCount || 3
|
||||||
|
}),
|
||||||
|
priority: config.getTaskPriority('search_jobs') || 5
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
**需要扩展为**:
|
||||||
|
```javascript
|
||||||
|
const getJobListCommand = {
|
||||||
|
command_type: 'get_job_list', // 统一使用下划线命名
|
||||||
|
command_name: '获取职位列表',
|
||||||
|
command_params: JSON.stringify({
|
||||||
|
sn_code: sn_code,
|
||||||
|
platform: platform || 'boss',
|
||||||
|
keyword: keyword || accountConfig.keyword || '',
|
||||||
|
city: city || accountConfig.city || '101020100', // 默认上海
|
||||||
|
cityName: cityName || accountConfig.cityName || '上海',
|
||||||
|
salary: searchParams?.salary || '',
|
||||||
|
experience: searchParams?.experience || '',
|
||||||
|
education: searchParams?.education || '',
|
||||||
|
industry: searchParams?.industry || '',
|
||||||
|
companySize: searchParams?.companySize || '',
|
||||||
|
financingStage: searchParams?.financingStage || '',
|
||||||
|
page: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
pageCount: pageCount || 3
|
||||||
|
}),
|
||||||
|
priority: config.getTaskPriority('get_job_list') || 5,
|
||||||
|
sequence: 1
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.4 职位数据保存优化
|
||||||
|
|
||||||
|
**文件**: `api/middleware/job/jobManager.js`
|
||||||
|
|
||||||
|
**方法**: `saveJobsToDatabase()`
|
||||||
|
|
||||||
|
**需要完善**:
|
||||||
|
- 支持更多字段映射(从Boss直聘响应数据)
|
||||||
|
- 优化位置解析逻辑
|
||||||
|
- 支持职位状态更新(已投递、已查看等)
|
||||||
|
- 添加职位匹配度计算
|
||||||
|
|
||||||
|
### 二、投递功能完善
|
||||||
|
|
||||||
|
#### 2.1 单个职位投递
|
||||||
|
|
||||||
|
**文件**: `api/middleware/job/jobManager.js`
|
||||||
|
|
||||||
|
**方法**: `applyJob()`
|
||||||
|
|
||||||
|
**当前状态**: ✅ 已实现基础功能
|
||||||
|
|
||||||
|
**需要完善**:
|
||||||
|
- 支持更多投递参数(期望薪资、求职信等)
|
||||||
|
- 优化错误处理
|
||||||
|
- 添加投递前检查(是否已投递、是否满足条件等)
|
||||||
|
|
||||||
|
#### 2.2 批量职位投递任务
|
||||||
|
|
||||||
|
**文件**: `api/middleware/schedule/taskHandlers.js`
|
||||||
|
|
||||||
|
**方法**: `handleAutoDeliverTask()`
|
||||||
|
|
||||||
|
**当前状态**: ✅ 已实现基础功能
|
||||||
|
|
||||||
|
**需要完善**:
|
||||||
|
1. **搜索条件完善**
|
||||||
|
- 支持城市、薪资、经验、学历等筛选条件
|
||||||
|
- 从账号配置中读取默认搜索条件
|
||||||
|
- 支持任务参数覆盖账号配置
|
||||||
|
|
||||||
|
2. **职位匹配算法优化**
|
||||||
|
- 完善距离计算(基于经纬度)
|
||||||
|
- 完善薪资匹配(解析薪资范围字符串)
|
||||||
|
- 完善工作年限匹配
|
||||||
|
- 完善学历匹配
|
||||||
|
- 完善权重评分系统
|
||||||
|
|
||||||
|
3. **投递指令生成**
|
||||||
|
- 为每个匹配的职位生成投递指令
|
||||||
|
- 支持批量投递(一次任务投递多个职位)
|
||||||
|
- 添加投递间隔控制(避免频繁投递)
|
||||||
|
|
||||||
|
#### 2.3 投递任务创建接口
|
||||||
|
|
||||||
|
**文件**: `api/services/pla_account_service.js`
|
||||||
|
|
||||||
|
**新增方法**: `createDeliverTask()`
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
/**
|
||||||
|
* 创建投递任务
|
||||||
|
* @param {Object} params - 任务参数
|
||||||
|
* @param {number} params.id - 账号ID
|
||||||
|
* @param {string} params.keyword - 搜索关键词
|
||||||
|
* @param {Object} params.searchParams - 搜索条件
|
||||||
|
* @param {Object} params.filterRules - 过滤规则
|
||||||
|
* @param {number} params.maxCount - 最大投递数量
|
||||||
|
* @returns {Promise<Object>} 任务创建结果
|
||||||
|
*/
|
||||||
|
async createDeliverTask(params) {
|
||||||
|
// 1. 验证账号和授权
|
||||||
|
// 2. 创建任务记录
|
||||||
|
// 3. 生成搜索指令(获取职位列表)
|
||||||
|
// 4. 生成投递指令序列(根据匹配结果)
|
||||||
|
// 5. 执行任务
|
||||||
|
// 6. 返回任务ID
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📝 具体开发任务
|
||||||
|
|
||||||
|
### 任务1: 完善搜索参数支持
|
||||||
|
|
||||||
|
**文件**: `api/middleware/job/jobManager.js`
|
||||||
|
|
||||||
|
**修改方法**: `get_job_list()`
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 扩展参数支持(城市、薪资、经验、学历等)
|
||||||
|
2. 构建完整的搜索参数对象
|
||||||
|
3. 传递给MQTT指令
|
||||||
|
|
||||||
|
**代码位置**: 第153-206行
|
||||||
|
|
||||||
|
**预计工作量**: 2小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 任务2: 优化职位数据保存
|
||||||
|
|
||||||
|
**文件**: `api/middleware/job/jobManager.js`
|
||||||
|
|
||||||
|
**修改方法**: `saveJobsToDatabase()`
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 完善字段映射(从Boss直聘响应数据提取更多字段)
|
||||||
|
2. 优化位置解析(减少API调用,添加缓存)
|
||||||
|
3. 添加职位状态管理
|
||||||
|
4. 添加职位匹配度字段
|
||||||
|
|
||||||
|
**代码位置**: 第215-308行
|
||||||
|
|
||||||
|
**预计工作量**: 3小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 任务3: 完善自动投递任务搜索条件
|
||||||
|
|
||||||
|
**文件**: `api/middleware/schedule/taskHandlers.js`
|
||||||
|
|
||||||
|
**修改方法**: `handleAutoDeliverTask()`
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 从账号配置读取默认搜索条件
|
||||||
|
2. 支持任务参数覆盖
|
||||||
|
3. 构建完整的搜索参数
|
||||||
|
4. 传递给搜索指令
|
||||||
|
|
||||||
|
**代码位置**: 第220-233行
|
||||||
|
|
||||||
|
**预计工作量**: 2小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 任务4: 优化职位匹配算法
|
||||||
|
|
||||||
|
**文件**: `api/middleware/schedule/taskHandlers.js`
|
||||||
|
|
||||||
|
**修改方法**: `handleAutoDeliverTask()`
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 完善距离计算(使用经纬度计算实际距离)
|
||||||
|
2. 完善薪资匹配(解析"20-30K"格式,转换为数值范围)
|
||||||
|
3. 完善工作年限匹配(解析"3-5年"格式)
|
||||||
|
4. 完善学历匹配(学历等级映射)
|
||||||
|
5. 优化权重评分计算
|
||||||
|
|
||||||
|
**代码位置**: 第255-400行(职位评分和过滤逻辑)
|
||||||
|
|
||||||
|
**预计工作量**: 4小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 任务5: 创建搜索任务接口
|
||||||
|
|
||||||
|
**文件**: `api/services/pla_account_service.js`
|
||||||
|
|
||||||
|
**新增方法**: `createSearchJobListTask()`
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 验证账号和授权
|
||||||
|
2. 创建任务记录
|
||||||
|
3. 生成搜索指令
|
||||||
|
4. 执行指令
|
||||||
|
5. 返回任务信息
|
||||||
|
|
||||||
|
**代码位置**: 在 `runCommand()` 方法后添加
|
||||||
|
|
||||||
|
**预计工作量**: 3小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 任务6: 创建投递任务接口
|
||||||
|
|
||||||
|
**文件**: `api/services/pla_account_service.js`
|
||||||
|
|
||||||
|
**新增方法**: `createDeliverTask()`
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 验证账号和授权
|
||||||
|
2. 创建任务记录
|
||||||
|
3. 生成搜索指令(获取职位列表)
|
||||||
|
4. 等待搜索完成
|
||||||
|
5. 获取匹配的职位
|
||||||
|
6. 生成投递指令序列
|
||||||
|
7. 执行投递指令
|
||||||
|
8. 返回任务信息
|
||||||
|
|
||||||
|
**代码位置**: 在 `createSearchJobListTask()` 方法后添加
|
||||||
|
|
||||||
|
**预计工作量**: 4小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 任务7: 完善指令类型映射
|
||||||
|
|
||||||
|
**文件**: `api/middleware/schedule/command.js`
|
||||||
|
|
||||||
|
**修改位置**: 指令执行逻辑
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 确保 `get_job_list` 指令类型正确映射到 `jobManager.get_job_list()`
|
||||||
|
2. 确保 `search_jobs` 指令类型正确映射到 `jobManager.search_jobs()`
|
||||||
|
3. 确保 `apply_job` 指令类型正确映射到 `jobManager.applyJob()`
|
||||||
|
|
||||||
|
**代码位置**: 第150-250行(指令执行逻辑)
|
||||||
|
|
||||||
|
**预计工作量**: 1小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 任务8: 添加搜索条件配置管理
|
||||||
|
|
||||||
|
**文件**: `api/model/pla_account.js`
|
||||||
|
|
||||||
|
**任务内容**:
|
||||||
|
1. 添加搜索条件配置字段(如果不存在)
|
||||||
|
2. 支持在账号配置中保存默认搜索条件
|
||||||
|
3. 支持在任务参数中覆盖搜索条件
|
||||||
|
|
||||||
|
**相关字段**:
|
||||||
|
- `search_config` (JSON): 搜索条件配置
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"city": "101020100",
|
||||||
|
"cityName": "上海",
|
||||||
|
"defaultSalary": "20-30K",
|
||||||
|
"defaultExperience": "3-5年",
|
||||||
|
"defaultEducation": "本科"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**预计工作量**: 1小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 工作流程
|
||||||
|
|
||||||
|
### 搜索职位列表流程
|
||||||
|
|
||||||
|
```
|
||||||
|
1. 用户/系统调用 createSearchJobListTask()
|
||||||
|
↓
|
||||||
|
2. 创建任务记录 (task_status)
|
||||||
|
↓
|
||||||
|
3. 生成搜索指令 (task_commands)
|
||||||
|
- command_type: 'get_job_list'
|
||||||
|
- command_params: { keyword, city, salary, ... }
|
||||||
|
↓
|
||||||
|
4. 执行指令 (通过MQTT发送到设备)
|
||||||
|
↓
|
||||||
|
5. 设备执行搜索并返回职位列表
|
||||||
|
↓
|
||||||
|
6. 保存职位到数据库 (job_postings)
|
||||||
|
- 去重处理
|
||||||
|
- 位置解析
|
||||||
|
- 字段映射
|
||||||
|
↓
|
||||||
|
7. 更新指令状态为完成
|
||||||
|
↓
|
||||||
|
8. 更新任务状态为完成
|
||||||
|
```
|
||||||
|
|
||||||
|
### 投递职位流程
|
||||||
|
|
||||||
|
```
|
||||||
|
1. 用户/系统调用 createDeliverTask()
|
||||||
|
↓
|
||||||
|
2. 创建任务记录 (task_status)
|
||||||
|
↓
|
||||||
|
3. 生成搜索指令 (获取职位列表)
|
||||||
|
- command_type: 'get_job_list'
|
||||||
|
↓
|
||||||
|
4. 执行搜索指令
|
||||||
|
↓
|
||||||
|
5. 获取职位列表并保存到数据库
|
||||||
|
↓
|
||||||
|
6. 根据简历信息和过滤规则匹配职位
|
||||||
|
- 距离匹配
|
||||||
|
- 薪资匹配
|
||||||
|
- 工作年限匹配
|
||||||
|
- 学历匹配
|
||||||
|
- 权重评分
|
||||||
|
↓
|
||||||
|
7. 为每个匹配的职位生成投递指令
|
||||||
|
- command_type: 'apply_job'
|
||||||
|
- command_params: { jobId, encryptBossId, ... }
|
||||||
|
↓
|
||||||
|
8. 批量执行投递指令(带间隔控制)
|
||||||
|
↓
|
||||||
|
9. 保存投递记录 (apply_records)
|
||||||
|
↓
|
||||||
|
10. 更新职位状态 (job_postings.applyStatus)
|
||||||
|
↓
|
||||||
|
11. 更新任务状态为完成
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 数据库字段说明
|
||||||
|
|
||||||
|
### job_postings 表需要完善的字段
|
||||||
|
|
||||||
|
| 字段名 | 类型 | 说明 | 状态 |
|
||||||
|
|--------|------|------|------|
|
||||||
|
| `city` | VARCHAR | 城市代码 | 待添加 |
|
||||||
|
| `cityName` | VARCHAR | 城市名称 | 待添加 |
|
||||||
|
| `salaryMin` | INT | 最低薪资(元) | 待添加 |
|
||||||
|
| `salaryMax` | INT | 最高薪资(元) | 待添加 |
|
||||||
|
| `experienceMin` | INT | 最低工作年限 | 待添加 |
|
||||||
|
| `experienceMax` | INT | 最高工作年限 | 待添加 |
|
||||||
|
| `educationLevel` | VARCHAR | 学历等级 | 待添加 |
|
||||||
|
| `matchScore` | DECIMAL | 匹配度评分 | 待添加 |
|
||||||
|
|
||||||
|
### pla_account 表需要添加的字段
|
||||||
|
|
||||||
|
| 字段名 | 类型 | 说明 | 状态 |
|
||||||
|
|--------|------|------|------|
|
||||||
|
| `search_config` | JSON | 搜索条件配置 | 待添加 |
|
||||||
|
| `city` | VARCHAR | 默认城市代码 | 待添加 |
|
||||||
|
| `cityName` | VARCHAR | 默认城市名称 | 待添加 |
|
||||||
|
|
||||||
|
## 🧪 测试计划
|
||||||
|
|
||||||
|
### 单元测试
|
||||||
|
1. 测试搜索参数构建
|
||||||
|
2. 测试职位数据保存
|
||||||
|
3. 测试职位匹配算法
|
||||||
|
4. 测试投递指令生成
|
||||||
|
|
||||||
|
### 集成测试
|
||||||
|
1. 测试完整搜索流程
|
||||||
|
2. 测试完整投递流程
|
||||||
|
3. 测试任务创建和执行
|
||||||
|
4. 测试MQTT通信
|
||||||
|
|
||||||
|
### 功能测试
|
||||||
|
1. 测试多条件搜索
|
||||||
|
2. 测试分页获取
|
||||||
|
3. 测试批量投递
|
||||||
|
4. 测试错误处理
|
||||||
|
|
||||||
|
## 📅 开发时间估算
|
||||||
|
|
||||||
|
| 任务 | 预计时间 | 优先级 |
|
||||||
|
|------|----------|--------|
|
||||||
|
| 任务1: 完善搜索参数支持 | 2小时 | 高 |
|
||||||
|
| 任务2: 优化职位数据保存 | 3小时 | 高 |
|
||||||
|
| 任务3: 完善自动投递任务搜索条件 | 2小时 | 高 |
|
||||||
|
| 任务4: 优化职位匹配算法 | 4小时 | 高 |
|
||||||
|
| 任务5: 创建搜索任务接口 | 3小时 | 中 |
|
||||||
|
| 任务6: 创建投递任务接口 | 4小时 | 中 |
|
||||||
|
| 任务7: 完善指令类型映射 | 1小时 | 中 |
|
||||||
|
| 任务8: 添加搜索条件配置管理 | 1小时 | 低 |
|
||||||
|
|
||||||
|
**总计**: 约20小时
|
||||||
|
|
||||||
|
## 🚀 开发优先级
|
||||||
|
|
||||||
|
### 第一阶段(核心功能)
|
||||||
|
1. 任务1: 完善搜索参数支持
|
||||||
|
2. 任务2: 优化职位数据保存
|
||||||
|
3. 任务3: 完善自动投递任务搜索条件
|
||||||
|
4. 任务4: 优化职位匹配算法
|
||||||
|
|
||||||
|
### 第二阶段(接口完善)
|
||||||
|
5. 任务5: 创建搜索任务接口
|
||||||
|
6. 任务6: 创建投递任务接口
|
||||||
|
7. 任务7: 完善指令类型映射
|
||||||
|
|
||||||
|
### 第三阶段(配置管理)
|
||||||
|
8. 任务8: 添加搜索条件配置管理
|
||||||
|
|
||||||
|
## 📌 注意事项
|
||||||
|
|
||||||
|
1. **命名规范**: 统一使用下划线命名(`get_job_list` 而不是 `getJobList`)
|
||||||
|
2. **错误处理**: 所有方法都需要完善的错误处理和日志记录
|
||||||
|
3. **数据验证**: 所有输入参数都需要验证
|
||||||
|
4. **性能优化**: 批量操作需要考虑性能,避免阻塞
|
||||||
|
5. **MQTT通信**: 确保指令参数格式正确,与客户端协议一致
|
||||||
|
6. **数据库事务**: 批量操作需要使用事务保证数据一致性
|
||||||
|
|
||||||
|
## 🔗 相关文件
|
||||||
|
|
||||||
|
- `api/middleware/job/jobManager.js` - 工作管理核心逻辑
|
||||||
|
- `api/middleware/schedule/taskHandlers.js` - 任务处理器
|
||||||
|
- `api/middleware/schedule/command.js` - 指令管理器
|
||||||
|
- `api/services/pla_account_service.js` - 账号服务
|
||||||
|
- `api/model/job_postings.js` - 职位数据模型
|
||||||
|
- `api/model/pla_account.js` - 账号数据模型
|
||||||
|
|
||||||
Reference in New Issue
Block a user