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 元数据字段关系结构图

下图展示四个层级之间的依赖关系与数据流向。基础标识层为根节点,内容描述层与审查追溯层并列依赖基础标识层,变更记录层可独立存在但推荐关联基础标识层。

元数据字段层级关系结构图 基础标识层 package_id / package_version / created_at (必选,全局唯一) 内容描述层 title / description / content_type (必选+可选) 审查追溯层 reviewer_id / review_stage / review_deadline (必选+可选) 变更记录层 change_id / change_type / change_summary (必选+可选) 扩展层(可选) 箭头方向:依赖/引用关系 虚线表示可选关联

4.5 元数据字段约束验证流程

在归档包生成与解析过程中,约束验证按以下顺序执行,确保元数据在进入存储层之前即被清洗为合规状态。

  1. 结构验证:检查 JSON 结构完整性,确认所有必选字段存在且类型正确。
  2. 格式验证:对 string 类型字段执行正则匹配,对 datetime 字段执行格式解析。
  3. 枚举验证:检查 enum 字段值是否在允许值列表中,大小写敏感。
  4. 长度验证:检查 string 与 array 字段的长度是否在约束范围内。
  5. 空值策略验证:对禁止空值的字段检查 null 与缺失情况。
验证失败处理规则:任一验证步骤失败,归档包整体标记为“无效”,并返回包含失败字段名称与失败原因的错误报告。不允许部分通过、部分忽略的宽松模式。

通过上述字段定义、命名规则、数据类型与约束条件的系统化设计,元数据规范具备了机器可读、可验证、可扩展的特性,为后续的审查意见与变更记录测试验证提供了精确的契约基础。