JobData/.planning/ROADMAP.md
win f6913ffdde docs(phase-2): complete phase execution — 2/2 plans done, verification passed
- ARCH-03: Boss crawler migrated to crawler_core (no inline signatures or HTTP boilerplate)
- QUAL-03: 22 mock tests pass covering all Boss API classes
- Anti-crawl mechanisms preserved (TLS fingerprint, proxy rotation, 10s delay)
- Phase 1 regression: 41 tests still passing
2026-03-21 19:04:55 +08:00

7.0 KiB
Raw Blame History

Roadmap: JobData 爬虫交互重构

Project: JobData 爬虫交互重构 Core Value: 基于关键词驱动爬虫抓取职位数据,可靠入库 ClickHouse定时完成公司信息采集同步 Created: 2026-03-21 Granularity: Standard (5-8 phases)


Phases

  • Phase 1: 共享核心包 - 提取 crawler_core/ 可安装共享包,统一基类和基础设施
  • Phase 2: Boss 直聘重写 - 基于 crawler_core 重写 Boss 直聘爬虫客户端 (completed 2026-03-21)
  • Phase 3: 前程无忧 & 智联重写 - 基于 crawler_core 重写前程无忧和智联招聘爬虫客户端
  • Phase 4: 后端 & 外部脚本接入 - 后端 facade 桥接 + 外部脚本迁移 + 废弃老框架
  • Phase 5: 数据管道优化 - 入库去重、公司清洗流程优化、公司招聘信息写入
  • Phase 6: 质量 & 前端 - 数据解析测试覆盖、前端监控和数据清洗页面优化

Phase Details

Phase 1: 共享核心包

Goal: crawler_core/ 可安装共享包就位,三平台开发可以统一基于它展开 Depends on: Nothing (first phase) Requirements: ARCH-01, ARCH-02, QUAL-01, QUAL-04, QUAL-05 Success Criteria (what must be TRUE):

  1. pip install -e ./crawler_core 可成功安装,from crawler_core import BaseFetcher 可正常导入
  2. 三大平台的签名算法已迁入 crawler_core/ 并通过单元测试pytest 绿色)
  3. BaseFetcher/BaseSearcher 基类定义完整,提供模板方法供子类实现
  4. loguru 日志格式统一tenacity 重试装饰器可开箱即用
  5. 旧爬虫jobs_spider/仍正常运行未被改动feature flag 隔离) Plans: 2/2 plans executed Plans:
  • 01-01-PLAN.md — Package scaffold: pyproject.toml + HTTPClient (tenacity + logging) + BaseFetcher/BaseSearcher + Pipfile deps
  • 01-02-PLAN.md — Sign algorithms: port BossSign/Job51Sign/ZhilianSign to crawler_core/ + unit tests (pytest)

Phase 2: Boss 直聘重写

Goal: Boss 直聘爬虫完全基于 crawler_core 运行,旧实现可安全停用 Depends on: Phase 1 Requirements: ARCH-03, QUAL-03 Success Criteria (what must be TRUE):

  1. Boss 直聘爬虫继承 BaseFetcher/BaseSearcher不含内联签名或 HTTP 样板代码
  2. 针对 Boss HTTP 层的 mock/respx 测试通过,覆盖正常响应和错误响应
  3. 使用 Boss 新客户端运行一次真实关键词抓取,职位数据成功返回(手动验证)
  4. 反爬机制保留:随机延迟 10-20s、代理轮换、TLS 指纹伪装均正常工作 Plans: 2/2 plans complete

Phase 3: 前程无忧 & 智联重写

Goal: 前程无忧和智联招聘爬虫完全基于 crawler_core 运行,三平台统一使用新基类 Depends on: Phase 1 Requirements: ARCH-04, ARCH-05 Success Criteria (what must be TRUE):

  1. 前程无忧爬虫继承 BaseFetcher/BaseSearcher不含内联签名或 HTTP 样板代码
  2. 智联招聘爬虫继承 BaseFetcher/BaseSearcher不含内联签名或 HTTP 样板代码
  3. 两平台各自运行一次真实关键词抓取,职位数据成功返回(手动验证)
  4. 三平台新客户端的代码结构一致,新平台可参照模板快速实现 Plans: TBD

Phase 4: 后端 & 外部脚本接入

Goal: 后端 facade 和外部脚本均使用 crawler_core老框架 jobs_spider/ 完成历史使命并下线 Depends on: Phase 2, Phase 3 Requirements: ARCH-06, ARCH-07, ARCH-08 Success Criteria (what must be TRUE):

  1. 后端 app/services/crawler/ facade 通过 asyncio.to_thread() 调用三平台新客户端,无同步阻塞
  2. spiderJobs/ 外部脚本导入 crawler_core 替代内联代码,功能等价
  3. jobs_spider/ 目录已标记废弃或删除,无生产流量指向旧代码
  4. 定时任务和手动触发的爬虫均通过新路径正常运行(后端日志可验证) Plans: TBD

Phase 5: 数据管道优化

Goal: 入库去重可靠,公司清洗流程顺畅,公司招聘信息完整写入 ClickHouse Depends on: Phase 4 Requirements: DATA-01, DATA-02, DATA-03, DATA-04 Success Criteria (what must be TRUE):

  1. 同一职位 ID 在 30 天窗口内重复推送时ClickHouse 中只保留一条记录(可通过重复入库验证)
  2. 外部脚本和后端均通过同一个 IngestService 入库,入库日志显示来源字段一致
  3. 公司清洗定时任务ClickHouse 抽取 → 爬公司详情 → 写 MySQL全程日志可追踪
  4. 公司招聘信息company_jobs成功写入 ClickHouse前端或查询可验证数据存在 Plans: TBD

Phase 6: 质量 & 前端

Goal: 数据解析测试覆盖到位,前端监控和清洗页面对实际运维有帮助 Depends on: Phase 5 Requirements: QUAL-02, QUAL-06, QUAL-07 Success Criteria (what must be TRUE):

  1. 三平台数据解析函数有单元测试覆盖正常字段和缺字段场景pytest 绿色)
  2. 去重逻辑有单元测试,覆盖重复 ID 和时间窗口边界场景
  3. 前端爬虫监控页面展示各平台最近抓取时间、数量趋势和错误状态
  4. 前端数据清洗页面支持查看待清洗公司列表、触发清洗、查看结果 Plans: TBD

Progress Table

Phase Plans Complete Status Completed
1. 共享核心包 2/2 Complete 2026-03-21
2. Boss 直聘重写 2/2 Complete 2026-03-21
3. 前程无忧 & 智联重写 0/? Not started -
4. 后端 & 外部脚本接入 0/? Not started -
5. 数据管道优化 0/? Not started -
6. 质量 & 前端 0/? Not started -

Coverage Map

Requirement Phase Description
ARCH-01 Phase 1 提取 crawler_core/ 为可安装包
ARCH-02 Phase 1 统一 BaseFetcher/BaseSearcher 基类
ARCH-03 Phase 2 Boss 直聘爬虫基于 crawler_core 重写
ARCH-04 Phase 3 前程无忧爬虫基于 crawler_core 重写
ARCH-05 Phase 3 智联招聘爬虫基于 crawler_core 重写
ARCH-06 Phase 4 后端 facade 使用 asyncio.to_thread() 桥接
ARCH-07 Phase 4 外部脚本 spiderJobs/ 使用 crawler_core
ARCH-08 Phase 4 废弃 jobs_spider/ 老框架
DATA-01 Phase 5 入库按唯一 ID + 30 天时间窗口去重
DATA-02 Phase 5 外部脚本和后端共用 IngestService
DATA-03 Phase 5 公司信息定时清洗流程优化
DATA-04 Phase 5 公司招聘信息写入 ClickHouse
QUAL-01 Phase 1 核心签名算法单元测试
QUAL-02 Phase 6 数据解析和去重逻辑单元测试
QUAL-03 Phase 2 HTTP 请求层 mock/respx 测试
QUAL-04 Phase 1 结构化日志统一格式
QUAL-05 Phase 1 错误重试机制tenacity
QUAL-06 Phase 6 前端爬虫监控页面优化
QUAL-07 Phase 6 前端数据清洗管理页面优化

Coverage: 19/19 requirements mapped ✓


Roadmap created: 2026-03-21 Last updated: 2026-03-21 — Phase 1 complete (01-01, 01-02 done); 41 sign algorithm unit tests passing