feat(job): 添加账号与职位同步及简历处理定时任务

- 在recruiters与jobs表中新增账号权益和统计字段,添加对应索引和外键约束
- 扩展Recruiter和Job领域模型,支持权益、同步状态及职位统计信息
- 实现账号同步定时任务,定期检查账号状态、同步权益及职位数据
- 实现简历处理定时任务,遍历活跃账号职位,抓取候选人简历并统一入库
- 引入Job调度器,集中管理账号同步和简历处理任务的调度、启停及状态监控
- 添加.gitignore规则忽略.idea目录配置文件
This commit is contained in:
2026-03-24 17:00:58 +08:00
parent b6afe82d2f
commit 49cd8682d0
12 changed files with 1372 additions and 13 deletions

View File

@@ -11,10 +11,25 @@ CREATE TABLE IF NOT EXISTS recruiters (
wt_token VARCHAR(512) NOT NULL, -- WT Token (加密存储)
status VARCHAR(32) DEFAULT 'ACTIVE', -- ACTIVE, INACTIVE, EXPIRED
last_used_at TIMESTAMP, -- 最后使用时间
-- 账号权益信息
vip_level VARCHAR(32), -- VIP等级
vip_status VARCHAR(32), -- VIP状态
vip_expire_at TIMESTAMP, -- VIP过期时间
resume_view_count INT DEFAULT 0, -- 剩余简历查看次数
resume_view_total INT DEFAULT 0, -- 总简历查看次数
-- 账号统计信息
last_sync_at TIMESTAMP, -- 最后同步时间
sync_status VARCHAR(32), -- 同步状态: SUCCESS, FAILED, PENDING
sync_error TEXT, -- 同步错误信息
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_source_token (source, wt_token(255)),
INDEX idx_status (status)
INDEX idx_status (status),
INDEX idx_sync_status (sync_status),
INDEX idx_last_sync_at (last_sync_at)
);
-- ============================================
@@ -73,6 +88,7 @@ CREATE TABLE IF NOT EXISTS jobs (
id VARCHAR(64) PRIMARY KEY,
source VARCHAR(32) NOT NULL, -- BOSS, LIEPIN, etc.
source_id VARCHAR(128) NOT NULL,
recruiter_id VARCHAR(64), -- 关联的招聘者账号ID
title VARCHAR(256) NOT NULL,
department VARCHAR(128),
location VARCHAR(128),
@@ -81,10 +97,19 @@ CREATE TABLE IF NOT EXISTS jobs (
requirements TEXT, -- 职位要求JSON
description TEXT, -- 职位描述
status VARCHAR(32) DEFAULT 'ACTIVE', -- ACTIVE, PAUSED, CLOSED, ARCHIVED
-- 职位统计信息
candidate_count INT DEFAULT 0, -- 候选人数量
new_candidate_count INT DEFAULT 0, -- 新候选人数量
last_sync_at TIMESTAMP, -- 最后同步时间
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_source_source_id (source, source_id),
INDEX idx_status (status)
INDEX idx_status (status),
INDEX idx_recruiter_id (recruiter_id),
INDEX idx_last_sync_at (last_sync_at),
FOREIGN KEY (recruiter_id) REFERENCES recruiters(id) ON DELETE SET NULL
);
-- ============================================