訂明本例驗收任務
假設同事評分核對把相同候選與個案在兩回合倒轉呈現次序。按固定候選編號配對布林結果,不按位置;兩回合須同一組編號各一筆。標籤改了列覆核觀察不一致,不推斷心理原因。
- 兩回合按相同候選編號配
- 配對時不用呈現位置
- 列改標籤給同事覆核
候選欠配或重複,配對核對無效。
使用已填個案
| 個案 | 已提供輸入 | 預期結構化結果 | 判斷及原因 |
|---|---|---|---|
| 一個評分變了 | {"first":[{"id":"A","pass":true},{"id":"B","pass":false}],"second":[{"id":"B","pass":false},{"id":"A","pass":false}]} | {"changed":["A"]} | A 由通過變失敗,B 一直失敗。 |
| 只改顯示次序 | {"first":[{"id":"A","pass":true},{"id":"B","pass":false}],"second":[{"id":"B","pass":false},{"id":"A","pass":true}]} | {"changed":[]} | 用固定編號可見沒有改評,即使位置倒轉。 |
| 第二回合欠候選 | {"first":[{"id":"A","pass":true},{"id":"B","pass":false}],"second":[{"id":"A","pass":true}]} | {"error":"matched-review-input"} | 欠 B,不能做同候選的次序核對。 |
逐步處理 unmatched-candidate 個案,須得到甚麼結果?原因是甚麼?
查看參考答案
{"error":"matched-review-input"}。欠 B,不能做同候選的次序核對。
執行完整本機驗算
import assert from 'node:assert/strict';
function evaluate(x){
const ids=x.first.map(r=>r.id).sort(),secondIds=x.second.map(r=>r.id).sort();if(new Set(ids).size!==ids.length||new Set(secondIds).size!==secondIds.length||JSON.stringify(ids)!==JSON.stringify(secondIds)||[...x.first,...x.second].some(r=>typeof r.pass!=='boolean'))return {error:'matched-review-input'};
return {changed:ids.filter(id=>x.first.find(r=>r.id===id).pass!==x.second.find(r=>r.id===id).pass)};
}
const cases = [
{
"id": "one-label-changes",
"input": {
"first": [
{
"id": "A",
"pass": true
},
{
"id": "B",
"pass": false
}
],
"second": [
{
"id": "B",
"pass": false
},
{
"id": "A",
"pass": false
}
]
},
"expected": {
"changed": [
"A"
]
}
},
{
"id": "order-only-change",
"input": {
"first": [
{
"id": "A",
"pass": true
},
{
"id": "B",
"pass": false
}
],
"second": [
{
"id": "B",
"pass": false
},
{
"id": "A",
"pass": true
}
]
},
"expected": {
"changed": []
}
},
{
"id": "unmatched-candidate",
"input": {
"first": [
{
"id": "A",
"pass": true
},
{
"id": "B",
"pass": false
}
],
"second": [
{
"id": "A",
"pass": true
}
]
},
"expected": {
"error": "matched-review-input"
}
}
];
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)}));
保留兩次呈現次序及配對標籤。改評值得查準則,但假設觀察未證明是呈現次序導致。