跳至內容
Astera Technology

核對評分理由是否配得上判斷

按有限欄位準則核結構化原因碼,不解讀任意自由文字。

下載完整個案資料及參考答案 ↓

訂明本例驗收任務

假設布林準則須有 title 及 source。結構化原因碼只用 missing-title、missing-source 或 all-required-met。按提供的欄位布林求欠項,已記通過狀態及原因集合都須一致;未知或重複碼無效。不解讀或評自由文字理由。

  1. 按已提供布林求欠欄
  2. 組確切容許原因集合
  3. 判斷與原因分開核

未知碼或自由文字須另設準則,本檢查不能解讀。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
結果與原因不符{"fields":{"title":false,"source":true},"pass":false,"reasons":["all-required-met"]}{"expectedPass":false,"expectedReasons":["missing-title"],"coherent":false}失敗判斷對,all-required-met 卻與欠 title 矛盾。
兩個欠欄原因{"fields":{"title":false,"source":false},"pass":false,"reasons":["missing-source","missing-title"]}{"expectedPass":false,"expectedReasons":["missing-source","missing-title"],"coherent":true}兩個已訂欠欄碼都符合有限欄位準則。
原因碼未登記{"fields":{"title":true,"source":true},"pass":true,"reasons":["looks-good"]}{"status":"invalid-reason-input"}looks-good 不在已訂結構碼內,不能當意思相似便接。
下載可編輯 CSV ↓

逐步處理 unknown-reason 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"status":"invalid-reason-input"}。looks-good 不在已訂結構碼內,不能當意思相似便接。

執行完整本機驗算

另存為 .mjs,以 Node.js 執行;只驗提供的個案
import assert from 'node:assert/strict';

function evaluate(x){
 const allowed=['missing-title','missing-source','all-required-met'];if(typeof x.fields.title!=='boolean'||typeof x.fields.source!=='boolean'||typeof x.pass!=='boolean'||x.reasons.some(r=>!allowed.includes(r))||new Set(x.reasons).size!==x.reasons.length)return {status:'invalid-reason-input'};
 const expected=[];if(!x.fields.title)expected.push('missing-title');if(!x.fields.source)expected.push('missing-source');const expectedPass=expected.length===0;if(expectedPass)expected.push('all-required-met');expected.sort();
 return {expectedPass,expectedReasons:expected,coherent:x.pass===expectedPass&&JSON.stringify([...x.reasons].sort())===JSON.stringify(expected)};
}

const cases = [
  {
    "id": "contradictory-reason",
    "input": {
      "fields": {
        "title": false,
        "source": true
      },
      "pass": false,
      "reasons": [
        "all-required-met"
      ]
    },
    "expected": {
      "expectedPass": false,
      "expectedReasons": [
        "missing-title"
      ],
      "coherent": false
    }
  },
  {
    "id": "two-missing-reasons",
    "input": {
      "fields": {
        "title": false,
        "source": false
      },
      "pass": false,
      "reasons": [
        "missing-source",
        "missing-title"
      ]
    },
    "expected": {
      "expectedPass": false,
      "expectedReasons": [
        "missing-source",
        "missing-title"
      ],
      "coherent": true
    }
  },
  {
    "id": "unknown-reason",
    "input": {
      "fields": {
        "title": true,
        "source": true
      },
      "pass": true,
      "reasons": [
        "looks-good"
      ]
    },
    "expected": {
      "status": "invalid-reason-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)}));
下載可執行例子 ↓

評分連同結構原因及欄位依據保存。原因一致只支持此有限準則,不能證明任意解釋文字屬實。

相關資源