跳至內容
Astera Technology

排程期限是開始,還是已完成?

按所需事件,對已附開始及完成觀察。

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

訂判斷及所需輸入

本例從已訂起點計,期限第六十分鐘;工作第五十九開始、第六十四完成。六十前開始符合,六十前完成卻不符。採購要求是後者,不能只憑早開始就算合適。

已填本地測試工作表
情況輸入 JSON
原例測試{"start":59,"finish":64,"deadline":60}
下載可編輯 CSV ↓

跑所附比較

本地程序真正判兩個事件,各保自己的意思;時間是題內假設觀察,不是供應商實測保證。

錯誤及所需輸出
路徑輸出 JSON
錯誤路徑{"startFits":true,"finishFits":false,"requirementSatisfied":true}
所需路徑{"startFits":true,"finishFits":false,"requirementSatisfied":false}
下載可編輯 CSV ↓
完整本地 Node24.14.1 程序
import assert from 'node:assert/strict';

const run=function run(i,corrected=true){
    if(i.start===null||i.finish===null||i.deadline===null)return {held:true};
    const startFits=i.start<=i.deadline,finishFits=i.finish<=i.deadline;
    return {startFits,finishFits,requirementSatisfied:corrected?finishFits:startFits};
  };
const cases=[{"input":{"start":59,"finish":64,"deadline":60},"corrected":false,"expected":{"startFits":true,"finishFits":false,"requirementSatisfied":true}},{"input":{"start":59,"finish":64,"deadline":60},"corrected":true,"expected":{"startFits":true,"finishFits":false,"requirementSatisfied":false}},{"input":{"start":59,"finish":60,"deadline":60},"corrected":true,"expected":{"startFits":true,"finishFits":true,"requirementSatisfied":true}},{"input":{"start":59,"finish":null,"deadline":60},"corrected":true,"expected":{"held":true}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
下載可執行例子 ↓

按邊界依據作判斷

剛好六十完成,符合本例包含邊界的期限;完成觀察欠缺就停,不靠開始時間推。

  1. 訂期限看哪個事件
  2. 對該事件實際觀察
  3. 其他時間另留

完成時間欠缺便保未明。

可編輯邊界輸入及結果
條件輸入 JSON預期輸出 JSON
剛好期限完成{"start":59,"finish":60,"deadline":60}{"startFits":true,"finishFits":true,"requirementSatisfied":true}
尚未有完成觀察{"start":59,"finish":null,"deadline":60}{"held":true}
下載可編輯 CSV ↓

原例符合所需完成期限嗎?

查看參考答案

不符合。五十九開始雖及時,六十四完成已超六十;須記所需完成事件。

相關資源