跳至內容
Astera Technology

後續參數要引用正確的前一步結果

後續參數須引用指定前步欄位,不借另一結果的有效編號。

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

訂明本例驗收任務

假設工具計劃列明後續參數要取哪一步的哪個輸出欄。已有結果按步驟編號提供。指定欄須在該結果自身存在,且值與參數相同才通過;另一部有效編號也不能借用。

  1. 讀指定步驟及欄位引用
  2. 只查該前步結果
  3. 比對後續參數與該值

欠前步輸出便保留參數未綁定。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
借用了另一結果編號{"results":{"S1":{"caseId":"C7"},"S2":{"docId":"D2"}},"ref":{"step":"S1","field":"caseId"},"argument":"D2"}{"status":"wrong-value","expected":"C7"}S1.caseId 是 C7,D2 雖有效但屬 S2 文件。
正確步驟欄位{"results":{"S1":{"caseId":"C7"}},"ref":{"step":"S1","field":"caseId"},"argument":"C7"}{"status":"bound","expected":"C7"}確切參數沿用已訂前步結果來源。
該欄未產生{"results":{"S1":{"docId":"D2"}},"ref":{"step":"S1","field":"caseId"},"argument":"C7"}{"status":"missing-reference"}結果欠欄,不從記憶或其他呼叫補。
下載可編輯 CSV ↓

逐步處理 field-not-produced 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"status":"missing-reference"}。結果欠欄,不從記憶或其他呼叫補。

執行完整本機驗算

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

function evaluate(x){
 if(!Object.hasOwn(x.results,x.ref.step)||!Object.hasOwn(x.results[x.ref.step],x.ref.field))return {status:'missing-reference'};
 const expected=x.results[x.ref.step][x.ref.field];return {status:x.argument===expected?'bound':'wrong-value',expected};
}

const cases = [
  {
    "id": "wrong-result-id",
    "input": {
      "results": {
        "S1": {
          "caseId": "C7"
        },
        "S2": {
          "docId": "D2"
        }
      },
      "ref": {
        "step": "S1",
        "field": "caseId"
      },
      "argument": "D2"
    },
    "expected": {
      "status": "wrong-value",
      "expected": "C7"
    }
  },
  {
    "id": "correct-reference",
    "input": {
      "results": {
        "S1": {
          "caseId": "C7"
        }
      },
      "ref": {
        "step": "S1",
        "field": "caseId"
      },
      "argument": "C7"
    },
    "expected": {
      "status": "bound",
      "expected": "C7"
    }
  },
  {
    "id": "field-not-produced",
    "input": {
      "results": {
        "S1": {
          "docId": "D2"
        }
      },
      "ref": {
        "step": "S1",
        "field": "caseId"
      },
      "argument": "C7"
    },
    "expected": {
      "status": "missing-reference"
    }
  }
];
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)}));
下載可執行例子 ↓

計劃驗算保留引用來源及值。本例核對確切單值引用,沒有外部呼叫,也不批准之後寫入。

相關資源

系統開發服務 →