- 添加FastAPI应用基础结构,包括主入口、路由和模型定义
- 实现Webhook接收端点(/webhook/{namespace})和健康检查(/health)
- 添加管理后台路由和模板,支持端点、目标、渠道和模板管理
- 包含SQLite数据库模型定义和初始化逻辑
- 添加日志记录和统计服务
- 包含Dockerfile和配置示例文件
- 添加项目文档,包括设计、流程图和验收标准
48 lines
2.7 KiB
Markdown
48 lines
2.7 KiB
Markdown
# Webhook中继系统 - 增强功能实施计划
|
||
|
||
## 1. 核心变更:日志审计与多端点管理
|
||
为了满足多Webhook接收管理、系统状态监控及日志审计需求,将进行以下数据库与逻辑扩展:
|
||
|
||
### 1.1 数据库模型扩展 (`app/db.py`)
|
||
- **`WebhookEndpoint`**:管理接收端点(Namespace)。
|
||
- 字段:`namespace` (唯一标识), `description` (备注), `created_at`, `is_active`。
|
||
- **`RequestLog`**:记录入站请求。
|
||
- 字段:`id`, `namespace`, `remark`, `event_no`, `raw_body` (JSON), `received_at`, `status` (success/error)。
|
||
- **`DeliveryLog`**:记录出站转发与推送结果。
|
||
- 字段:`request_id` (FK), `target_name` (目标/渠道名), `type` (relay/notify), `status`, `response_summary`, `created_at`。
|
||
|
||
### 1.2 业务逻辑增强 (`app/main.py`)
|
||
- **端点校验**:`POST /webhook/{namespace}` 将校验 namespace 是否在 `WebhookEndpoint` 表中注册(未注册的可选拒绝或标记为匿名)。
|
||
- **日志持久化**:请求处理完成后,将入站数据与出站结果(routed/notified)异步写入 SQLite 数据库。
|
||
- **状态统计**:内存记录系统启动时间,实时计算运行耗时;从 DB 统计今日接收量。
|
||
|
||
## 2. Admin后台功能升级
|
||
### 2.1 界面改造 (`templates/admin/*.html`)
|
||
- **顶部状态栏 (`base.html`)**:增加系统运行状态指示器(运行时间、今日请求数、最新一条日志时间)。
|
||
- **端点管理 (`endpoints.html`)**:新增页面,支持创建、启用/禁用接收端点(Namespace)。
|
||
- **日志审计 (`logs.html`)**:
|
||
- 请求列表:按时间倒序展示,显示 namespace, remark, event。
|
||
- 详情视图:点击查看完整 JSON 负载及对应的所有分发记录(目标+渠道)。
|
||
- 清理功能:一键清空历史日志。
|
||
|
||
### 2.2 后台逻辑 (`app/admin.py`)
|
||
- 新增 `/admin/endpoints` 路由:CRUD 操作。
|
||
- 新增 `/admin/logs` 路由:分页查询日志。
|
||
- 新增 `/admin/stats` 接口(或模板上下文):提供状态栏数据。
|
||
|
||
## 3. 实施步骤
|
||
1. **更新 DB 模型**:修改 `app/db.py` 添加新表。
|
||
2. **实现日志与端点逻辑**:
|
||
- 更新 `app/main.py` 接入日志记录。
|
||
- 创建 `app/services/stats.py` 简单的统计服务。
|
||
3. **开发前端页面**:
|
||
- 修改 `base.html` 添加状态栏与菜单。
|
||
- 创建 `endpoints.html` 和 `logs.html`。
|
||
4. **开发后台路由**:在 `app/admin.py` 实现对应视图。
|
||
5. **验证**:
|
||
- 创建新 Endpoint `demo_input`。
|
||
- 发送测试数据,确认日志生成且状态栏更新。
|
||
- 验证“日志详情”能清晰展示接收到的 JSON 和分发结果。
|
||
|
||
此方案在保留现有轻量级架构的同时,补全了运维监控与多入口管理能力。
|