feat(recruiter): 添加招聘者账号管理模块及相关支持

- 新增招聘者账号数据库表结构及SQL建表脚本
- 实现招聘者实体类及账号状态枚举
- 添加SQLAlchemy数据库模型及管理器支持招聘者数据存储
- 实现招聘者数据访问层(Mapper)进行增删改查操作
- 开发招聘者服务层,支持账号添加、启用、停用、删除、列表及爬虫注册
- 新增命令行工具add_recruiter.py,便于管理招聘者账号
- 修改主应用初始化流程,集成招聘者服务并通过数据库加载活跃账号爬虫
- 主程序示例中新增招聘者账号展示与调用爬取任务示范
- 更新项目依赖,增加SQLAlchemy、PyMySQL及Cryptography库支持
- 修改.gitignore,新增.qoder目录例外规则
This commit is contained in:
2026-03-24 14:36:01 +08:00
parent 6a5495005e
commit 04596d298b
12 changed files with 955 additions and 19 deletions

28
main.py
View File

@@ -46,6 +46,16 @@ async def demo():
# 初始化应用
app = get_app()
# 显示招聘者账号
print("\n已配置的招聘者账号:")
recruiters = app.recruiter_service.list_recruiters()
if recruiters:
for r in recruiters:
status = "" if r.is_active() else ""
print(f" {status} {r.name} ({r.source.value}) - {r.status.value}")
else:
print(" - 暂无账号,请使用 add_recruiter.py 添加")
print("\n已注册爬虫:")
for source in app.crawler_factory.get_registered_sources():
print(f" - {source.value}")
@@ -67,11 +77,19 @@ async def demo():
print("系统初始化完成")
print("=" * 50)
# 示例:爬取并入库(需要配置 CRAWLER_BOSS_WT_TOKEN
# await app.crawl_and_ingest(
# source=CandidateSource.BOSS,
# job_id="your_job_id"
# )
# 示例:爬取并入库
# 1. 先获取职位列表
# jobs = app.get_jobs(CandidateSource.BOSS)
# if jobs:
# print(f"\n找到 {len(jobs)} 个职位")
# first_job = jobs[0]
# print(f"使用职位: {first_job.title}")
#
# # 2. 爬取该职位下的候选人
# await app.crawl_and_ingest(
# source=CandidateSource.BOSS,
# job_id=first_job.source_id
# )
if __name__ == "__main__":