跳至內容
Astera Technology

工具結果截斷時不要當作全數摘要

部分結果只報已見行數,總數保留未知並帶回續頁引用。

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

訂明本例驗收任務

假設答案接收器收到行、布林 complete 及文字或 null 的 next 引用。complete 為真須沒有 next,否則資料矛盾。未完整只列觀察行數、總數保留 null,並保存 next;檢查器不跟進該引用。

  1. 核對完整度欄
  2. 數已提供行
  3. 部分資料保留未知總數與續頁引用

標記矛盾,不可聲稱摘要涵蓋全數。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
部分結果看到兩行{"rows":["A","B"],"complete":false,"next":"T"}{"partial":true,"observed":2,"total":null,"next":"T"}看到兩行不代表總結果只有兩行。
完整而空白結果{"rows":[],"complete":true,"next":null}{"partial":false,"observed":0,"total":0,"next":null}已列完整且空白,可確認零行。
續頁引用是數字{"rows":["A"],"complete":false,"next":42}{"error":"completeness-contract"}本例引用欄只接文字或 null,不接數值。
完整標記與續頁矛盾{"rows":["A"],"complete":true,"next":"T"}{"error":"completeness-contract"}本規則不能同時指已結束又有續頁。
下載可編輯 CSV ↓

逐步處理 complete-with-next 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"error":"completeness-contract"}。本規則不能同時指已結束又有續頁。

執行完整本機驗算

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

function evaluate(x){
 if(typeof x.complete!=='boolean'||(x.next!==null&&typeof x.next!=='string')||(x.complete&&x.next!==null))return {error:'completeness-contract'};
 return {partial:!x.complete,observed:x.rows.length,total:x.complete?x.rows.length:null,next:x.next};
}

const cases = [
  {
    "id": "partial-two-rows",
    "input": {
      "rows": [
        "A",
        "B"
      ],
      "complete": false,
      "next": "T"
    },
    "expected": {
      "partial": true,
      "observed": 2,
      "total": null,
      "next": "T"
    }
  },
  {
    "id": "complete-empty",
    "input": {
      "rows": [],
      "complete": true,
      "next": null
    },
    "expected": {
      "partial": false,
      "observed": 0,
      "total": 0,
      "next": null
    }
  },
  {
    "id": "nontext-reference",
    "input": {
      "rows": [
        "A"
      ],
      "complete": false,
      "next": 42
    },
    "expected": {
      "error": "completeness-contract"
    }
  },
  {
    "id": "complete-with-next",
    "input": {
      "rows": [
        "A"
      ],
      "complete": true,
      "next": "T"
    },
    "expected": {
      "error": "completeness-contract"
    }
  }
];
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)}));
下載可執行例子 ↓

同事摘要跟原完整度標記一起保留。本接收器不讀續頁,也未認證會變動資料的完整副本。

相關資源