149 lines
3.9 KiB
Markdown
149 lines
3.9 KiB
Markdown
|
|
# BOSS招聘自动化 - 快速参考指南
|
|||
|
|
|
|||
|
|
## 核心优化点
|
|||
|
|
|
|||
|
|
### 1. 筛选功能 ✅
|
|||
|
|
```python
|
|||
|
|
# 在 FilterConfig 表中配置
|
|||
|
|
{
|
|||
|
|
"age_min": 22,
|
|||
|
|
"age_max": 35,
|
|||
|
|
"education": "本科",
|
|||
|
|
"activity": "3天内活跃",
|
|||
|
|
"positions": ["Python开发", "后端开发"]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 消息过滤 ✅(解决识别自己消息的问题)
|
|||
|
|
```python
|
|||
|
|
# 通过 fromId 字段区分消息来源
|
|||
|
|
# fromId = 0 -> 对方发送的消息
|
|||
|
|
# fromId != 0 -> 自己发送的消息
|
|||
|
|
|
|||
|
|
filtered_messages = [msg for msg in messages if msg.get("fromId", 0) == 0]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 自动保存联系人 ✅
|
|||
|
|
```python
|
|||
|
|
# 提取到联系方式后自动保存到 ContactRecord 表
|
|||
|
|
ContactRecord.objects.create(
|
|||
|
|
name=name,
|
|||
|
|
position=job_name,
|
|||
|
|
contact=wechat_or_phone,
|
|||
|
|
reply_status="已回复" if got_reply else "未回复",
|
|||
|
|
wechat_exchanged=exchange_confirmed,
|
|||
|
|
contacted_at=timezone.now()
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 复聊管理 ✅
|
|||
|
|
```python
|
|||
|
|
# 发送询问后等待30秒,每3秒检查一次
|
|||
|
|
# 如果没有回复,发送跟进话术
|
|||
|
|
if action_state["send_success"]:
|
|||
|
|
reply_result = self._handle_follow_up_chat(tab, name, job_name)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 时间格式支持
|
|||
|
|
|
|||
|
|
| 格式 | 示例 | 解析结果 |
|
|||
|
|
|------|------|----------|
|
|||
|
|
| 月日格式 | "03月03日" | 2026-03-03 或 2025-03-03 |
|
|||
|
|
| 相对时间 | "昨天" | 当前日期 - 1天 |
|
|||
|
|
| 相对时间 | "今天" | 当前日期 |
|
|||
|
|
| 相对时间 | "刚刚" | 当前日期 |
|
|||
|
|
|
|||
|
|
## 学历等级
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
初中 < 高中 < 中专 < 大专 < 本科 < 硕士 < 博士
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
候选人学历需要 >= 要求学历
|
|||
|
|
|
|||
|
|
## 活跃度筛选
|
|||
|
|
|
|||
|
|
| 配置值 | 含义 |
|
|||
|
|
|--------|------|
|
|||
|
|
| "今天活跃" | 最后上线时间在今天 |
|
|||
|
|
| "3天内活跃" | 最后上线时间在3天内 |
|
|||
|
|
| "本周活跃" | 最后上线时间在7天内 |
|
|||
|
|
| "本月活跃" | 最后上线时间在30天内 |
|
|||
|
|
| "不限" | 不筛选活跃度 |
|
|||
|
|
|
|||
|
|
## 话术类型
|
|||
|
|
|
|||
|
|
| script_type | 说明 | 使用场景 |
|
|||
|
|
|-------------|------|----------|
|
|||
|
|
| first | 首次回复 | 第一次联系候选人 |
|
|||
|
|
| followup | 跟进回复 | 候选人没有回复时 |
|
|||
|
|
| wechat | 微信交换 | 询问微信号 |
|
|||
|
|
| closing | 结束语 | 结束对话 |
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
### 1. 初始化测试数据
|
|||
|
|
```bash
|
|||
|
|
python scripts/init_recruit_test_data.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 运行功能测试
|
|||
|
|
```bash
|
|||
|
|
python scripts/test_recruit_features.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 启动招聘任务
|
|||
|
|
通过API或管理界面启动招聘任务,系统会自动:
|
|||
|
|
- 应用筛选条件
|
|||
|
|
- 过滤自己的消息
|
|||
|
|
- 保存联系人记录
|
|||
|
|
- 进行复聊管理
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Q1: 为什么识别到了自己发送的微信号?
|
|||
|
|
**A**: 已修复。现在通过 `fromId` 字段过滤消息,只识别对方发送的消息。
|
|||
|
|
|
|||
|
|
### Q2: 联系人记录在哪里查看?
|
|||
|
|
**A**: 在 `ContactRecord` 表中,可以通过 `/api/contacts` 接口查询。
|
|||
|
|
|
|||
|
|
### Q3: 如何配置不同岗位的话术?
|
|||
|
|
**A**: 在 `ChatScript` 表中,设置 `position` 字段为岗位名称,`script_type` 为话术类型。
|
|||
|
|
|
|||
|
|
### Q4: 筛选条件不生效?
|
|||
|
|
**A**: 检查 `FilterConfig` 表中是否有 `is_active=True` 的配置。
|
|||
|
|
|
|||
|
|
### Q5: 如何调整复聊等待时间?
|
|||
|
|
**A**: 修改 `_handle_follow_up_chat()` 方法中的 `max_wait` 参数(默认30秒)。
|
|||
|
|
|
|||
|
|
## 数据库表
|
|||
|
|
|
|||
|
|
### FilterConfig(筛选配置)
|
|||
|
|
- `age_min`, `age_max` - 年龄范围
|
|||
|
|
- `education` - 学历要求
|
|||
|
|
- `activity` - 活跃度要求
|
|||
|
|
- `positions` - 期望职位列表(JSON数组)
|
|||
|
|
- `is_active` - 是否启用
|
|||
|
|
|
|||
|
|
### ChatScript(话术配置)
|
|||
|
|
- `position` - 岗位类型
|
|||
|
|
- `script_type` - 话术类型
|
|||
|
|
- `content` - 话术内容
|
|||
|
|
- `is_active` - 是否启用
|
|||
|
|
|
|||
|
|
### ContactRecord(联系人记录)
|
|||
|
|
- `name` - 姓名
|
|||
|
|
- `position` - 岗位
|
|||
|
|
- `contact` - 联系方式
|
|||
|
|
- `reply_status` - 回复状态
|
|||
|
|
- `wechat_exchanged` - 是否交换微信
|
|||
|
|
- `contacted_at` - 联系时间
|
|||
|
|
|
|||
|
|
## 代码位置
|
|||
|
|
|
|||
|
|
- 主文件:`worker/tasks/boss_recruit.py`
|
|||
|
|
- 测试脚本:`scripts/test_recruit_features.py`
|
|||
|
|
- 初始化脚本:`scripts/init_recruit_test_data.py`
|
|||
|
|
- 详细说明:`BOSS招聘优化说明.md`
|
|||
|
|
- 完成总结:`优化完成总结.md`
|