訂明本例驗收任務
假設助手只能提議本機清單內完全相同的工具名稱。此例只核對步驟名稱、列未登記項,沒有執行工具。名稱分大小寫,物件繼承名稱也不是工具;近似拼法不會自動更正。
- 讀擬用操作名稱
- 與清單自身名稱逐一比
- 保留未登記名稱,不執行
未登記名稱便不通過,不猜替代工具。
使用已填個案
| 個案 | 已提供輸入 | 預期結構化結果 | 判斷及原因 |
|---|---|---|---|
| 名稱近似 | {"registry":{"read_case":"read-only"},"plan":["read_cases"]} | {"unknown":["read_cases"],"valid":false} | 多了 s 便是未登記工具,不是已登記別名。 |
| 已登記確切名稱 | {"registry":{"read_case":"read-only"},"plan":["read_case"]} | {"unknown":[],"valid":true} | 確切在清單內,只通過名稱核對。 |
| 繼承物件名稱 | {"registry":{"read_case":"read-only"},"plan":["toString"]} | {"unknown":["toString"],"valid":false} | JavaScript 繼承屬性不是清單自身項目。 |
逐步處理 inherited-name 個案,須得到甚麼結果?原因是甚麼?
查看參考答案
{"unknown":["toString"],"valid":false}。JavaScript 繼承屬性不是清單自身項目。
執行完整本機驗算
import assert from 'node:assert/strict';
function evaluate(x){const unknown=x.plan.filter(name=>!Object.hasOwn(x.registry,name));return {unknown,valid:unknown.length===0};}
const cases = [
{
"id": "near-spelling",
"input": {
"registry": {
"read_case": "read-only"
},
"plan": [
"read_cases"
]
},
"expected": {
"unknown": [
"read_cases"
],
"valid": false
}
},
{
"id": "exact-tool",
"input": {
"registry": {
"read_case": "read-only"
},
"plan": [
"read_case"
]
},
"expected": {
"unknown": [],
"valid": true
}
},
{
"id": "inherited-name",
"input": {
"registry": {
"read_case": "read-only"
},
"plan": [
"toString"
]
},
"expected": {
"unknown": [
"toString"
],
"valid": false
}
}
];
for (const c of cases) assert.deepEqual(evaluate(c.input), c.expected, c.id);
console.log(JSON.stringify({checked:cases.length,caseIds:cases.map(c=>c.id)}));
清單版本及擬用名稱跟個案保存。名稱有效不代表參數有效、有讀取權或已操作成功。