Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
267 lines
7.6 KiB
JSON
267 lines
7.6 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://schemas.edu-industry.cn/job-signal/3.0.0/schema.json",
|
|
"title": "JOB-SIGNAL V3.0 外部招聘岗位信号",
|
|
"description": "商业招聘平台、公共就业平台与招聘活动平台统一岗位信号契约。",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"record_id",
|
|
"source_platform",
|
|
"source_record_id",
|
|
"source_url",
|
|
"collector_task_id",
|
|
"collector_version",
|
|
"raw_snapshot_id",
|
|
"collected_at",
|
|
"first_seen_at",
|
|
"last_seen_at",
|
|
"status",
|
|
"job_title_raw",
|
|
"job_description",
|
|
"enterprise_name",
|
|
"region_code",
|
|
"employment_type",
|
|
"source_payload_hash",
|
|
"content_hash",
|
|
"data_version"
|
|
],
|
|
"properties": {
|
|
"record_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "平台生成的全局唯一记录标识。"
|
|
},
|
|
"source_platform": {
|
|
"type": "string",
|
|
"pattern": "^[A-Z][A-Z0-9_]{1,31}$",
|
|
"description": "来源平台代码,例如 BOSS、ZHAOPIN、BRZP、NCSS、MOHRSS。"
|
|
},
|
|
"source_record_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256,
|
|
"description": "来源平台内的记录标识,与 source_platform 组成幂等键。"
|
|
},
|
|
"source_url": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"maxLength": 2048,
|
|
"description": "可回溯的来源页面或接口定位。"
|
|
},
|
|
"collector_task_id": {
|
|
"type": "string",
|
|
"pattern": "^JOB-[A-Za-z0-9-]{8,64}$",
|
|
"description": "生产采集任务追踪编号。"
|
|
},
|
|
"collector_version": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128,
|
|
"description": "采集器名称、语义版本与代码提交摘要。"
|
|
},
|
|
"raw_snapshot_id": {
|
|
"type": "string",
|
|
"pattern": "^RAW-[A-Za-z0-9-]{8,96}$",
|
|
"description": "原始响应或页面快照编号。"
|
|
},
|
|
"collected_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "平台实际采集时间,必须包含时区。"
|
|
},
|
|
"first_seen_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "平台首次发现该岗位的时间。"
|
|
},
|
|
"last_seen_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "平台最近一次确认该岗位仍存在的时间。"
|
|
},
|
|
"published_at": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time",
|
|
"description": "来源平台显示的岗位发布时间。"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["active", "inactive", "expired", "unknown"],
|
|
"description": "岗位在当前数据版本中的状态。"
|
|
},
|
|
"job_title_raw": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 200,
|
|
"description": "来源岗位名称原文。"
|
|
},
|
|
"job_title_normalized": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 200,
|
|
"description": "映射到统一岗位词典后的标准名称。"
|
|
},
|
|
"job_code": {
|
|
"type": ["string", "null"],
|
|
"pattern": "^[A-Z0-9.-]{2,32}$",
|
|
"description": "统一岗位分类代码。"
|
|
},
|
|
"job_description": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 30000,
|
|
"description": "去除展示标记与联系方式后的岗位职责和要求文本。"
|
|
},
|
|
"enterprise_name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 300,
|
|
"description": "来源企业名称原文。"
|
|
},
|
|
"enterprise_id": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 128,
|
|
"description": "平台企业归一标识。"
|
|
},
|
|
"enterprise_credit_code": {
|
|
"type": ["string", "null"],
|
|
"pattern": "^[0-9A-Z]{18}$",
|
|
"description": "可公开确认时使用的统一社会信用代码。"
|
|
},
|
|
"enterprise_industry_code": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 32,
|
|
"description": "企业所属行业代码。"
|
|
},
|
|
"enterprise_scale": {
|
|
"type": ["string", "null"],
|
|
"enum": ["micro", "small", "medium", "large", "unknown", null],
|
|
"description": "统一企业规模分组。"
|
|
},
|
|
"region_code": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]{6}$",
|
|
"description": "GB/T 2260 六位行政区划代码。"
|
|
},
|
|
"workplace": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 500,
|
|
"description": "来源工作地点文本。"
|
|
},
|
|
"employment_type": {
|
|
"type": "string",
|
|
"enum": ["full_time", "internship", "part_time", "contract", "campus", "other"],
|
|
"description": "统一用工或招聘类型。"
|
|
},
|
|
"recruitment_count": {
|
|
"type": ["integer", "null"],
|
|
"minimum": 0,
|
|
"maximum": 1000000,
|
|
"description": "明确披露时记录计划招聘人数。"
|
|
},
|
|
"education_level": {
|
|
"type": ["string", "null"],
|
|
"enum": ["none", "secondary", "vocational", "associate", "bachelor", "master", "doctor", "unknown", null],
|
|
"description": "最低学历要求。"
|
|
},
|
|
"experience_min_years": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0,
|
|
"maximum": 60,
|
|
"description": "最低工作经验年限。"
|
|
},
|
|
"salary_min": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0,
|
|
"maximum": 10000000,
|
|
"description": "统一折算后的税前月薪下限,单位为 salary_currency。"
|
|
},
|
|
"salary_max": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0,
|
|
"maximum": 10000000,
|
|
"description": "统一折算后的税前月薪上限。"
|
|
},
|
|
"salary_currency": {
|
|
"type": ["string", "null"],
|
|
"pattern": "^[A-Z]{3}$",
|
|
"description": "ISO 4217 币种代码,境内岗位通常为 CNY。"
|
|
},
|
|
"salary_period": {
|
|
"type": ["string", "null"],
|
|
"enum": ["month", "year", "day", "hour", "negotiable", "unknown", null],
|
|
"description": "来源薪资周期,统一月薪字段与原始周期同时保留。"
|
|
},
|
|
"benefits": {
|
|
"type": "array",
|
|
"maxItems": 100,
|
|
"items": {
|
|
"type": "string",
|
|
"maxLength": 100
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "福利标签。"
|
|
},
|
|
"skills": {
|
|
"type": "array",
|
|
"maxItems": 200,
|
|
"items": {
|
|
"type": "string",
|
|
"maxLength": 100
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "使用技能词典提取并统一名称的技能标签。"
|
|
},
|
|
"keywords": {
|
|
"type": "array",
|
|
"maxItems": 200,
|
|
"items": {
|
|
"type": "string",
|
|
"maxLength": 100
|
|
},
|
|
"uniqueItems": true,
|
|
"description": "用于检索的业务关键词。"
|
|
},
|
|
"source_payload_hash": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{64}$",
|
|
"description": "原始响应载荷 SHA-256。"
|
|
},
|
|
"content_hash": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{64}$",
|
|
"description": "规范化业务内容 SHA-256,用于内容去重。"
|
|
},
|
|
"parsing_version": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 128,
|
|
"description": "解析规则版本。"
|
|
},
|
|
"normalized_at": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time",
|
|
"description": "岗位和技能归一完成时间。"
|
|
},
|
|
"data_version": {
|
|
"type": "string",
|
|
"pattern": "^V[0-9]{4}\\.[0-9]{2}\\.[0-9]{2}(?:\\.[0-9]+)?$",
|
|
"description": "进入分析层的数据版本。"
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"required": ["salary_min", "salary_max"]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"salary_max": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|