From e905842b62326bfcf9769e49bb073772d77253aa Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Wed, 3 Jun 2026 01:01:50 +0200 Subject: [PATCH] fix: idempotency guard on wrapup handler to prevent duplicate processing --- crates/application/src/wrapup/handle_requested.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/application/src/wrapup/handle_requested.rs b/crates/application/src/wrapup/handle_requested.rs index a71e860..2c6fba1 100644 --- a/crates/application/src/wrapup/handle_requested.rs +++ b/crates/application/src/wrapup/handle_requested.rs @@ -13,6 +13,13 @@ pub async fn execute( start_date: chrono::NaiveDate, end_date: chrono::NaiveDate, ) -> Result<(), DomainError> { + if let Ok(Some(rec)) = ctx.repos.wrapup_repo.get_by_id(&wrapup_id).await { + if rec.status == WrapUpStatus::Ready || rec.status == WrapUpStatus::Generating { + tracing::debug!("wrapup {} already {}, skipping", wrapup_id.value(), if rec.status == WrapUpStatus::Ready { "ready" } else { "generating" }); + return Ok(()); + } + } + ctx.repos .wrapup_repo .update_status(&wrapup_id, &WrapUpStatus::Generating, None)