feat: 初始化BLS心跳接收端项目

- 添加基础项目结构,包括.gitignore、vite配置和package.json
- 实现Kafka消费者模块框架
- 添加心跳处理器模块框架
- 实现数据库管理模块框架
- 添加OpenSpec规范文档
- 更新README文档说明项目功能和技术栈
This commit is contained in:
2026-01-08 09:16:53 +08:00
parent 24654c4b90
commit adc3bfd87d
19 changed files with 5549 additions and 1 deletions

69
openspec/specs/db/spec.md Normal file
View File

@@ -0,0 +1,69 @@
# 数据库操作规范
## 需求
### Requirement: 数据库连接管理
系统必须能够建立和维护与PostgreSQL数据库的连接。
#### Scenario: 成功连接数据库
- **WHEN** 系统启动时
- **THEN** 应该成功连接到配置的PostgreSQL数据库
- **AND** 应该监控连接状态
#### Scenario: 数据库连接断开重连
- **WHEN** 数据库连接断开时
- **THEN** 系统应该自动尝试重连
- **AND** 重连失败时应该记录错误日志
### Requirement: 心跳数据写入
系统必须能够将处理后的心跳数据写入PostgreSQL数据库。
#### Scenario: 写入单条心跳数据
- **WHEN** 接收到单条处理后的心跳数据时
- **THEN** 系统应该将数据写入数据库
- **AND** 返回写入结果
#### Scenario: 批量写入心跳数据
- **WHEN** 接收到批量处理后的心跳数据时
- **THEN** 系统应该使用批量写入机制将数据写入数据库
- **AND** 提高写入效率
### Requirement: 数据完整性保障
系统必须保障写入数据库的心跳数据的完整性。
#### Scenario: 事务管理
- **WHEN** 写入多条相关数据时
- **THEN** 系统应该使用事务确保数据一致性
- **AND** 要么全部写入成功,要么全部失败
#### Scenario: 数据约束验证
- **WHEN** 写入的数据违反数据库约束时
- **THEN** 系统应该捕获约束错误
- **AND** 记录错误日志
- **AND** 根据配置决定是否重试
### Requirement: 数据库表结构管理
系统必须包含数据库表结构的定义和管理机制。
#### Scenario: 表结构初始化
- **WHEN** 系统首次启动时
- **THEN** 系统应该检查数据库表是否存在
- **AND** 不存在时应该创建表结构
#### Scenario: 表结构迁移
- **WHEN** 表结构需要变更时
- **THEN** 系统应该支持平滑的表结构迁移
- **AND** 不影响现有数据
### Requirement: 数据查询支持
系统必须支持基本的数据查询操作,用于监控和调试。
#### Scenario: 查询最新心跳数据
- **WHEN** 需要查询最新的心跳数据时
- **THEN** 系统应该提供查询接口
- **AND** 返回符合条件的数据
#### Scenario: 按条件查询心跳数据
- **WHEN** 需要按特定条件查询心跳数据时
- **THEN** 系统应该支持条件过滤
- **AND** 返回符合条件的数据

View File

@@ -0,0 +1,40 @@
# Kafka消息处理规范
## 需求
### Requirement: Kafka连接管理
系统必须能够建立和维护与Kafka集群的连接。
#### Scenario: 成功连接Kafka集群
- **WHEN** 系统启动时
- **THEN** 应该成功连接到配置的Kafka集群
- **AND** 应该监控连接状态
#### Scenario: Kafka连接断开重连
- **WHEN** Kafka连接断开时
- **THEN** 系统应该自动尝试重连
- **AND** 重连失败时应该记录错误日志
### Requirement: 心跳消息消费
系统必须能够消费Kafka队列中的心跳消息。
#### Scenario: 消费心跳消息
- **WHEN** Kafka队列中有心跳消息时
- **THEN** 系统应该消费该消息
- **AND** 将消息传递给处理器进行解包
#### Scenario: 消息消费确认
- **WHEN** 消息处理完成后
- **THEN** 系统应该向Kafka确认消息已消费
### Requirement: 消息过滤与路由
系统必须能够根据消息类型过滤和路由心跳消息。
#### Scenario: 过滤无效消息
- **WHEN** 接收到无效格式的消息时
- **THEN** 系统应该丢弃该消息
- **AND** 记录错误日志
#### Scenario: 路由有效消息
- **WHEN** 接收到有效格式的心跳消息时
- **THEN** 系统应该将消息路由到正确的处理器

View File

@@ -0,0 +1,46 @@
# 数据处理器规范
## 需求
### Requirement: 心跳数据解包
系统必须能够解包Kafka消息中的二进制心跳数据。
#### Scenario: 解包有效心跳数据
- **WHEN** 接收到有效格式的Kafka心跳消息时
- **THEN** 系统应该成功解包消息
- **AND** 提取出心跳数据的各个字段
#### Scenario: 解包无效心跳数据
- **WHEN** 接收到无效格式的Kafka心跳消息时
- **THEN** 系统应该返回解包错误
- **AND** 记录错误日志
### Requirement: 心跳数据验证
系统必须能够验证解包后的心跳数据的有效性。
#### Scenario: 验证有效心跳数据
- **WHEN** 解包后的心跳数据格式正确且字段完整时
- **THEN** 系统应该验证通过
- **AND** 将数据传递给数据库层进行存储
#### Scenario: 验证无效心跳数据
- **WHEN** 解包后的心跳数据缺少必填字段时
- **THEN** 系统应该验证失败
- **AND** 记录错误日志
- **AND** 丢弃该数据
### Requirement: 心跳数据转换
系统必须能够将解包后的心跳数据转换为数据库存储格式。
#### Scenario: 转换心跳数据格式
- **WHEN** 心跳数据验证通过时
- **THEN** 系统应该将数据转换为数据库表结构所需的格式
- **AND** 添加必要的元数据
### Requirement: 批量处理支持
系统必须支持批量处理心跳数据,提高处理效率。
#### Scenario: 批量处理心跳数据
- **WHEN** 接收到大量心跳消息时
- **THEN** 系统应该将数据分批处理
- **AND** 每批处理的数量可配置