核对同名项目与屏幕归属,避免改错练习项目
本页展示随包原生输入和验收参考。目标产品运行状态:未运行。表格与图片不代表产品已经生成的结果。
input.csv / practice-data.json
本课实际输入字段
| title | purpose | expectedRoute | field | format |
|---|---|---|---|---|
| 活动站 | sandbox | /booking | ||
| 活动站 | archive | /old-home | ||
| projectId | bare ID, without projects/ |
建立裸ID引用
reference.csv:作者验收映射,不是目标API回包
| check | network | mustMatch | purpose |
|---|---|---|---|
| local reference | none until method called | ||
| screen ownership | selected project | ||
| mutation target | sandbox |
规则与输入文件原文
{
"inputRows": [
{
"title": "活动站",
"purpose": "sandbox",
"expectedRoute": "/booking"
},
{
"title": "活动站",
"purpose": "archive",
"expectedRoute": "/old-home"
},
{
"field": "projectId",
"format": "bare ID, without projects/"
}
],
"referenceRows": [
{
"check": "local reference",
"network": "none until method called"
},
{
"check": "screen ownership",
"mustMatch": "selected project"
},
{
"check": "mutation target",
"purpose": "sandbox"
}
],
"invalidRows": [
{
"projectId": "projects/bare-id",
"error": "wrong SDK input format"
},
{
"selection": "first same-title row",
"error": "unstable identity"
}
],
"notes": [
"全部输入为作者自制教学资料,不含真实客户或账号。",
"referenceRows是校验基准,不是目标模型预测或识别结果;targetProduct=not_run。"
],
"files": {
"input.json": "[\n {\n \"title\": \"活动站\",\n \"purpose\": \"sandbox\",\n \"expectedRoute\": \"/booking\"\n },\n {\n \"title\": \"活动站\",\n \"purpose\": \"archive\",\n \"expectedRoute\": \"/old-home\"\n },\n {\n \"field\": \"projectId\",\n \"format\": \"bare ID, without projects/\"\n }\n]\n",
"reference.json": "{\n \"identity\": \"作者验收参考,非模型返回\",\n \"rows\": [\n {\n \"check\": \"local reference\",\n \"network\": \"none until method called\"\n },\n {\n \"check\": \"screen ownership\",\n \"mustMatch\": \"selected project\"\n },\n {\n \"check\": \"mutation target\",\n \"purpose\": \"sandbox\"\n }\n ]\n}\n",
"invalid.json": "{\n \"identity\": \"作者构造负例,非实际错误回包\",\n \"rows\": [\n {\n \"projectId\": \"projects/bare-id\",\n \"error\": \"wrong SDK input format\"\n },\n {\n \"selection\": \"first same-title row\",\n \"error\": \"unstable identity\"\n }\n ]\n}\n",
"case.md": "# Stitch项目ID查找:核对同名项目与屏幕归属,避免改错练习项目\n\nStitch项目ID查找用两个同名项目检验资源归属。把bare ID、项目名称和screen来源分开后,再执行单页读取和修改,避免把展示标题当唯一身份。\n\n## 准备项目台账\n\n记录两个都叫“活动站”的项目,并注明练习/归档用途。\n\n示例台账不填虚构官方ID,真正ID在账号查询后写入。\n\n## 读取项目列表\n\n调用stitch.projects()查看实际可访问项目。\n\n列表顺序会变,不能把第一项永久视为练习项目。\n\n## 建立裸ID引用\n\n用stitch.project(\"裸ID\")创建本地引用。\n\nSDK该动作本身不请求API,存在引用不证明项目可访问。\n\n## 验证屏幕归属\n\n读取project.screens()并按目标路由核对screenId。\n\n不要把另一个项目同标题screen直接传给当前project。\n\n## 只做一次读取检查\n\n通过project.getScreen(screenId)取得详情,记录实际返回身份。\n\n遇到无权限或找不到时回到归属清单,而非重新创建同名项目。\n\n## 执行前展示目标\n\n将项目ID、屏幕ID和页面缩略图放在同一检查页。\n\n修改前人工确认目标是练习副本,避免作用到归档基线。\n\n## 保留身份链\n\n保存列表、选定理由和读取结果,后续操作按同一链追踪。\n\n仅本地构造对象时保持云端未验证。\n\n身份:输入与参考为作者材料;localCli有实测记录时仅证明对应CLI运行,目标云端与模型推理未执行。\n"
}
}应当保留的约束
| check | network | mustMatch | purpose |
|---|---|---|---|
| local reference | none until method called | ||
| screen ownership | selected project | ||
| mutation target | sandbox |
故意构造的错误样例
| projectId | error | selection |
|---|---|---|
| projects/bare-id | wrong SDK input format | |
| unstable identity | first same-title row |
先保存真实产品输出,再逐项对照。actualOutput / actualResult 在未执行时保持 not_run,不能把这里的期望值复制成已测结果。