4. 元数据规范总览:核心元数据字段定义、字段命名规则、数据类型与约束条件
归档包元数据规范是确保审查意见与变更记录可追溯、可解析、可长期保存的基础。本章从字段定义、命名规则、数据类型与约束条件三个维度,系统梳理核心元数据字段体系,为后续的测试验证提供精确的契约依据。
4.1 核心元数据字段定义
元数据字段分为基础标识层、内容描述层、审查追溯层与变更记录层四个层级,共计 12 个必选字段与 6 个可选字段。下表列出各字段的名称、语义与层级归属。
| 层级 | 字段名称 | 语义定义 | 必选/可选 |
|---|---|---|---|
| 基础标识层 | package_id | 归档包全局唯一标识符,采用 UUID v4 格式 | 必选 |
| 基础标识层 | package_version | 归档包语义版本号,遵循 SemVer 2.0 | 必选 |
| 基础标识层 | created_at | 归档包创建时间戳,ISO 8601 格式,精确到毫秒 | 必选 |
| 内容描述层 | title | 归档包简短标题,不超过 120 个字符 | 必选 |
| 内容描述层 | description | 归档包详细描述,支持 Markdown 格式,不超过 2000 字符 | 可选 |
| 内容描述层 | content_type | 归档内容类型枚举:review_opinion / change_record / mixed | 必选 |
| 审查追溯层 | reviewer_id | 审查者唯一标识,关联组织用户系统 | 必选 |
| 审查追溯层 | review_stage | 审查阶段枚举:draft / peer_review / senior_review / approved / rejected | 必选 |
| 审查追溯层 | review_deadline | 审查截止日期,仅日期部分,ISO 8601 | 可选 |
| 变更记录层 | change_id | 变更记录唯一标识,与 package_id 独立 | 必选 |
| 变更记录层 | change_type | 变更类型枚举:add / modify / delete / deprecate | 必选 |
| 变更记录层 | change_summary | 变更摘要文本,不超过 500 字符 | 必选 |
| 变更记录层 | affected_components | 受影响的组件列表,JSON 数组格式 | 可选 |
| 扩展层 | tags | 自定义标签数组,用于分类与检索 | 可选 |
| 扩展层 | checksum | 归档包 SHA-256 校验值,用于完整性验证 | 可选 |
设计原则:必选字段确保最小可行元数据集合,可选字段提供扩展弹性。所有字段在序列化时均需显式声明,不允许隐式默认值。
4.2 字段命名规则
字段命名遵循以下三条硬性规则,以保证跨系统解析的一致性:
- 小写蛇形命名法:所有字段名使用小写字母,单词之间以下划线分隔。例如
review_stage、change_type。 - 禁止缩写歧义:除业界通用缩写(如 id、uuid)外,禁止使用自定义缩写。例如
rev_stg不合法,必须写为review_stage。 - 层级前缀可选:为提升可读性,允许在字段名前添加层级前缀缩写,但非强制。例如
base_package_id或直接package_id均可接受。
命名校验示例:
# 合法命名
package_id
review_stage
change_summary
affected_components
# 非法命名
PackageID # 大写字母
reviewStage # 驼峰命名
chg_sum # 自定义缩写
affectedComps # 驼峰 + 缩写
4.3 数据类型与约束条件
每个字段均绑定严格的数据类型与约束条件,约束条件包括长度限制、枚举值范围、格式正则与空值策略。下表列出关键字段的完整约束定义。
| 字段名称 | 数据类型 | 约束条件 | 空值策略 |
|---|---|---|---|
| package_id | string | 正则:^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ |
禁止空值 |
| package_version | string | 正则:^\d+\.\d+\.\d+(-[a-zA-Z0-9.]+)?$ |
禁止空值 |
| created_at | datetime | 格式:yyyy-MM-dd'T'HH:mm:ss.SSSXXX |
禁止空值 |
| content_type | enum | 允许值:review_opinion、change_record、mixed |
禁止空值 |
| review_stage | enum | 允许值:draft、peer_review、senior_review、approved、rejected |
禁止空值 |
| change_type | enum | 允许值:add、modify、delete、deprecate |
禁止空值 |
| change_summary | string | 最大长度 500 字符,禁止 HTML 标签 | 禁止空值 |
| affected_components | array[string] | 每个元素最大 100 字符,数组长度 ≤ 20 | 允许空数组 |
| checksum | string | 正则:^[a-f0-9]{64}$ |
允许空值 |
约束验证要点:枚举字段必须严格匹配允许值列表,大小写敏感。datetime 字段必须包含时区偏移量,不允许无时区的时间字符串。空值策略中“禁止空值”指字段在 JSON 中必须存在且值不为 null。
4.4 元数据字段关系结构图
下图展示四个层级之间的依赖关系与数据流向。基础标识层为根节点,内容描述层与审查追溯层并列依赖基础标识层,变更记录层可独立存在但推荐关联基础标识层。
4.5 元数据字段约束验证流程
在归档包生成与解析过程中,约束验证按以下顺序执行,确保元数据在进入存储层之前即被清洗为合规状态。
- 结构验证:检查 JSON 结构完整性,确认所有必选字段存在且类型正确。
- 格式验证:对 string 类型字段执行正则匹配,对 datetime 字段执行格式解析。
- 枚举验证:检查 enum 字段值是否在允许值列表中,大小写敏感。
- 长度验证:检查 string 与 array 字段的长度是否在约束范围内。
- 空值策略验证:对禁止空值的字段检查 null 与缺失情况。
验证失败处理规则:任一验证步骤失败,归档包整体标记为“无效”,并返回包含失败字段名称与失败原因的错误报告。不允许部分通过、部分忽略的宽松模式。
通过上述字段定义、命名规则、数据类型与约束条件的系统化设计,元数据规范具备了机器可读、可验证、可扩展的特性,为后续的审查意见与变更记录测试验证提供了精确的契约基础。