訂明本例驗收任務
假設答案鍵覆核把題目列 agreed 或 disputed。只有 agreed 且預期為布林才可比候選布林;disputed 不論候選如何都保留待判。已評與待判分開,已同意題的標籤若無效也另列無效,不選首位同事。
- 先讀標籤判定狀態
- 只評有效已同意標籤
- 爭議及無效題分開保留
待判鍵須記錄判定,本例沒有多數或首標籤優先。
使用已填個案
| 個案 | 已提供輸入 | 預期結構化結果 | 判斷及原因 |
|---|---|---|---|
| 一題標籤有分歧 | {"cases":[{"id":"C1","state":"agreed","expected":true,"answer":true},{"id":"C2","state":"disputed","expected":null,"answer":true}]} | {"scored":[{"id":"C1","pass":true}],"held":["C2"],"invalid":[]} | 只評 C1,C2 不入通過分母。 |
| 鍵已同意,候選不符 | {"cases":[{"id":"C1","state":"agreed","expected":false,"answer":true}]} | {"scored":[{"id":"C1","pass":false}],"held":[],"invalid":[]} | 候選與已同意布林鍵不符。 |
| 已同意卻鍵格式錯 | {"cases":[{"id":"C3","state":"agreed","expected":"pass","answer":true}]} | {"scored":[],"held":[],"invalid":["C3"]} | 布林準則不能拿字串鍵評。 |
逐步處理 invalid-agreed-key 個案,須得到甚麼結果?原因是甚麼?
查看參考答案
{"scored":[],"held":[],"invalid":["C3"]}。布林準則不能拿字串鍵評。
執行完整本機驗算
import assert from 'node:assert/strict';
function evaluate(x){
const scored=[],held=[],invalid=[];for(const c of x.cases){if(c.state==='disputed')held.push(c.id);else if(c.state!=='agreed'||typeof c.expected!=='boolean'||typeof c.answer!=='boolean')invalid.push(c.id);else scored.push({id:c.id,pass:c.answer===c.expected});}
return {scored,held,invalid};
}
const cases = [
{
"id": "one-held-label",
"input": {
"cases": [
{
"id": "C1",
"state": "agreed",
"expected": true,
"answer": true
},
{
"id": "C2",
"state": "disputed",
"expected": null,
"answer": true
}
]
},
"expected": {
"scored": [
{
"id": "C1",
"pass": true
}
],
"held": [
"C2"
],
"invalid": []
}
},
{
"id": "agreed-candidate-fail",
"input": {
"cases": [
{
"id": "C1",
"state": "agreed",
"expected": false,
"answer": true
}
]
},
"expected": {
"scored": [
{
"id": "C1",
"pass": false
}
],
"held": [],
"invalid": []
}
},
{
"id": "invalid-agreed-key",
"input": {
"cases": [
{
"id": "C3",
"state": "agreed",
"expected": "pass",
"answer": true
}
]
},
"expected": {
"scored": [],
"held": [],
"invalid": [
"C3"
]
}
}
];
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)}));
答案鍵有爭議也保留候選輸出。少評題會改覆蓋,已評小組全通過不能當完整驗收。