区分上传文件与创建项目设计系统的两阶段回执
本页展示随包原生输入和验收参考。目标产品运行状态:未运行。表格与图片不代表产品已经生成的结果。
input.csv / practice-data.json
本课实际输入字段
| kind | primary | surface | body | button |
|---|---|---|---|---|
| colors | #184A45 | #F7F4EC | ||
| typography | 16px/1.6 Arial | |||
| component | primary background, white text |
上传规范文件
reference.csv:作者验收映射,不是目标API回包
| stage | artifact |
|---|---|
| 1 | uploaded sourceScreen + screenInstance |
| 2 | design system assets/{assetId} |
| 3 | screen consumes confirmed tokens |
规则与输入文件原文
{
"inputRows": [
{
"kind": "colors",
"primary": "#184A45",
"surface": "#F7F4EC"
},
{
"kind": "typography",
"body": "16px/1.6 Arial"
},
{
"kind": "component",
"button": "primary background, white text"
}
],
"referenceRows": [
{
"stage": 1,
"artifact": "uploaded sourceScreen + screenInstance"
},
{
"stage": 2,
"artifact": "design system assets/{assetId}"
},
{
"stage": 3,
"artifact": "screen consumes confirmed tokens"
}
],
"invalidRows": [
{
"claim": "uploaded file means system exists",
"error": "second stage missing"
},
{
"assetId": "sourceScreen ID",
"error": "wrong resource kind"
}
],
"notes": [
"全部输入为作者自制教学资料,不含真实客户或账号。",
"referenceRows是校验基准,不是目标模型预测或识别结果;targetProduct=not_run。"
],
"files": {
"input.json": "[\n {\n \"kind\": \"colors\",\n \"primary\": \"#184A45\",\n \"surface\": \"#F7F4EC\"\n },\n {\n \"kind\": \"typography\",\n \"body\": \"16px/1.6 Arial\"\n },\n {\n \"kind\": \"component\",\n \"button\": \"primary background, white text\"\n }\n]\n",
"reference.json": "{\n \"identity\": \"作者验收参考,非模型返回\",\n \"rows\": [\n {\n \"stage\": 1,\n \"artifact\": \"uploaded sourceScreen + screenInstance\"\n },\n {\n \"stage\": 2,\n \"artifact\": \"design system assets/{assetId}\"\n },\n {\n \"stage\": 3,\n \"artifact\": \"screen consumes confirmed tokens\"\n }\n ]\n}\n",
"invalid.json": "{\n \"identity\": \"作者构造负例,非实际错误回包\",\n \"rows\": [\n {\n \"claim\": \"uploaded file means system exists\",\n \"error\": \"second stage missing\"\n },\n {\n \"assetId\": \"sourceScreen ID\",\n \"error\": \"wrong resource kind\"\n }\n ]\n}\n",
"case.md": "# Stitch导入DESIGN.md:区分上传文件与创建项目设计系统的两阶段回执\n\nStitch导入DESIGN.md先上传文件,再通过其screen instance创建设计系统。本课明确两步的不同产物,避免文件出现在画布后就误以为后续页面已经受规范控制。\n\n## 校验设计文件\n\n用官方alpha schema准备主色、排版和组件规范,记录摘要。\n\n先在本地lint,不把无效规范上传后交给云端猜测。\n\n## 核对目标项目\n\n查看projectId和项目现有设计系统清单。\n\n已有同用途系统时先确定更新对象,不连续创建同名资产。\n\n## 上传规范文件\n\n按官方upload-to-stitch流程上传DESIGN.md并保存返回。\n\n小文件可按当前工具schema使用upload_design_md,较大文件读取官方脚本流程。\n\n## 创建设计系统资产\n\n将上传返回的selectedScreenInstance交给create_design_system_from_design_md。\n\n上传成功不代替这一步,失败时保留文件与错误供重试判断。\n\n## 查回资产身份\n\n读取设计系统清单,记录assets/{assetId}中的实际assetId。\n\n文件screen身份和设计资产身份分开,不互相替代。\n\n## 检查新页面消费\n\n在隔离项目生成一张简单卡片或选择目标页面应用规范。\n\n比较实际色值和字体,规范存在并不保证每个像素都已遵守。\n\n## 保存两阶段证据\n\n交付本地规范、上传回执、设计系统回执和消费页面。\n\n尚未执行的云端步骤标not_run,避免只交作者预览当官方结果。\n\n身份:输入与参考为作者材料;localCli有实测记录时仅证明对应CLI运行,目标云端与模型推理未执行。\n",
"DESIGN.md": "---\nversion: alpha\nname: Field Kit\ncolors:\n primary: \"#184A45\"\n surface: \"#F7F4EC\"\ntypography:\n body-md:\n fontFamily: Arial\n fontSize: 16px\n fontWeight: 400\n lineHeight: 1.6\nrounded:\n sm: 8px\nspacing:\n sm: 8px\ncomponents:\n button-primary:\n backgroundColor: \"{colors.primary}\"\n textColor: \"#FFFFFF\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.sm}\"\n padding: \"{spacing.sm}\"\n---\n## Overview\nField Kit的预约界面。\n## Colors\n主色用于主要操作。\n## Typography\n正文使用body-md。\n## Layout\n使用8px间距。\n## Shapes\n使用8px圆角。\n## Components\n主要按钮统一消费语义引用。\n"
}
}应当保留的约束
| stage | artifact |
|---|---|
| 1 | uploaded sourceScreen + screenInstance |
| 2 | design system assets/{assetId} |
| 3 | screen consumes confirmed tokens |
故意构造的错误样例
| claim | error | assetId |
|---|---|---|
| uploaded file means system exists | second stage missing | |
| wrong resource kind | sourceScreen ID |
先保存真实产品输出,再逐项对照。actualOutput / actualResult 在未执行时保持 not_run,不能把这里的期望值复制成已测结果。