Skip to content

评测报告 · 内容管线

内容加载器契约 ​

通过·VitePress 1.6.4

TL;DR ​

现在由一个 createContentLoader 读取三个集合,输出统一的卡片数据形状。契约 是刻意严格的:目录索引、模板与草稿会被排除,结论值必须落在枚举内,每个 URL 必须唯一。一条格式错误的数据应该被转成 null 后消失,而不是渲染成坏卡片。

待验证命题 ​

所有由 <CardGrid> 渲染的卡片都来自同一个 loader,并且每一条到达客户端的 frontmatter 记录都满足同一套 Schema。

Schema ​

字段规则失效表现
url非空、唯一、不以 / 结尾重复 key、索引页被当成卡片
kind从路径推导:work / case / eval徽章错误、索引筛选错误
lang从 /zh/ 前缀推导英文卡片泄漏到中文页
title非空字符串卡片标题空白
tldr可选字符串摘要缺失
capabilities可选字符串列表标签列表塌陷
metrics可选 { label, value } 列表指标行渲染出 undefined
verdictpass / conditional / fail误导性的结论徽章
date可选 ISO YYYY-MM-DD非法的 <time> 值
draft为 true 时排除未完成内容被发布

检查 ​

  1. 读取六个 glob(work、case、eval × en、zh)。
  2. 排除以 / 结尾的 URL(索引页)和 template slug。
  3. 确认每条记录都有非空 title 和可识别的 kind。
  4. 确认 verdict 只取三个允许值之一,或为 null。
  5. 确认每个指标对象都同时带有 label 和 value。
  6. 断言跨语言 URL 唯一。
  7. 渲染两个专区索引,确认每张卡片都指向已构建页面。

证据 ​

检查项结果
已加载集合3
Schema 错误0
重复 URL0
索引 / 模板泄漏0
枚举外的结论值0
失效卡片链接0

结论 ​

通过。 loader 是卡片数据的唯一生产者,两个索引页都直接从它渲染,不需要 页面级映射代码。

残留风险:loader 只规范化 frontmatter,不验证正文。一张卡片可以在形状上 正确,却仍然包含没有证据的断言。因此每份报告都必须在正文里给出复现步骤。

相关 ​

Crystaria (with Paw and Kyle)