2.6 KiB
2.6 KiB
sources/ — L1 资源清单(全库唯一锚点)
sources/ 回答:数据从哪来、什么 license、原始文件在 OSS 哪里。任何原始文件(PDF/ZIP/MP3/原始 JSON)进 OSS 前,必须在此先登记。
文件组织
- 一个 YAML 文件 = 一个域,内含多条
source。 - 域分三类目录:
china/(国内课内 + 开源数据集)、exams/(考试来源)、internal/(自制无来源课件)。 - 文件名用 kebab-case,如
cepoc.yaml、cambridge-official.yaml、smartedu.yaml。
两级结构
source(引用单位,血缘根 id)
└─ items[](具体文件 = OSS 对象)
- L3 结构化记录引用
source_id(必填)+ 可选source_item_id(精确到文件)。 internal类 source:url: null,license: internal-only,oss_key指向归档对象。
字段(详见 source.schema.json)
| 字段 | 必填 | 说明 |
|---|---|---|
id |
✅ | 全局唯一 kebab-case,血缘链根 id |
title |
✅ | 人类可读 |
publisher |
✅ | 发布方 |
type |
✅ | dataset/website/book/internal/tool |
url |
⚠️ | internal 可 null |
license |
✅ | 见 ../LICENSES.md 枚举 |
license_note |
❌ | 许可说明(如"研究/教育用途") |
fetch_method |
❌ | curl/git-clone/manual-download/manual-export/generated |
status |
✅ | planned→fetching→fetched/failed;archived 保留合规记录 |
fetched_at |
❌ | 下载日期 YYYY-MM-DD |
items[] |
❌ | 具体文件,每项含 id/title/oss_key/sha256/size/media_type/fetch_date |
items[].oss_key 在 fetched 后必填;sha256/size 由 tools/oss_sync.py 上传时自动回填。
示例
sources:
- id: cepoc
title: CEPOC 剑桥机读完形题库
publisher: Cambridge ALTA, University of Cambridge
type: dataset
url: https://github.com/CambridgeALTA/cepoc
license: cc-nc-education
license_note: "研究/教育用途,非商业(见仓库 licence.txt)"
fetch_method: git-clone
status: fetched
fetched_at: "2026-08-21"
items:
- id: cepoc-ket-json
title: KET.json(6套68空)
oss_key: edu-raw/exams/ket/questions/cepoc/KET.json
sha256: "a1b2c3..." # oss_sync.py 自动回填
size: 12345
media_type: application/json
fetch_date: "2026-08-21"
status: fetched
状态生命周期
planned(调研发现,未下载)→ fetching → fetched/failed。调研报告迁移时大量条目初始为 planned。unknown 状态超过 30 天 lint 报 warning。