# 任务名称 Webhook中继与通知系统(Docker化) ## 背景与目标 - 统一接收外部Webhook,按规则路由到目标端点,并生成通知消息推送至飞书/企业微信。 - 基于配置可扩展,支持新增目标、remark映射与事件模板。 ## 业务范围 - 接收JSON负载,至少包含 `remark`、`event_define_no`、`trans_amt`、`trans_order_info.cash_resp_desc`、可选 `actual_ref_amt`。 - 路由策略:按 `remark` 映射至一个或多个目标Webhook;若无匹配使用 `default_targets`。 - 通知策略:按 `event_define_no` 模板生成文本,支持多渠道并发推送。 ## 技术范围 - Python 3.12、FastAPI、httpx - Docker 容器化;SQLite 持久化,模型定义见 `app/db.py` - 管理后台 `/admin` 维护端点、规则、动作、模板与通知渠道 - 结构化日志;失败重试(在转发逻辑中可扩展);请求与分发记录持久化 ## 输入与输出 - 输入:`POST /webhook/{namespace}` JSON - 输出:200 返回路由与通知结果结构 ## 验收标准 - 能正确解析示例 JSON 并生成消息,包含商户名、支付方式、金额、状态与日期,例如:`【某商户】支付宝 收款 5.50 元,状态:成功,日期:20251220` - `remark=imcgcd03` 时转发至配置第3个目标;`remark=imcgcd02` 时至第2个目标 - 同时推送至飞书与企业微信(若配置存在多个机器人则全部发送) - 失败记录与重试可配置(次数与退避) ## 部署与运行方式(概要) - 运行模式: - 作为独立 FastAPI 服务运行,暴露 `POST /webhook/{namespace}` 与 `/admin` 管理界面 - 通过 Docker 镜像部署到服务器 - 最低运行环境: - Python 3.12 或兼容的 Docker 运行时 - 对外开放的 HTTP 端口(默认 8080) - 配置与数据: - 数据库:默认 `sqlite:///./config/data.db`,可通过环境变量 `DB_PATH` 调整 - 规则、模板、渠道均通过 Web 管理后台写入数据库,无需修改代码或 YAML ## 边界与不做事项 - 不实现目标端点的认证协议,默认匿名POST;可通过配置扩展签名 - 不提供长期持久幂等存储,默认进程内短期去重 ## 风险与约束 - 目标Webhook不可达导致延迟;通过重试与超时保护 - 通知渠道限流;并发可控与错误日志