訂明本例驗收任務
假設草稿準則每項是布林結果,另列必要項。必要項全部存在且通過才可通過;其餘項保留但不能抵銷,欠必要項便未確認。本例不採平均分或加權折衷。
- 各項標籤分開保留
- 只用明訂必要項
- 必要依據全齊且通過才通過
必要項欠或格式錯,先補準則依據。
使用已填個案
| 個案 | 已提供輸入 | 預期結構化結果 | 判斷及原因 |
|---|---|---|---|
| 語句好不能抵必要格式失敗 | {"required":["content","format"],"outcomes":{"content":true,"format":false,"fluency":true}} | {"missing":[],"failed":["format"],"invalid":[],"status":"fail"} | 兩項通過也不能抵必要 format 失敗。 |
| 必要通過、額外項失敗 | {"required":["content"],"outcomes":{"content":true,"style":false}} | {"missing":[],"failed":[],"invalid":[],"status":"pass"} | style 留作記錄,此準則沒有列必要。 |
| 欠必要項結果 | {"required":["content","format"],"outcomes":{"content":true}} | {"missing":["format"],"failed":[],"invalid":[],"status":"unresolved"} | 欠 format 不靜默當通過或失敗。 |
逐步處理 missing-required 個案,須得到甚麼結果?原因是甚麼?
查看參考答案
{"missing":["format"],"failed":[],"invalid":[],"status":"unresolved"}。欠 format 不靜默當通過或失敗。
執行完整本機驗算
import assert from 'node:assert/strict';
function evaluate(x){
const missing=x.required.filter(k=>!Object.hasOwn(x.outcomes,k)),failed=x.required.filter(k=>Object.hasOwn(x.outcomes,k)&&x.outcomes[k]===false),invalid=x.required.filter(k=>Object.hasOwn(x.outcomes,k)&&typeof x.outcomes[k]!=='boolean');
return {missing,failed,invalid,status:missing.length+invalid.length?'unresolved':failed.length?'fail':'pass'};
}
const cases = [
{
"id": "fluency-no-compensation",
"input": {
"required": [
"content",
"format"
],
"outcomes": {
"content": true,
"format": false,
"fluency": true
}
},
"expected": {
"missing": [],
"failed": [
"format"
],
"invalid": [],
"status": "fail"
}
},
{
"id": "required-pass-optional-fail",
"input": {
"required": [
"content"
],
"outcomes": {
"content": true,
"style": false
}
},
"expected": {
"missing": [],
"failed": [],
"invalid": [],
"status": "pass"
}
},
{
"id": "missing-required",
"input": {
"required": [
"content",
"format"
],
"outcomes": {
"content": true
}
},
"expected": {
"missing": [
"format"
],
"failed": [],
"invalid": [],
"status": "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)}));
每版驗收準則保留必要項清單。改阻擋項是改規則,不是只改分數顯示。