跳至內容
Astera Technology

現時相對篩選與固定快照要分開

重開最近七天規則時,依執行當天重新取界。

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

訂判斷及所需輸入

本例用已附整數日序,不做時區換算。篩選第十天存,第十二天跑,包含兩端的七天是6至12,所以 B6、C11 配到,A4 離開現時結果;第十天固定快照仍 A4、B6。

已填本地測試工作表
情況輸入 JSON
原例測試{"savedDay":10,"executedDay":12,"records":[{"id":"A","day":4},{"id":"B","day":6},{"id":"C","day":11}]}
下載可編輯 CSV ↓

跑所附比較

可執行選取同時保現時及快照編號。相對算式與已存結果是不同資料,現時成員改了,不會因此令原快照出錯。

錯誤及所需輸出
路徑輸出 JSON
錯誤路徑{"liveIds":["A","B","C"],"snapshotIds":["A","B"]}
所需路徑{"liveIds":["B","C"],"snapshotIds":["A","B"]}
下載可編輯 CSV ↓
完整本地 Node24.14.1 程序
import assert from 'node:assert/strict';

const run=function run(i,corrected=true){
    if(i.executedDay===null)return {held:true};const cutoff=(corrected?i.executedDay:i.savedDay)-6;
    return {liveIds:i.records.filter(r=>r.day>=cutoff&&r.day<=i.executedDay).map(r=>r.id),snapshotIds:i.records.filter(r=>r.day>=i.savedDay-6&&r.day<=i.savedDay).map(r=>r.id)};
  };
const cases=[{"input":{"savedDay":10,"executedDay":12,"records":[{"id":"A","day":4},{"id":"B","day":6},{"id":"C","day":11}]},"corrected":false,"expected":{"liveIds":["A","B","C"],"snapshotIds":["A","B"]}},{"input":{"savedDay":10,"executedDay":12,"records":[{"id":"A","day":4},{"id":"B","day":6},{"id":"C","day":11}]},"corrected":true,"expected":{"liveIds":["B","C"],"snapshotIds":["A","B"]}},{"input":{"savedDay":10,"executedDay":10,"records":[{"id":"A","day":4},{"id":"B","day":11}]},"corrected":true,"expected":{"liveIds":["A"],"snapshotIds":["A"]}},{"input":{"savedDay":10,"executedDay":null,"records":[]},"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
執行日與快照同日{"savedDay":10,"executedDay":10,"records":[{"id":"A","day":4},{"id":"B","day":11}]}{"liveIds":["A"],"snapshotIds":["A"]}
執行日基準未知{"savedDay":10,"executedDay":null,"records":[]}{"held":true}
下載可編輯 CSV ↓

原例現時及快照各有哪些編號?

查看參考答案

現時 B、C;快照 A、B。各沿自己已訂日期基準,兩個都可同時正確。

相關資源