Skip to content

@cndiv/data-protocol ​

Patch 的格式校验,以及建表、写 CSV 时共用的字符串。普通查询用不到这个包。

npm · 包内完整说明:packages/data-protocol/README.md

安装 ​

bash
npm i @cndiv/data-protocol

依赖 zod 和 @cndiv/core。

会用到的导出 ​

导出做什么
validatePatch(data)检查一份未知 JSON 是不是合法 Patch。成功时 { success: true, data },失败时 { success: false, error }。error 是校验器的原始 JSON,不是一句中文
DATABASE_SCHEMA建 divisions / metadata / patch_history 的 SQL。divisions 的主键是 (code, year)
DIVISIONS_CSV_HEADERCSV 表头:code,name,level,parent_code,year,status,source_type,confidence_score
csvCell(value)按 CSV 规则给单元格加引号
validatePostalRecord(row)检查邮编和区号。返回值和 validatePatch 不一样,失败时 error 是 Zod 错误对象

操作类型是 add、remove、update、move。code 必须是 12 位。文件怎么写、撤销为什么优先用 deprecated,见 贡献 Patch。

例子 ​

ts
import { validatePatch } from '@cndiv/data-protocol';

const ok = validatePatch({
  meta: { author: 'docs-example' },
  operations: [
    { op: 'update', code: '310115005059', status: 'deprecated', note: '撤销合并' },
  ],
});
console.log(ok.success); // true
// 缺省字段会被填上:evidence_confidence = "medium",apply_after = "2023-baseline"

const bad = validatePatch({
  meta: { author: 'docs-example' },
  operations: [{ op: 'update', code: '310115', status: 'deprecated' }],
});
console.log(bad.success); // false,code 不是 12 位

数据来源于公开政府网站(国家统计局、民政部国家地名信息库),仅供学习与研究使用。代码以 MIT 许可。