Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
135 lines
8.9 KiB
Markdown
135 lines
8.9 KiB
Markdown
# 产教数据中台,厂商运营原型
|
||
|
||
本目录展示厂商如何管理招聘数据采集、检查、发布和学校交付。数据来源包括商业招聘平台、公共就业平台和校内系统。
|
||
|
||
## 运行
|
||
|
||
直接打开 `index.html`,或在本目录启动静态服务:
|
||
|
||
```bash
|
||
python3 -m http.server 8080
|
||
```
|
||
|
||
访问 <http://localhost:8080>。
|
||
|
||
## 产品定位
|
||
|
||
该页面用于管理产教分析所需的数据:
|
||
|
||
1. 注册和版本化管理商业、公共、校内三类数据源;
|
||
2. 调度采集任务,管理地域、行业、岗位族、分片、失败隔离和增量水位;
|
||
3. 保存原始快照、内容哈希、连接器代码版本和任务追踪编号;
|
||
4. 将不同来源映射到统一的招聘岗位、企业、薪资和技能契约;
|
||
5. 执行质量校验、企业归一、岗位分类和技能抽取;
|
||
6. 通过带 Manifest、Schema、质量报告、血缘和校验和的数据包向学校交付。
|
||
|
||
## 已纳入的目标数据源
|
||
|
||
| 类别 | 数据源 | 生产接入方式 | 目标数据 |
|
||
|---|---|---|---|
|
||
| 商业平台 | BOSS直聘 | 官方合作 API / 授权数据包 | 岗位、企业、地区、薪资、岗位职责、技能 |
|
||
| 商业平台 | 智联招聘 | 官方合作 API / 书面授权数据包 | 岗位、企业、地区、薪资、岗位职责、技能 |
|
||
| 公共平台 | 全国中小企业招聘平台 | 官方接口优先;获准公开页 | 中小企业岗位、校招、实习和招聘活动 |
|
||
| 公共平台 | 国家大学生就业服务平台 | 官方接口优先;获准公开页 | 高校毕业生岗位、专场招聘和实习 |
|
||
| 公共平台 | 中国公共招聘网 | 官方交换 / 提供单位授权 | 公共就业岗位、重点行业和招聘活动 |
|
||
| 公共平台 | 国聘 | 官方合作 API / 授权数据包 | 国资央企岗位和校园招聘 |
|
||
| 公共平台 | 杭州人才网 | 书面许可接口 / 低速公开页 | 杭州都市圈企业和岗位 |
|
||
| 校内系统 | 就业管理系统 | 租户只读视图 / API / 文件 | 毕业去向、岗位、企业、薪资和专业相关度 |
|
||
| 校内系统 | 实习管理系统 | 租户 API / 文件 | 实习岗位、企业、工资、过程和企业评价 |
|
||
|
||
页面上的“正式运行”、记录数、成功率和时间线均为静态产品样板数据,不代表仓库当前正在访问这些站点。生产连接器默认禁止公网访问,必须完成来源授权、robots、域名白名单、限速和小样本结构审批后才能启用。逐来源方案见 [`../../docs/crawler-source-implementation.md`](../../docs/crawler-source-implementation.md),实现位于 [`../crawler/`](../crawler/)。
|
||
|
||
## 交互范围
|
||
|
||
- **运行总览**:生产批次、采集量、质量、来源健康度、流水线和运营事项。
|
||
- **运营处置**:问题确认与指派、排障、不可变质量处置、独立发布审批、逐学校交付回执、失败重试与租户级回滚。
|
||
- **数据源管理**:来源分类、搜索、资产详情、采集配置、字段映射、运行与审计。
|
||
- **采集任务**:筛选、任务详情、暂停/恢复、新建任务和小样本预检。
|
||
- **采集数据**:查看标准岗位、源端记录、原始快照和隔离记录,支持来源、地区、关键词检索、明细追溯和结果导出。
|
||
- **数据标准**:外部岗位、校内就业、交付 Manifest 三套版本化契约。
|
||
- **导入与导出**:文件拖放、CSV 头部预检、样例下载、Manifest 生成和记录导出。
|
||
- **质量与归一**:质量规则、发布阈值、岗位别名人工确认和批量处理。
|
||
- **审计与交付**:采集、质量、发布、导入导出事件及相关记录。
|
||
|
||
## 可重复演示流程
|
||
|
||
“运营处置”提供一条刷新后仍可继续的示例流程:
|
||
|
||
```text
|
||
告警 → 确认 → 指派 → 开始排障
|
||
→ 修复并重放 → 记录数 / 规则 / 复核签名 VERIFIED
|
||
→ 豁免 / 丢弃 → REVIEWED_BLOCKED,继续阻断
|
||
→ REL-20260823-01 候选版本 → 生成候选 Manifest → 提交后不可修改
|
||
→ 独立审批人批准 / 驳回 → 发布
|
||
→ 逐学校发送状态 → 记录数 + SHA-256 回执
|
||
→ ACKNOWLEDGED / 单校失败重试 / 单租户回滚
|
||
→ 全局回滚申请 → 独立回滚审批 → 执行稳定别名回滚
|
||
```
|
||
|
||
- 杭州人才网问题 `ISSUE-HZRC-20260823-01` 可走完上述流程。只有最后一次处置是 `FIX_REPLAY`,且重放记录数一致、质量规则通过、复核签名存在时,候选版本的发布质量检查才进入 `PASS`。
|
||
- `WAIVE` 与 `DISCARD` 的独立复核会写入 `REVIEWED_BLOCKED`,分别提示另行风险审批或重建候选,不会复用 `VERIFIED/PASS`。
|
||
- 发布申请人默认为陈致远,审批人若选择同一人会被四眼规则阻止。
|
||
- 候选版本必须通过发布质量检查并生成 Manifest 后才能提交;审批期间 Manifest 不可修改,驳回后返回草稿并使旧候选失效。
|
||
- 候选 Manifest 使用输入指纹保证重复生成幂等;产品、租户、截止日期、格式、质量处置和交付摘要未变化时复用原候选,不重复写审计或交换日志。
|
||
- 候选版本、数据版本和包分别为 `REL-20260823-01`、`V2026.08.23`、`EDU-PKG-20260823-01`。
|
||
- 杭州科技职业技术学院使用共享标识 `TENANT-HZVTC`。另外展示浙江机电职业技术大学和宁波城市职业技术学院,交付状态按租户隔离。
|
||
- 原型仓库使用 `localStorage` 命名空间 `eduIndustry.vendorOperations.v1`,当前 `schemaVersion=2`,包含 issues、workOrders、qualityDispositions、releases、approvals、deliveries、auditEvents。页面提供“重置演示数据”恢复种子。
|
||
- `PACKAGE-MANIFEST V1.2` 新增 `release_id` 和 `release_status`,并按三个租户输出彼此独立的记录数与 SHA-256 文件项。候选 Manifest 保持 `DRAFT`,正式发布时生成 `PUBLISHED` Manifest,`approval_reference` 固定引用 `APPROVED` 审批单。
|
||
- 全局回滚和单租户回滚分开办理。全局回滚必须填写原因,并由另一名审批人批准后才可执行;审计记录保存目标稳定版本、审批引用和执行时确定的影响范围,执行过程中不得扩大范围。
|
||
- 静态演示的审计、质量处置、问题时间线和交换日志采用明确保留上限;正式系统必须使用服务端分页、归档和 WORM 审计。
|
||
|
||
## 静态跨端边界
|
||
|
||
本目录是**厂商端静态 SPA 原型**,与仓库根目录下的校园端 `/demo/` 没有运行时连接。双方仅通过约定标识(`TENANT-HZVTC`、`EDU-PKG-20260823-01`、`V2026.08.23`)对照展示,不共享浏览器存储,也不通过静态页面传输数据。
|
||
|
||
按钮中的发送、回执、重试与回滚均为本地状态机模拟:不会访问学校接口、不会写入校园端,也不会发送数据。正式跨端同步必须由服务端 API 完成身份校验、签名、重复请求处理和操作记录。
|
||
|
||
## 标准文件
|
||
|
||
- `schemas/external-job-source.schema.json`
|
||
- `JOB-SIGNAL V3.0`
|
||
- 商业和公共招聘平台的统一岗位信号契约
|
||
- `schemas/school-employment.schema.json`
|
||
- `SCHOOL-EMPLOYMENT V2.2`
|
||
- 校内就业数据契约,包含租户隔离和学生令牌化要求
|
||
- `schemas/school-internship.schema.json`
|
||
- `SCHOOL-INTERNSHIP V2.1`
|
||
- 校内实习数据契约,包含租户隔离、学生令牌化、岗位任务和评价记录
|
||
- `schemas/package-manifest.schema.json`
|
||
- `PACKAGE-MANIFEST V1.2`
|
||
- 版本化导入、导出和学校交付包清单
|
||
- `samples/external-job-sample.csv`
|
||
- 可在“导入与导出”页面上传并执行前端结构预检
|
||
|
||
## “可生产”的含义
|
||
|
||
原型已将正式产品必须具备的对象、状态和证据做进界面与标准,但静态页面不直接执行公网采集。正式后端应实现:
|
||
|
||
- 独立连接器运行时与容器化任务;
|
||
- 消息队列、分片调度、租约、心跳和重试;
|
||
- 原始对象存储、解析层、标准层和交付层分区;
|
||
- 密钥管理、网络出口、源端策略和任务限额;
|
||
- PostgreSQL 元数据、审计事件和数据版本;
|
||
- Schema Registry、质量引擎、岗位与企业归一服务;
|
||
- 数据包签名、租户范围校验和可回滚发布。
|
||
- 问题与工单 API、质量处置不可变事件 API、独立审批 API、版本别名发布/回滚 API;
|
||
- 按租户幂等交付 API、回执验签 API、失败隔离与单租户重试/回滚 API;
|
||
- 服务端强制状态迁移、RBAC/职责分离、并发版本控制与 WORM 审计,不能信任浏览器 `localStorage`。
|
||
|
||
详细实现建议见 [PRODUCTION_ARCHITECTURE.md](./PRODUCTION_ARCHITECTURE.md)。
|
||
|
||
## 验收建议
|
||
|
||
- 桌面:`1440 × 900`
|
||
- 移动:`390 × 844`
|
||
- 可见业务文字不小于 13px
|
||
- 页面级无横向溢出,宽表仅在自身容器内横向滚动
|
||
- 所有深层按钮必须打开业务内容或改变列表状态
|
||
- JavaScript 语法检查:`node --check app.js`
|
||
- JSON 文件检查:`python3 -m json.tool <file>`
|
||
|
||
运营流程预览:
|
||
|
||
- `preview-admin-operations.png`
|
||
- `preview-admin-operations-mobile.png`
|