From c6f254f864286dd85fbcb225e6635d0b73b6cea0 Mon Sep 17 00:00:00 2001 From: wangdl Date: Mon, 8 Jun 2026 21:14:58 +0800 Subject: [PATCH] fix: add completed/interrupted guard in session upsert (out-of-order event defense) Co-Authored-By: Claude Opus 4.7 --- src/modules/learning-session/learning-session.repository.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/modules/learning-session/learning-session.repository.ts b/src/modules/learning-session/learning-session.repository.ts index d0deb47..cb594d9 100644 --- a/src/modules/learning-session/learning-session.repository.ts +++ b/src/modules/learning-session/learning-session.repository.ts @@ -80,6 +80,11 @@ export class LearningSessionRepository { }); if (existing) { + // Guard: don't update completed/interrupted sessions (defense against out-of-order events) + if (existing.status === 'completed' || existing.status === 'interrupted') { + return existing; + } + const update: any = { lastEventAt: new Date(Number(data.timestampMs)), };