Preserve recovered terminal upload results
This commit is contained in:
+2
-1
@@ -76,7 +76,8 @@
|
||||
const keyUnambiguous = k !== null && filesPerKey.get(k).size <= 1;
|
||||
const uploadedAfterSnapshot = savedAtFloor !== null && k !== null && keyUnambiguous
|
||||
&& logMaxTs.has(k) && logMaxTs.get(k) >= savedAtFloor;
|
||||
if (doneInLog || uploadedAfterSnapshot) {
|
||||
const hasTerminalResult = job && job.status === 'done' && job.result && typeof job.result === 'object';
|
||||
if (!hasTerminalResult && (doneInLog || uploadedAfterSnapshot)) {
|
||||
removed.push(job);
|
||||
} else {
|
||||
kept.push(job);
|
||||
|
||||
@@ -73,6 +73,32 @@ test('empty/missing inputs do not throw', () => {
|
||||
|
||||
const T = (s) => Date.parse(s.replace(' ', 'T'));
|
||||
|
||||
test('history fallback keeps a serialized successful terminal result through log deduplication', () => {
|
||||
const result = {
|
||||
download_url: 'https://voe.sx/e/exact-link',
|
||||
embed_url: 'https://voe.sx/e/exact-embed',
|
||||
file_code: 'exact-code'
|
||||
};
|
||||
const restored = JSON.parse(JSON.stringify({
|
||||
savedAt: T('2026-08-13 12:00:00'),
|
||||
queueJobs: [{
|
||||
id: 'history-fallback-done',
|
||||
file: 'C:/dl/episode.mkv',
|
||||
fileName: 'episode.mkv',
|
||||
hoster: 'voe.sx',
|
||||
status: 'done',
|
||||
result
|
||||
}]
|
||||
}));
|
||||
const log = [{ fileName: 'episode.mkv', hoster: 'voe.sx', ts: T('2026-08-13 12:00:05') }];
|
||||
|
||||
const { kept, removed } = partitionRestoredJobsByLog(restored.queueJobs, log, restored.savedAt);
|
||||
|
||||
assert.deepEqual(removed, []);
|
||||
assert.deepEqual(kept, restored.queueJobs);
|
||||
assert.deepEqual(kept[0].result, result);
|
||||
});
|
||||
|
||||
test('ts-gate: preview job uploaded AFTER the snapshot is dropped (the ghost bug)', () => {
|
||||
const jobs = [job('preview', 'a.mkv', 'voe.sx')];
|
||||
const log = [{ fileName: 'a.mkv', hoster: 'voe.sx', ts: T('2026-06-19 12:00:05') }];
|
||||
|
||||
Reference in New Issue
Block a user