90 lines
3.0 KiB
Markdown
90 lines
3.0 KiB
Markdown
|
|
# 招聘数据库 Schema
|
|||
|
|
|
|||
|
|
**路径:** `~/.hermes/data/recruitment/recruitment.db`
|
|||
|
|
**引擎:** SQLite 3(WAL 模式)
|
|||
|
|
**Node.js:** `better-sqlite3`
|
|||
|
|
**Python:** `sqlite3`(标准库)
|
|||
|
|
|
|||
|
|
## candidates 表
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE candidates (
|
|||
|
|
id TEXT PRIMARY KEY, -- MD5(name|age|edu|exp|school)[:12]
|
|||
|
|
platform TEXT NOT NULL DEFAULT 'zhaopin',
|
|||
|
|
account TEXT NOT NULL DEFAULT 'hr1', -- v0.2 多账号:hr1/hr2
|
|||
|
|
name TEXT NOT NULL,
|
|||
|
|
age INTEGER,
|
|||
|
|
education TEXT, -- 本科/硕士/大专等
|
|||
|
|
experience TEXT, -- 原始文本如"3年经验"
|
|||
|
|
exp_years REAL, -- 数值化经验年数,便于筛选
|
|||
|
|
school TEXT,
|
|||
|
|
expected_city TEXT,
|
|||
|
|
expected_salary TEXT,
|
|||
|
|
activity TEXT DEFAULT '', -- 活跃度文本如"10分钟前有回复"
|
|||
|
|
role_tag TEXT DEFAULT '', -- 岗位推荐标签:有经验岗/应届生岗/不限
|
|||
|
|
score INTEGER, -- 7维度总分 7-35
|
|||
|
|
score_level TEXT, -- 推荐/待定/不推荐
|
|||
|
|
greeted INTEGER NOT NULL DEFAULT 0,
|
|||
|
|
greeted_at TEXT,
|
|||
|
|
raw_text TEXT, -- 完整简历原文
|
|||
|
|
education_detail TEXT,
|
|||
|
|
work_detail TEXT,
|
|||
|
|
cert_detail TEXT,
|
|||
|
|
card_info TEXT, -- 列表卡片原始信息 JSON
|
|||
|
|
score_details TEXT, -- 评分明细 JSON
|
|||
|
|
scraped_at TEXT,
|
|||
|
|
updated_at TEXT,
|
|||
|
|
notes TEXT DEFAULT '' -- 人工备注
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## greet_log 表
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE greet_log (
|
|||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|||
|
|
candidate_id TEXT NOT NULL REFERENCES candidates(id),
|
|||
|
|
account TEXT NOT NULL DEFAULT 'hr1', -- v0.2 多账号:hr1/hr2
|
|||
|
|
action TEXT NOT NULL, -- 'greet'
|
|||
|
|
result TEXT, -- 'success' / 'button_not_found' / ...
|
|||
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now','localtime'))
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## scrape_log 表
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE scrape_log (
|
|||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|||
|
|
mode TEXT, -- 'full' / 'incremental'
|
|||
|
|
target_count INTEGER,
|
|||
|
|
new_count INTEGER,
|
|||
|
|
skip_count INTEGER,
|
|||
|
|
greet_count INTEGER,
|
|||
|
|
error_count INTEGER,
|
|||
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now','localtime'))
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 常用查询
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 推荐人员
|
|||
|
|
SELECT name, age, education, school, score, greeted
|
|||
|
|
FROM candidates WHERE score_level = '推荐' ORDER BY score DESC;
|
|||
|
|
|
|||
|
|
-- 未打招呼的推荐/待定
|
|||
|
|
SELECT name, score, score_level, school
|
|||
|
|
FROM candidates WHERE score_level IN ('推荐','待定') AND greeted = 0;
|
|||
|
|
|
|||
|
|
-- 评分分布
|
|||
|
|
SELECT score_level, COUNT(*) FROM candidates GROUP BY score_level;
|
|||
|
|
|
|||
|
|
-- 最近抓取的10人
|
|||
|
|
SELECT name, score, score_level, scraped_at
|
|||
|
|
FROM candidates ORDER BY scraped_at DESC LIMIT 10;
|
|||
|
|
|
|||
|
|
-- 打招呼成功率
|
|||
|
|
SELECT action, result, COUNT(*) FROM greet_log GROUP BY action, result;
|
|||
|
|
```
|