跳至內容
Astera Technology

分清工具資料與操作狀態欄

明示狀態欄與備註分開,文字寫 completed 也不能覆蓋 pending。

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

訂明本例驗收任務

假設工具接收器用 status 欄列 pending、complete 或 rejected。data 備註可含 completed 等字眼,但不能覆蓋 status。status 欠項或不在清單便未確認;這是本例接收規則,不聲稱供應商如此。

  1. 讀明示狀態欄
  2. 資料文字留在另一欄
  3. 列狀態或未確認

未知狀態須查接收規則,備註不能補用。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
待完成但備註有 completed{"status":"pending","data":{"note":"completed draft"}}{"operationState":"pending"}status 仍是 pending;備註只說草稿文字。
已完成但備註有 pending{"status":"complete","data":{"note":"pending review wording"}}{"operationState":"complete"}此本例以 status 為狀態欄,值為 complete。
欠狀態欄{"data":{"note":"completed"}}{"operationState":"unresolved"}data 文字不能補作欠缺的 status。
下載可編輯 CSV ↓

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

查看參考答案

{"operationState":"unresolved"}。data 文字不能補作欠缺的 status。

執行完整本機驗算

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

function evaluate(x){return {operationState:['pending','complete','rejected'].includes(x.status)?x.status:'unresolved'};}

const cases = [
  {
    "id": "pending-note-complete",
    "input": {
      "status": "pending",
      "data": {
        "note": "completed draft"
      }
    },
    "expected": {
      "operationState": "pending"
    }
  },
  {
    "id": "complete-note-pending",
    "input": {
      "status": "complete",
      "data": {
        "note": "pending review wording"
      }
    },
    "expected": {
      "operationState": "complete"
    }
  },
  {
    "id": "no-status",
    "input": {
      "data": {
        "note": "completed"
      }
    },
    "expected": {
      "operationState": "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)}));
下載可執行例子 ↓

原回應連同解讀狀態保存。本例測已有資料的欄位分隔,不測惡意指令,也未證明真實操作完成。

相關資源