# 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 和分发结果。 此方案在保留现有轻量级架构的同时,补全了运维监控与多入口管理能力。