diff --git a/src/api/toolchain_routes.py b/src/api/toolchain_routes.py index cb443ee..1c2795c 100644 --- a/src/api/toolchain_routes.py +++ b/src/api/toolchain_routes.py @@ -66,10 +66,14 @@ def _is_duplicate(event: str, delivery: str, payload: Optional[Dict[str, Any]] = return True # 检查 payload 内容去重(review 事件:同一 PR + 同一用户 + 同一内容) + # 注意:Gitea webhookNotifier 用 review.body,actionsNotifier 用 review.content + # 所以去重 key 需要同时取两个字段,确保两种格式生成相同 key if payload and "review" in event: pr_num = payload.get("pull_request", {}).get("number") sender = payload.get("sender", {}).get("login") - content = payload.get("review", {}).get("content", "") + review = payload.get("review", {}) + # 取 body 或 content,优先 body(webhookNotifier 格式) + content = review.get("body", "") or review.get("content", "") content_key = f"content:{event}:{pr_num}:{sender}:{content}" if content_key in _delivery_cache: logger.info("Content-based duplicate detected: %s PR#%s by %s", event, pr_num, sender)