{ "$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 } } } } ] }