- 添加FastAPI应用基础结构,包括主入口、路由和模型定义
- 实现Webhook接收端点(/webhook/{namespace})和健康检查(/health)
- 添加管理后台路由和模板,支持端点、目标、渠道和模板管理
- 包含SQLite数据库模型定义和初始化逻辑
- 添加日志记录和统计服务
- 包含Dockerfile和配置示例文件
- 添加项目文档,包括设计、流程图和验收标准
2.3 KiB
2.3 KiB
任务名称
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 镜像部署到服务器
- 作为独立 FastAPI 服务运行,暴露
- 最低运行环境:
- Python 3.12 或兼容的 Docker 运行时
- 对外开放的 HTTP 端口(默认 8080)
- 配置与数据:
- 数据库:默认
sqlite:///./config/data.db,可通过环境变量DB_PATH调整 - 规则、模板、渠道均通过 Web 管理后台写入数据库,无需修改代码或 YAML
- 数据库:默认
边界与不做事项
- 不实现目标端点的认证协议,默认匿名POST;可通过配置扩展签名
- 不提供长期持久幂等存储,默认进程内短期去重
风险与约束
- 目标Webhook不可达导致延迟;通过重试与超时保护
- 通知渠道限流;并发可控与错误日志