# Research Summary: 招聘数据爬虫重构

**Synthesized:** 2026-03-21

## 核心技术决策

**保留:** `requests_go` (TLS 指纹伪装，反爬核心)、`httpx.AsyncClient` (后端异步调用)、ClickHouse + MySQL 双库架构
**新增:** `tenacity` (重试)、`pytest` + `respx` (测试)
**避免:** 纯 `requests` (TLS 指纹暴露)、`aiohttp` (无指纹控制)

## 关键架构方案

**提取 `crawler_core/` 可安装共享包**，放在项目根目录，外部脚本和后端都从中导入。解决当前"复制粘贴+注释说明"的反模式。

**同步/异步边界:** 核心逻辑保持同步（`requests_go`），后端通过 `asyncio.to_thread()` 桥接。

**废弃 `jobs_spider/`:** 保留 `spiderJobs/`（结构更好的新框架）+ `crawler_core/`。

## Table Stakes 功能

- 统一基类 (BaseFetcher/BaseSearcher)
- 按唯一 ID 入库去重（30天窗口 + MergeTree 兜底）
- 反爬延迟（10-20s随机）、代理轮换、TLS 指纹
- 分页断点续爬 + 进度汇报
- 关键词拉取分发
- 结构化日志 + 错误重试

## Top 5 风险

1. **重构期间打断在线爬虫** — 用 feature flag 并行新旧代码
2. **签名代码复制粘贴** — 必须先提取共享包再改平台代码
3. **反爬会话状态丢失** — SmartIPManager 在 FastAPI 中需做成单例
4. **ClickHouse 去重全表扫描** — 加 30 天时间窗口限制
5. **无测试覆盖** — 签名函数是纯函数，最先写测试

## 建议阶段顺序

1. 提取 `crawler_core/` 共享包（解除代码重复）
2. 重写三平台爬虫客户端（基于统一基类）
3. 重连后端 facade + 外部脚本
4. 优化去重和公司清洗流程
5. 测试覆盖 + 前端监控优化

---
*Research synthesized: 2026-03-21*
