🎯 什么是 Core API?
Core API 是 Situation Monitor 系统的核心网关服务,采用 Pull 模式(拉取模式) 架构。信号接收与存储
接收并验证来自分析层的信号,持久化存储到 PostgreSQL。
Outbox 模式
为每个信号生成预格式化的 Outbox 记录,确保投递可靠性。
Pull 模式
下游服务(Ghost / Rocket.Chat)按需主动拉取待投递内容。
ACK 确认机制
下游投递完成后通过 ACK 确认,实现投递状态的闭环追踪。
状态聚合:系统会自动维护信号的整体投递状态(
sent / partial_sent / failed),方便全局监控。📐 设计原则
🔐 认证方式 | Authentication
所有 API 端点(除健康检查外)都需要在请求头中包含 API Key:多组 API Key 管理
Core API 支持多组 API Key 管理,可以为不同的团队、项目或环境设置独立的 API Key。 获取 API Key:- 联系管理员获取你所在组的 API Key
- 每个组有独立的 API Key,便于管理和追踪
- 按环境:
dev-team-1,dev-team-2,prod-team-1 - 按项目:
project-a-team,project-b-team - 按角色:
analyzers,notifiers,monitors
401 Unauthorized。
Key 管理:
- Key 存储在数据库中,支持动态添加、禁用、删除
- 支持设置过期时间
- 自动记录使用统计(使用次数、最后使用时间)
🚀 核心端点 | Core Endpoints
1. POST /api/v1/signals - 创建信号
接收来自分析层的已审计信号,验证并创建 outbox 记录。 特性:- ✅ 字段验证(signal_id, timestamp, priority, title, summary, evidence, expire_at)
- ✅ 过期检查(expire_at 必须未来时间)
- ✅ 幂等性保证(signal_id UNIQUE)
- ✅ 自动生成 outbox(ghost + rocketchat)
2. GET /api/v1/outbox/ - 拉取 Outbox
下游服务拉取待投递内容。 特性:- ✅ 支持 channel:
ghost,rocketchat - ✅ 租约机制(防止重复领取)
- ✅ 并发安全(SELECT … FOR UPDATE SKIP LOCKED)
- ✅ 自动标记为 leased
3. POST /api/v1/outbox//ack - ACK 确认
下游服务投递完成后发送 ACK 确认。 特性:- ✅ 成功/失败确认
- ✅ 自动重试机制(最多 3 次)
- ✅ 状态聚合(sent / partial_sent / failed)
4. GET /api/v1/health - 健康检查
检查 API 和数据库连接状态。 特性:- ✅ 无需认证
- ✅ 返回服务状态和数据库连接状态
📋 工作流程 | Workflow
完整流程示例
-
创建信号:分析层发送信号到 Core API
-
拉取 Outbox:Ghost 服务拉取待投递内容
- 投递内容:Ghost 服务使用 payload 投递到 Ghost API
-
ACK 确认:Ghost 服务发送 ACK
- Rocket.Chat 服务:重复步骤 2-4