103 lines
3.5 KiB
Markdown
103 lines
3.5 KiB
Markdown
# 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` 中加一个爬虫入库统计区域。
|
||
|
||
**决策(较小改动):**
|
||
1. 后端新增 `GET /job/data/stats?platform=boss&days=7` 端点,返回:
|
||
- `total`: 总量
|
||
- `today`: 今日新增
|
||
- `last_ingest_at`: 最近入库时间
|
||
- `daily_counts`: 近 7 天每日入库量(用于趋势展示)
|
||
2. 在 `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 |
|