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