fix(release-cleanup): selectReleasesToDelete 在時間相同時以 id 決定順序

排序加入次要鍵(id 數值,大者視為新),避免多筆 created_at 相同時保留/
刪除的選擇因引擎排序穩定性而不確定。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jeffery
2026-06-26 11:43:16 +08:00
co-authored by Claude Opus 4.8
parent e0ab6f2693
commit 9e33cb8ba8
+7 -2
View File
@@ -18,9 +18,14 @@ export function selectReleasesToDelete(releases, keepCount) {
return Number.isNaN(time) ? 0 : time return Number.isNaN(time) ? 0 : time
} }
// 先一次性計算每筆的時間戳,避免在排序比較中重複呼叫 Date.parse。 // 先一次性計算每筆的時間戳,避免在排序比較中重複呼叫 Date.parse。
// 時間相同時以 id(數值,大者為新)作為次要鍵,確保排序結果具決定性。
return releases return releases
.map((release) => ({ release, time: createdTime(release) })) .map((release) => ({
.sort((a, b) => b.time - a.time) release,
time: createdTime(release),
id: Number(release?.id) || 0,
}))
.sort((a, b) => b.time - a.time || b.id - a.id)
.map((entry) => entry.release) .map((entry) => entry.release)
.slice(keepCount) .slice(keepCount)
} }