Data Share Plan 数据共享计划
文档版本:2024-10-10
背景
招聘网站展示给应聘者的岗位存在某些问题
- 职位并不是最新的,有可能是挂职几个月的,一页展示的只有大概三分之一是最近的
- 部分职位因为使用某种手段,使其展示的优先级往上靠
- 某些招聘网站没有提供按职位发布时间进行排序的功能
- 招聘网站提供的职位搜索条件较少,一般只通过职位关键字来进行搜索
基于上述的原因,实现数据共享计划并结合 JobHutting 内置的职位偏好功能是部分痛点的解决方案
数据字段
职位数据字段
职位自编号
发布平台
职位访问地址
职位
公司
公司是否为全称
地区
地址
经度
纬度
职位描述
学历
所需经验
最低薪资
最高薪资
首次发布时间
招聘人
招聘公司
招聘者职位
首次扫描日期
记录更新日期
公司数据字段
公司
公司描述
成立时间
经营状态
法人
统一社会信用代码
官网
社保人数
自身风险数
关联风险数
地址
经营范围
纳税人识别号
所属行业
工商注册号
经度
纬度
数据来源地址
数据来源平台
数据来源记录编号
数据来源更新时间
公司标签数据字段
公司
标签
数据流向
官方数据流(数据上传)
招聘网站 -> JobHunting Extension -> Git(个人GitHub仓库)
共享数据流(数据下载)
共享数据仓库列表 -> Git(个人GitHub仓库) -> JobHunting Extension
数据提交流程
最多每天提交一次,插件启动时开启定时检查任务
查询仓库最近一次提交时间
提交的记录的范围条件:记录更新时间 < 今天0点0分 和记录更新时间 >= 最近一次提交时间
备注:针对公司标签,现在是全量提交
提交的目录
提交时间(YYYY)
提交时间(MM-DD)
job.zip
company.zip
company_tag.zip
数据获取和同步流程
1. 查询仓库60天内的记录
2. 下载60天内缺失的数据文件
3. 根据数据文件进行数据同步
4. 针对不同类型数据进行处理
职位数据
如果是新数据
新增记录
如果是重复数据
根据创建时间来处理,并且需要处理公司名全称问题
公司数据
如果是新数据
新增记录
如果是重复数据
根据数据来源更新时间来处理
公司标签数据
如果是新数据
新增记录
如果是重复数据
合并标签
关键组件及行为
相关表
task 任务表
id 编号
type 任务类型
data_id 数据编号
status 任务状态
error_reason 异常原因
cost_time 最近一次任务执行耗时
retry_count 重试次数
create_datetime 创建时间
update_datetime 更新时间
task_data_upload 任务数据表(上传)
id 编号
type 任务类型
username 用户名
reponame 仓库名
start_datetime 数据开始时间
end_datetime 数据结束时间
data_count 数据总量
create_datetime 创建时间
update_datetime 更新时间
task_data_download 任务数据表(下载)
id 编号
type 任务类型
username 用户名
reponame 仓库名
datetime 文件日期
create_datetime 创建时间
update_datetime 更新时间
file 文件表
id 编号
name 文件名
sha 散列值
encoding 文件内容编码,
content 文件内容,
size 文件尺寸,
type 类型(当前只有file)
create_datetime 创建时间
update_datetime 更新时间
task_data_merge 任务数据表(数据合并)
id 编号
type 任务类型
username 用户名
reponame 仓库名
datetime 文件日期
data_id 文件编号
data_count 数据总量
create_datetime 创建时间
update_datetime 更新时间
data_share_partner 数据共享伙伴信息表
id 编号
username 用户名
reponame 仓库名
repo_type 仓库类型(当前只有GITHUB)
create_datetime 创建时间
update_datetime 更新时间
附表:
任务类型
职位数据上传:TASK_TYPE_JOB_DATA_UPLOAD
公司数据上传:TASK_TYPE_COMPANY_DATA_UPLOAD
公司标签数据上传:TASK_TYPE_COMPANY_TAG_DATA_UPLOAD
职位数据下载:TASK_TYPE_JOB_DATA_DOWNLOAD
公司数据下载:TASK_TYPE_COMPANY_DATA_DOWNLOAD
公司标签数据下载:TASK_TYPE_COMPANY_TAG_DATA_DOWNLOAD
职位数据合并:TASK_TYPE_JOB_DATA_MERGE
公司数据合并:TASK_TYPE_COMPANY_DATA_MERGE
公司标签数据合并:TASK_TYPE_COMPANY_TAG_DATA_MERGE
状态
准备:TASK_STATUS_READY
运行中:TASK_STATUS_RUNNING
完成:TASK_STATUS_FINISHED
异常完成:TASK_STATUS_FINISHED_BUT_ERROR
错误:TASK_STATUS_ERROR
取消:TASK_STATUS_CANCEL
数据存储目录结构
提交时间(YYYY)
提交时间(MM-DD)
job.zip
company.zip
company_tag.zip
GitHub
仓库的建立
所需权限:"Administration" repository permissions (write)
https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#create-a-repository-for-the-authenticated-user
/user/repos
仓库目录的提交&数据文件的提交
所需权限:"Contents" repository permissions (write)
https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#create-or-update-file-contents
/repos/{owner}/{repo}/contents/{path}
仓库目录的查询&仓库文件的下载
所需权限:无
特别事项:This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files,
https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#get-repository-content
/repos/{owner}/{repo}/contents/{path}