{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "edu-content source registry", "description": "机器可读的 L1 资源清单。一个 YAML 文件 = 一个域,内含多条 source。source 是四层血缘链的根 id。", "type": "object", "required": [ "sources" ], "additionalProperties": false, "properties": { "sources": { "type": "array", "items": { "$ref": "#/definitions/source" } } }, "definitions": { "source": { "type": "object", "required": [ "id", "title", "publisher", "type", "license", "status", "subjects" ], "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$", "description": "全局唯一 kebab-case,血缘链根 id" }, "title": { "type": "string" }, "publisher": { "type": "string" }, "type": { "type": "string", "enum": [ "dataset", "website", "book", "internal", "tool" ] }, "url": { "type": [ "string", "null" ], "description": "internal 可为 null" }, "license": { "type": "string", "enum": [ "official-free", "mit", "cc-by", "cc-by-sa", "cc-nc-education", "restricted", "internal-only", "llm-generated", "unknown" ] }, "license_note": { "type": "string" }, "fetch_method": { "type": "string", "enum": [ "curl", "git-clone", "manual-download", "manual-export", "generated" ], "description": "unknown 允许暂存" }, "status": { "type": "string", "enum": [ "planned", "fetching", "fetched", "failed", "archived" ] }, "fetched_at": { "type": [ "string", "null" ], "pattern": "^\\d{4}-\\d{2}-\\d{2}$|^$" }, "items": { "type": "array", "items": { "$ref": "#/definitions/item" } }, "subjects": { "type": "array", "items": { "type": "string", "enum": [ "chinese", "math", "english", "science", "morality", "physics", "chemistry", "biology", "history", "geography", "it", "ket", "pet", "fce", "amc8", "cspj" ] }, "description": "该来源覆盖的学科/考试域,取值与 structured/ 目录名一致;用于回答『某学科有哪些来源』" }, "stages": { "type": "array", "items": { "type": "string", "enum": [ "primary", "junior" ] }, "description": "覆盖学段:primary=小学,junior=初中" }, "url_template": { "type": [ "string", "null" ], "description": "fetch_method=curl 时的下载模板,{item_id} 占位;item.url 优先级更高。例:https://host/sims/{item_id}/{item_id}_zh_CN.html" } } }, "item": { "type": "object", "required": [ "id", "title" ], "additionalProperties": false, "properties": { "id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$", "description": "source 内唯一" }, "title": { "type": "string" }, "oss_key": { "type": [ "string", "null" ], "description": "fetched 后必填,形如 edu-raw/exams/ket/vocab/cambridge-official/a2-key-vocab.pdf" }, "sha256": { "type": [ "string", "null" ], "pattern": "^[a-f0-9]{64}$|^$" }, "size": { "type": [ "integer", "null" ], "minimum": 0 }, "media_type": { "type": "string" }, "fetch_date": { "type": [ "string", "null" ], "pattern": "^\\d{4}-\\d{2}-\\d{2}$|^$" }, "status": { "type": "string", "enum": [ "planned", "fetching", "fetched", "failed", "archived" ] }, "note": { "type": "string" }, "url": { "type": [ "string", "null" ], "description": "该条目的直接下载地址;缺省时由 source.url_template 渲染" }, "src_path": { "type": [ "string", "null" ], "description": "fetch_method=git-clone 时,条目在仓库内的相对路径(打包为 oss_key 指向的归档)" } } } } }