3.5 KiB
3.5 KiB
Phase 6: 质量 & 前端 — 技术研究
研究日期: 2026-03-21
阶段目标: 数据解析测试覆盖(QUAL-02)+ 前端监控和清洗页面优化(QUAL-06/07)
1. QUAL-02:数据解析和去重逻辑单元测试
现状
| 测试模块 | 文件 | 状态 |
|---|---|---|
| dedup 30天窗口 | tests/ingest/test_dedup.py |
✅ 已有(Phase 5 新增 6 个) |
| boss 解析函数 | 无 | ❌ 缺失 |
| qcwy 解析函数 | 无 | ❌ 缺失 |
| zhilian 解析函数 | 无 | ❌ 缺失 |
需要测试的函数(app/services/ingest/configs/)
boss.py:
_extract_job_id(data)→data["jobBaseInfoVO"]["jobId"]_extract_company_name(data)→data["name"]或data["companyFullInfoVO"]["name"]_build_boss_push(data)→ 完整 push dict
qcwy.py:
_extract_job_id(data)→data["jobId"]_extract_update_dt(data)→data["updateDateTime"]_extract_company_name(data)→data["companyName"]或data["company_name"]_build_qcwy_push(data)→ 完整 push dict(包含 welfare 列表处理)
zhilian.py:
_extract_number(data)→data["number"]_extract_fpt(data)→data["firstPublishTime"]_extract_company_name(data)→data["companyName"]或data["name"]_build_zhilian_push(data)→ 完整 push dict
测试策略
- 每个函数:正常字段场景 + 缺字段场景(返回 None)
_build_*_push:关键字段映射 + None 值降级- 总计:约 24-30 个测试
2. QUAL-06:前端爬虫监控页面
现状
现有页面(web/src/views/cleaning/monitor.vue)显示的是 公司清洗监控(MySQL 队列状态),
不是爬虫职位抓取监控。
成功标准要求(缺口):
- ❌ 各平台最近抓取时间
- ❌ 数量趋势(历史入库量趋势图)
- ❌ 错误状态
后端 ClickHouse 可查询的数据
job_data.boss_job / qcwy_job / zhilian_job表有created_at字段- 可以按天统计最近 7 天每个平台的入库数量
- 最近一条记录的
created_at= 最近抓取时间
方案
在 recruitment/ 模块中已有三平台数据查看页面(boss/qcwy/zhilian index.vue),
可以在现有 recruitment/components/PlatformData.vue 顶部增加统计卡片:
- 总数量、今日入库量、最近抓取时间
或者新建一个 爬虫数据统计 API(后端)+ 在 monitor.vue 中加一个爬虫入库统计区域。
决策(较小改动):
- 后端新增
GET /job/data/stats?platform=boss&days=7端点,返回:total: 总量today: 今日新增last_ingest_at: 最近入库时间daily_counts: 近 7 天每日入库量(用于趋势展示)
- 在
monitor.vue顶部(现有 metric-grid 之前)新增爬虫入库数量卡片
3. QUAL-07:前端数据清洗管理页面
现状
cleaning/monitor.vue(1191行)已包含:
- ✅ 待清洗公司列表(队列表格)
- ✅ 触发清洗(按来源批量执行)
- ✅ 查看结果(JSON 模态窗口)
现有缺口(成功标准 4 实际满足):
- ✅ 查看待清洗公司列表 → 已有
- ✅ 触发清洗 → 已有
- ✅ 查看结果 → 已有
结论: QUAL-07 基本满足,主要补充文档/说明,或轻微 UI 优化。
4. 计划分解
| 计划 | 内容 | 要求 |
|---|---|---|
| Plan 01 | 三平台 extract/build_push 函数单元测试(约 25 个) | QUAL-02 |
| Plan 02 | 后端新增爬虫统计 API + 前端 monitor.vue 添加爬虫入库统计区域 | QUAL-06/07 |