跳至內容
Astera Technology

匯出 AI 評分時保留多個錯誤原因

每個案與失敗原因對各一行,通過題也保留明示輸出。

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

訂明本例驗收任務

假設評分匯出以個案與原因碼每對一行。沒有錯誤的個案仍出一行 pass,原因留空。每題原因碼不可重複,重複便先拒結果;輸出行表供 CSV 寫入,不把原因合成難拆字串。

  1. 核每題原因不重複
  2. 每個案原因對展開一行
  3. 通過個案也明示一行

原因碼重複,匯出前修診斷資料。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
兩個不同失敗原因{"cases":[{"id":"C1","failures":["fieldA","fieldB"]}]}{"rows":[["C1","fail","fieldA"],["C1","fail","fieldB"]]}兩原因各佔一行,沿用同一個案編號。
通過個案仍可見{"cases":[{"id":"C2","failures":[]}]}{"rows":[["C2","pass",""]]}沒有失敗也保留該題,不從匯出消失。
原因碼重複{"cases":[{"id":"C1","failures":["fieldA","fieldA"]}]}{"error":"duplicate-reason"}重複 fieldA 是診斷集合錯誤,不是兩個獨立失敗。
下載可編輯 CSV ↓

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

查看參考答案

{"error":"duplicate-reason"}。重複 fieldA 是診斷集合錯誤,不是兩個獨立失敗。

執行完整本機驗算

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

function evaluate(x){
 if(x.cases.some(c=>new Set(c.failures).size!==c.failures.length))return {error:'duplicate-reason'};
 return {rows:x.cases.flatMap(c=>c.failures.length?c.failures.map(reason=>[c.id,'fail',reason]):[[c.id,'pass','']])};
}

const cases = [
  {
    "id": "two-independent-reasons",
    "input": {
      "cases": [
        {
          "id": "C1",
          "failures": [
            "fieldA",
            "fieldB"
          ]
        }
      ]
    },
    "expected": {
      "rows": [
        [
          "C1",
          "fail",
          "fieldA"
        ],
        [
          "C1",
          "fail",
          "fieldB"
        ]
      ]
    }
  },
  {
    "id": "pass-still-visible",
    "input": {
      "cases": [
        {
          "id": "C2",
          "failures": []
        }
      ]
    },
    "expected": {
      "rows": [
        [
          "C2",
          "pass",
          ""
        ]
      ]
    }
  },
  {
    "id": "duplicate-reason-code",
    "input": {
      "cases": [
        {
          "id": "C1",
          "failures": [
            "fieldA",
            "fieldA"
          ]
        }
      ]
    },
    "expected": {
      "error": "duplicate-reason"
    }
  }
];
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)}));
下載可執行例子 ↓

把這些行寫成 CSV 時另加合適引號。此例只定行單位,不聲稱已防任意試算表公式,也沒有匯出到其他系統。

相關資源