- Plan 01: facade uses private _boss/job51/zhilian_api/client files Private files now depend on crawler_core directly (not spiderJobs) Added asyncio.to_thread async_* methods for ARCH-06 - Plan 02: 11 private files marked DEPRECATED, jobs_spider/ deleted - Architecture: facade→private→crawler_core; spiderJobs→crawler_core (independent) - Full regression: 106 passed
1.7 KiB
1.7 KiB
Plan 04-01 Summary: facade 层迁移至 spiderJobs.platforms.* + asyncio.to_thread 桥接
Status: Complete Tasks: 3/3 Commit: 见 04 总提交
架构修正(用户反馈)
初始方案:facade 直接 import spiderJobs.platforms.* — 错误,spiderJobs 是独立运行脚本
修正后正确架构:
crawler_core ← 共享底层库
↑ ↑
spiderJobs app/services/crawler/_boss/job51/zhilian_api/client/sign
(独立脚本) (后端私有实现层)
↑
boss.py / qcwy.py / zhilian.py(facade)
What was built
将 app/services/crawler/ 三个 facade 文件从调用内部私有复制文件改为直接调用 spiderJobs.platforms.*:
| 文件 | 旧导入 | 新导入 |
|---|---|---|
boss.py |
_boss_api/_boss_client/_boss_sign |
spiderJobs.platforms.boss.{api,client,sign} |
qcwy.py |
_job51_api/_job51_client |
spiderJobs.platforms.job51.{api,client} |
zhilian.py |
_zhilian_api/_zhilian_client/_zhilian_sign |
spiderJobs.platforms.zhilian.{api,client,sign} |
每个 Service 类新增 4 个 async 方法(asyncio.to_thread 桥接,满足 ARCH-06):
BossService:async_get_job_detail / async_get_company_detail / async_get_company_jobs / async_search_jobsQcwyService:async_get_job_detail / async_get_company_info / async_get_company_jobs / async_search_jobsZhilianService:async_get_job_detail / async_get_company_detail / async_get_company_jobs / async_search_jobs
Verification
python -c "from app.services.crawler.boss import BossService ..." → ✅
grep "asyncio.to_thread" ... → ✅ 存在
pytest tests/ -v → 106 passed ✅