From 1f61b81734f49ce189d03b78ec191fda1668829f Mon Sep 17 00:00:00 2001 From: cfdaily Date: Tue, 9 Jun 2026 07:46:23 +0800 Subject: [PATCH] auto-sync: 2026-06-09 07:46:23 --- src/api/toolchain_routes.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/api/toolchain_routes.py b/src/api/toolchain_routes.py index 504e884..cb443ee 100644 --- a/src/api/toolchain_routes.py +++ b/src/api/toolchain_routes.py @@ -489,6 +489,13 @@ async def gitea_webhook( logger.warning("Failed to parse webhook payload") return Response(status_code=200, content="invalid payload") + # 2. 幂等检查(需要在 payload 解析后,以支持内容去重) + if x_gitea_event and x_gitea_delivery: + async with _idempotency_lock: + if _is_duplicate(x_gitea_event, x_gitea_delivery, payload): + logger.debug("Duplicate webhook: %s/%s", x_gitea_event, x_gitea_delivery) + return Response(status_code=200, content="duplicate") + # 4. 查找 handler handler = _EVENT_HANDLERS.get(x_gitea_event or "") if not handler: