# 数据结构

本项目把“外部原始数据”“待审核数据”“页面发布数据”分开保存，避免姓名查询的首个结果未经消歧就进入地图。

## 人物发布记录

```json
{
  "cbdb_person_id": "32540",
  "name_zh": "李白",
  "name_en": "Li Bai",
  "dynasty": "唐",
  "birth_year": 701,
  "death_year": 762,
  "birth_certainty": "exact",
  "death_certainty": "exact",
  "native_place": {
    "cbdb_addr_id": "14903",
    "historical_name": "任城",
    "status": "confirmed",
    "longitude": null,
    "latitude": null,
    "coordinate_system": null,
    "coordinate_certainty": "unknown"
  },
  "review_status": "verified",
  "sources": []
}
```

## 关系发布记录

关系字段、方向、审核状态和证据等级见[术语表](knowledge-graph-terminology.md#六关系数据结构)。

`data/published/relations.json` 同时保存 `evidence` 数组；关系以
`evidence_refs` 引用证据记录。每条 CBDB 证据保留查询人物 ID、关联人物 ID、
关系代码、原词、检索 URL、CBDB 所列来源、页码、题名与备注。

首批数据只公开证据等级为 B 的 CBDB 关系。`Source=未知` 的结构化关系进入
审核文件，不因人物知名或关系看似合理而自动发布。

## 数据发布约束

1. `published/people.json` 只收录 `review_status=verified` 的人物。
2. `published/relations.json` 只收录两个端点均已确认且关系已审核的记录。
3. 页面不得直接读取 `review/` 或把 CBDB 原始响应整体暴露为发布数据。
4. 原始响应中的 `Year=-1` 转成 `null`。
5. 地图无可靠坐标时显示在待定位列表，不伪造坐标。
6. `AddrTypeId=1` 才能进入籍贯字段；`IndexAddr` 只能标记为 `index_only`。
7. CBDB 地址表坐标是历史行政地点参考点，统一标记为
   `coordinate_certainty=administrative_centroid`。
