---
id: 018
title: agent_gateway 通知真接入
status: closed
labels: [feature, p2]
assignee: team-lead
created_at: 2026-04-23
closed_at: 2026-04-24
---

# #018 agent gateway 真通知

## 背景

当前 profile 有 agent_gateway_url / hooks_token 字段，但服务端是否真 POST 待验证（可能代码里是 stub）。

## 进度

### ✅ 已完成（2026-04-24，commit 0df4649）

审计结果：`_maybe_notify` **已经在真发 HTTP POST**（httpx.post 到 profile.agent_gateway_url），
只是缺 retry。补齐：

- `_push_notification` 改成 3 次重试（1 + 2 个 retry），间隔 2s / 5s（指数退避）
- 单次请求 10s timeout，retry 总兜底 ≤ 20s
- Admin CLI `xq admin notify retry --limit --since-hours`：人工触发批量 retry 最近失败的通知
- `mail.retry_failed_notifications(limit, since_hours)` 模块函数 + `POST /admin/notify/retry` endpoint
- 262 → 267 tests all green

12h 去重 / 鉴权：早已实现（`_should_suppress_dup` + Bearer token），本次没动。

端到端测试 gateway 搭建：未做，现有 monkeypatch httpx.post 的单元测试已覆盖 retry 路径。

## 相关

P2-1 of blueprint。
feature: retry_failed_notifications (FEAT-018)。
