JSON Schema
Schema 负责把“页面大概长这样”变成“页面必须长这样”。它让数据验证、生成工具和索引管道能共享同一合同。
Schema 目标
Schema 的价值不在于字段越多越好,而在于让关键字段足够稳定、足够明确。
- 保证每个页面对象都带核心身份字段与更新时间。
- 保证每个 section 有独立 id、标题、摘要和正文数组。
- 限制随意扩展字段,减少不同页面结构漂移。
- 让索引系统能在不知道 HTML 结构的前提下消费正文。
核心字段
最低限度上,一个页面 JSON 至少要回答“它是谁、从哪里来、有什么内容、何时更新”。
| 字段 | 类型 | 作用 |
|---|---|---|
id |
string | 页面稳定标识,与 slug 对齐。 |
url |
string | HTML 页面地址。 |
rawUrl / apiUrl |
string | Markdown 与 JSON 自引用地址。 |
title / summary |
string | 人类和模型都可以直接消费的最短描述。 |
lastUpdated / version |
string | 新鲜度与兼容性信号。 |
sections |
array | 正文主载体,按 section 提供稳定 chunk。 |
Section 对象结构
section 是最重要的检索单元,所以需要比页面顶层更严格的约束。
{
"id": "required-fields",
"title": "核心字段",
"summary": "说明页面对象中必须保留的字段。",
"content": [
"id 是页面稳定标识,与 slug 对齐。",
"sections 数组承载正文主内容。"
]
}
Schema 文件
实际校验合同保存在独立 schema 文件中,而不是只存在说明文档里。
主 schema 文件:https://pingfanfan.github.io/OpenWebsite/schema/knowledge-page.schema.json
站点索引文件:https://pingfanfan.github.io/OpenWebsite/api/site.json