- 添加FastAPI应用基础结构,包括主入口、路由和模型定义
- 实现Webhook接收端点(/webhook/{namespace})和健康检查(/health)
- 添加管理后台路由和模板,支持端点、目标、渠道和模板管理
- 包含SQLite数据库模型定义和初始化逻辑
- 添加日志记录和统计服务
- 包含Dockerfile和配置示例文件
- 添加项目文档,包括设计、流程图和验收标准
2.0 KiB
2.0 KiB
架构设计
总体架构
flowchart LR
A[Incoming Webhook] --> B[FastAPI /webhook/{namespace}]
B --> C[Router]
C --> D[Targets Forwarder]
B --> E[Event Template]
E --> F[Channels Sender]
D --> G[External Webhook Targets]
F --> H[Feishu]
F --> I[WeCom]
模块分层
- 接入层:
app/main.py(FastAPI 入口与 Webhook 接收) - 管理后台:
app/admin.py(端点、规则、模板与渠道的增删改查) - 领域模型与持久化:
app/db.py,app/models.py - 规则引擎:
app/services/engine.py(树形规则 + 动作编排) - 通知发送:
app/services/notify.py - 统计与日志:
app/services/stats.py,app/logging.py
关键接口
engine.process(endpoint_id, payload) -> (routed: List, notified: List)_exec_forward(target, payload) -> Result(内部使用)_exec_notify(channel, msg) -> Result(内部使用)- 管理接口:
/admin/*用于维护端点、规则树、动作、模板与渠道
数据契约
- 输入:示例 JSON 结构,关键字段存在于顶层与
trans_order_info - 输出:
{"namespace": str, "routed": [...], "notified": [...]},其中:routed:每个转发目标的执行摘要(目标名、是否成功、失败原因)notified:每个通知渠道的执行摘要(渠道名、是否成功、失败原因)
异常策略
- 超时与网络错误重试;失败记录结构化日志
- 非致命错误不影响其他目标或渠道发送
部署与运行(概要)
- 本地直接运行:
- 创建并激活虚拟环境(可选)
- 执行
pip install -r requirements.txt - 启动服务:
uvicorn app.main:app --host 0.0.0.0 --port 8080
- Docker 部署:
- 构建镜像:
docker build -t webhook-relay . - 运行容器示例:
docker run -d --name webhook-relay -p 8080:8080 webhook-relay
- 默认使用 SQLite 数据库,路径由环境变量
DB_PATH控制,默认值为sqlite:///./config/data.db - 如需持久化,可将宿主机目录挂载到容器内
/app/config目录
- 构建镜像: