訂明本例驗收任務
假設工具接收器用 status 欄列 pending、complete 或 rejected。data 備註可含 completed 等字眼,但不能覆蓋 status。status 欠項或不在清單便未確認;這是本例接收規則,不聲稱供應商如此。
- 讀明示狀態欄
- 資料文字留在另一欄
- 列狀態或未確認
未知狀態須查接收規則,備註不能補用。
使用已填個案
| 個案 | 已提供輸入 | 預期結構化結果 | 判斷及原因 |
|---|---|---|---|
| 待完成但備註有 completed | {"status":"pending","data":{"note":"completed draft"}} | {"operationState":"pending"} | status 仍是 pending;備註只說草稿文字。 |
| 已完成但備註有 pending | {"status":"complete","data":{"note":"pending review wording"}} | {"operationState":"complete"} | 此本例以 status 為狀態欄,值為 complete。 |
| 欠狀態欄 | {"data":{"note":"completed"}} | {"operationState":"unresolved"} | data 文字不能補作欠缺的 status。 |
逐步處理 no-status 個案,須得到甚麼結果?原因是甚麼?
查看參考答案
{"operationState":"unresolved"}。data 文字不能補作欠缺的 status。
執行完整本機驗算
import assert from 'node:assert/strict';
function evaluate(x){return {operationState:['pending','complete','rejected'].includes(x.status)?x.status:'unresolved'};}
const cases = [
{
"id": "pending-note-complete",
"input": {
"status": "pending",
"data": {
"note": "completed draft"
}
},
"expected": {
"operationState": "pending"
}
},
{
"id": "complete-note-pending",
"input": {
"status": "complete",
"data": {
"note": "pending review wording"
}
},
"expected": {
"operationState": "complete"
}
},
{
"id": "no-status",
"input": {
"data": {
"note": "completed"
}
},
"expected": {
"operationState": "unresolved"
}
}
];
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)}));
原回應連同解讀狀態保存。本例測已有資料的欄位分隔,不測惡意指令,也未證明真實操作完成。