- 添加FastAPI应用基础结构,包括主入口、路由和模型定义
- 实现Webhook接收端点(/webhook/{namespace})和健康检查(/health)
- 添加管理后台路由和模板,支持端点、目标、渠道和模板管理
- 包含SQLite数据库模型定义和初始化逻辑
- 添加日志记录和统计服务
- 包含Dockerfile和配置示例文件
- 添加项目文档,包括设计、流程图和验收标准
3.1 KiB
3.1 KiB
Webhook 中继系统 - 核心逻辑重构计划
1. 核心设计理念变更
响应您的需求,我们将系统从“基于固定字段(remark)的路由”升级为**“基于端点的自定义规则引擎”**。
- 以端点为中心:每个接收端点(Endpoint)拥有独立的配置页面,绑定属于自己的处理流程。
- 通用规则引擎:不再硬编码检测
remark或event_define_no。- 变量自定义:您可以指定检测 JSON 中的任意字段(如
body.status或data.order_id)。 - 条件匹配:当指定字段的值等于设定值时,触发动作。
- 变量自定义:您可以指定检测 JSON 中的任意字段(如
- 统一动作(Action):将“转发”和“通知”统一为规则命中的“动作”。
- 动作 A:转发给目标 X(原 Target)。
- 动作 B:使用模板 Y 发送给渠道 Z(原 Notification)。
2. 数据库模型重构 (app/db.py)
我们需要调整表结构以支持这种灵活关系(建议重置数据库):
- 保留:
WebhookEndpoint,Target,NotificationChannel,RequestLog,DeliveryLog。 - 移除:
RemarkRule, 旧的EventTemplate关联逻辑。 - 新增/修改:
MessageTemplate(原 EventTemplate):仅存储模板文本,不再绑定特定事件ID,作为纯资源库。ProcessingRule(处理规则):绑定到WebhookEndpoint。- 字段:
match_field(匹配键,如trans_order_info.remark),match_value(匹配值)。
- 字段:
RuleAction(规则动作):绑定到ProcessingRule。- 字段:
action_type(forward/notify),target_id(关联Target),channel_id(关联Channel),template_id(关联Template)。
- 字段:
3. 业务逻辑升级 (app/services/engine.py)
创建新的规则引擎服务:
- 动态取值:支持点号索引(如
data.user.id)从深层 JSON 中提取变量。 - 流程执行:
- 接收 Webhook -> 查找 Endpoint。
- 遍历 Endpoint 下的所有
ProcessingRule。 - 提取
match_field对应的值与match_value比对。 - 命中则执行该规则下的所有
RuleAction(并行执行转发或通知)。
4. Admin UI 交互大改版
- 资源库模式:
目标管理、通知渠道、消息模板变为纯粹的基础资源维护页面。 - 端点编排页(核心):
- 点击某个端点,进入**“流程配置”**详情页。
- 可视化规则编辑器:
- "当
[输入框: 字段路径]等于[输入框: 值]时:"- ➕ 添加动作:[转发] -> 选择目标。
- ➕ 添加动作:[通知] -> 选择渠道 + 选择模板。
- "当
- 体验优化:在同一个页面完成逻辑闭环,无需在不同菜单间跳转。
5. 实施步骤
- 重构 DB:更新
app/db.py模型定义。 - 实现引擎:编写
app/services/engine.py实现动态匹配与分发。 - 更新 API:修改
app/main.py调用新引擎。 - 重写 UI:
- 改造
admin.py路由。 - 新增
templates/admin/endpoint_detail.html作为核心配置页。 - 简化其他资源页面。
- 改造
- 迁移/重置:删除旧 DB文件,重新构建运行。