35 Commits

Author SHA1 Message Date
a79c06d4f3 fix(db): 启用冲突键排序去重并增加死锁重试机制
修改数据库管理器配置,默认启用冲突键排序去重功能,保留最大时间戳记录
增加死锁重试机制,默认重试3次,基础延迟100毫秒
添加相关测试用例验证排序去重和死锁重试功能
2026-04-03 18:46:30 +08:00
1ee0988ac6 feat: 添加 G5 room_status 写入的冲突键排序与去重功能,并实现死锁自动重试机制 2026-03-24 09:54:46 +08:00
f14d8b155c docs: 修正文档中UTF-8编码的格式问题 2026-03-14 17:43:02 +08:00
360d11222f feat: 为 G5 room_status 写入添加强制 online_status 为 1 的功能,并确保冲突时始终更新,即使业务字段未变化 2026-03-10 19:52:14 +08:00
2f8857f98e feat: 添加 G5 独立写入功能
- 新增 G5 数据库连接配置与可关闭的写入开关
- 在现有 legacy/G4 写入成功路径后,追加独立的 G5 写入流程
- G5 使用与 G4 相同的数据结构映射,但不写入 guid,由数据库自生成 int4 guid
- room_status 新增 G5 独立 upsert 写入路径,并保留旧表与 G5 表的独立开关
- 新增 G5 写入统计与启动摘要输出
- 更新 StatsCounters 和 StatsReporter 以支持 G5 统计
- 增加测试覆盖,确保 G5 写入逻辑与 room_status 的独立执行
- 新增 G5 相关数据库表结构 SQL 文件
2026-03-10 16:29:24 +08:00
fe76884b27 feat: 新增 G4 热表独立双写能力
- 新增配置项:旧/新明细表写入开关、目标表名、`room_status` 独立开关
- 重构 `DatabaseManager`,抽象通用批量 COPY 写入内核,支持面向不同目标表的复用
- 新增双明细写入编排器,旧/新表各自独立执行、独立重试、独立 fallback
- 调整 `HeartbeatProcessor.processBatch()`,确保 `room_status` 始终独立执行
- 错误表 `heartbeat_events_errors` 仅记录新表写入失败,旧表失败不再写错误表
- 重新定义消费暂停策略,基于当前启用的关键 sink 判断,非全局一刀切
- 补充按 sink 维度的统计项与启动日志
- 新增相关测试用例,确保双写编排的正确性
2026-03-09 16:54:47 +08:00
43fa7505e5 feat: 新增 G4 热表独立双写能力
- 新增配置项以支持旧/新明细表的独立写入开关及目标表名。
- 重构 DatabaseManager,抽象通用批量 COPY 写入内核,支持不同目标表的复用。
- 新增双明细写入编排器,支持旧/新表独立执行、重试及 fallback。
- 调整 HeartbeatProcessor.processBatch(),确保 room_status 独立执行。
- 错误表仅记录新表写入失败,旧表失败不再写入错误表。
- 重新定义消费暂停策略,基于当前启用的关键 sink 判断。
- 补充按 sink 维度的统计项与启动日志。

新增 G4 热表相关的数据库规范与处理逻辑,确保系统在双写模式下的稳定性与可扩展性。
2026-03-09 15:49:12 +08:00
f59000f5ef feat: 移除服务中的运行时代码数据库初始化与分区维护逻辑,外部化相关功能并新增 SQL 脚本支持 2026-03-04 11:49:20 +08:00
3b98c6239b feat: 移除运行时代码中的数据库初始化与分区维护逻辑
- 新增备份 SQL 脚本 `01_init_schema.sql` 和 `02_create_partitions.sql`,用于数据库结构初始化和分区预创建。
- 新增 Node.js 脚本 `run_init.js` 和 `run_ensure_partitions.js`,支持通过外部程序调用进行数据库初始化和分区维护。
- 确保数据库初始化脚本支持幂等重复执行。
- 更新文档,说明新的执行顺序和使用方法。
- 移除运行时相关的数据库初始化和分区维护配置,简化服务职责。
- 保留写入失败时的缺分区兜底逻辑,确保服务稳定性。
2026-03-04 11:47:22 +08:00
b4967f4c35 feat: 启用数据库初始化与分区维护功能,更新配置以支持动态控制 2026-03-04 09:58:53 +08:00
5562288315 revert 2b529baeb3
revert feat: 更新文档和数据库管理逻辑,添加运行模式说明,修复分区表空间设置
2026-03-03 21:28:27 +08:00
70e717ea5d feat: 添加 relocate_partition_to_tablespace 函数以强制分区及其索引分配到指定表空间,并在创建日分区时调用该函数 2026-03-03 21:00:49 +08:00
2b529baeb3 feat: 更新文档和数据库管理逻辑,添加运行模式说明,修复分区表空间设置 2026-03-03 20:22:01 +08:00
c0cdc9ea66 feat: 更新 Kafka 配置和数据库管理逻辑
- 在 .env.example 中添加 Kafka 配置项:KAFKA_FETCH_MAX_BYTES, KAFKA_FETCH_MIN_BYTES, KAFKA_FETCH_MAX_WAIT_MS。
- 删除 room_status_sync 提案及相关文档。
- 删除 fix_uint64_overflow 提案及相关文档。
- 更新数据库管理器以支持使用 COPY 语句进行高效数据写入,替换批量 INSERT 逻辑。
- 实现心跳数据的整数溢出处理,确保无效数据被持久化到 heartbeat_events_errors 表。
- 更新处理器规范,确保心跳数据成功写入历史表后触发 room_status 同步。
- 添加新文档,描述新的分区方法案例。
- 归档旧的提案和规范文档以保持项目整洁。
2026-03-03 18:22:12 +08:00
d0c4940e01 feat: 处理整数溢出并持久化无法处理的数据
- 更新 heartbeatProcessor.js 以处理所有数字溢出类型(int16、int32、int64)并使用二进制补码。
- 防止仅与数据相关的 PostgreSQL 失败抛出个别回退错误。
- 在 databaseManager.js 中添加 insertHeartbeatEventsErrors 方法以存储被拒绝的记录。
- 更新 heartbeatProcessor.js 中的 _emitRejectedRecord 方法,直接将所有无法处理的心跳数据写入 heartbeat_events_errors 数据库。
- 更新 openspec 规范以支持新的溢出和验证回退状态。
- 添加测试文件以验证大整数处理。
2026-03-02 10:49:02 +08:00
58c3880732 fix(db): 修复数据库断连后无法自动恢复的问题
- 添加连接超时配置防止无限等待
- 捕获连接池错误避免进程崩溃
- 缩短心跳检测间隔至5秒
2026-02-27 08:56:19 +08:00
e44cf10a82 feat(processor): 同步心跳数据到 room_status 表
- 在 HeartbeatProcessor 中新增异步同步逻辑,在历史表写入成功后尝试更新 room_status 表
- 实现 DatabaseManager.upsertRoomStatus 方法,支持批量更新和自动分区创建
- 添加批次内去重逻辑,避免 PostgreSQL ON CONFLICT 冲突
- 新增相关文档:同步方案、测试报告和提案说明
2026-02-06 15:15:03 +08:00
b72cdde8bf feat(processor): 增加数据库连接断开检测与自动恢复机制
- 在 DatabaseManager 中添加 checkConnection 方法用于检测数据库连接状态
- 当数据库连接断开时,自动暂停 Kafka 消费者,防止消息堆积
- 实现每分钟数据库连接检查,连接恢复后自动恢复消费者处理
- 区分数据库连接错误和其他严重错误,连接错误时保留数据等待重试
- 在 .gitignore 中添加 SQL 文件排除
2026-02-06 13:37:46 +08:00
d10bedb7e7 docs: 归档心跳数组扩展任务并更新规范文档
将已完成的任务清单、提案及规范从变更目录移至归档目录,并更新主规范文档以包含新增的数组字段与处理要求。这标志着该功能变更已从开发阶段进入完成归档阶段。
2026-02-03 08:41:40 +08:00
299e8de921 feat(kafka): 添加消费者配置参数以优化消息拉取行为
新增 fetchMaxBytes、fetchMinBytes 和 fetchMaxWaitMs 配置项,允许更精细地控制消费者从 Kafka 拉取消息的行为,从而优化网络利用率和消费延迟。
2026-01-30 20:13:05 +08:00
ad270bd936 feat(heartbeat): 添加版本号字段并处理亮度值-1为NULL
- 在心跳事件表中新增 version 字段,用于存储版本号信息
- 将 bright_g 字段的 -1 值映射为数据库中的 NULL,避免语义混淆
- 更新相关文档、数据库迁移脚本和测试用例
2026-01-28 17:47:05 +08:00
1644ee80bc feat(skill): 新增后端组件构建技能与模板文件
- 新增 bls-backend-component-builder 技能,用于生成标准化的 Kafka 数据处理后端组件
- 提供 Dockerfile、PM2 配置、环境变量模板等基础设施文件
- 添加数据库设计、Kafka 生产者、Redis 错误处理等约束文档
- 包含完整的项目脚手架模板,确保新项目架构一致性
2026-01-28 10:16:21 +08:00
60eeafcf73 docs: 更新字段
- 更新数据库schema和文档,增加insert_card和bright_g字段支持
- 同步更新heartbeatProcessor.js和databaseManager.js以支持新字段
2026-01-27 19:49:05 +08:00
1a505bfa29 refactor(redis): 移除心跳日志长度限制和相关配置
移除Redis集成中对心跳日志和console日志的长度限制功能,包括:
1. 删除heartbeatTtlSeconds和consoleMaxLen配置项
2. 移除相关trim操作和测试用例
3. 简化RedisIntegration类中相关方法

同时为heartbeat_events表添加write_ts_ms字段记录写入时间
2026-01-22 14:06:02 +08:00
b90faf4aa4 feat(processor): 实现批量写库容错机制并添加失败统计
添加数据库批量写入失败处理逻辑,当批量写入失败时自动切换为逐条写入
记录失败数据并统计失败数量,同时更新相关测试和统计模块
符合新增的批量写库容错需求规范
2026-01-20 08:22:55 +08:00
41301f9ce5 feat: 实现GUID主键与service_mask索引改造
- 将主键从自增id改为GUID格式并添加格式校验
- 为service_mask添加表达式索引优化首位查询性能
- 更新相关文档说明改造方案与验证步骤
- 添加统计模块记录数据库写入与Kafka消费量
- 重构Redis心跳协议改用LIST类型存储项目状态
- 修复部署脚本中的服务名称不一致问题
2026-01-17 18:37:44 +08:00
662eeee380 refactor(scripts): 添加 envConfig 变量,已完成初版开发
- 初始化 envConfig 对象以便后续存 储从 .env 文件读取的配置
2026-01-16 17:24:20 +08:00
625cb9eea4 feat: 添加部署脚本和文档并优化Kafka消费者配置
- 添加部署相关脚本(deploy.bat/update.bat/package.bat)和文档(deployment.md/package-guide.md)
 - 新增PM2配置文件(ecosystem.config.js/ecosystem.config.cjs)
 - 优化Kafka消费者配置支持动态fromOffset
 - 添加环境检查脚本(check-env.js)
 - 更新.gitignore添加release目录
 - 补充.env.example配置文件
2026-01-16 16:19:31 +08:00
455185ac5d feat: 扩展心跳消息支持电力与空调设备数组字段
新增 Kafka 消息中 electricity[] 和 air_conditioner[] 数组字段支持,用于存储电力与空调设备明细数据。数据库表新增对应数组列并创建 GIN 索引优化查询性能,processor 实现数组字段校验与聚合转换逻辑。

主要变更:
- Kafka 消息规范新增 electricity 和 air_conditioner 数组字段定义
- 数据库 heartbeat_events 表新增 14 个数组列并创建 4 个 GIN 索引
- processor 实现数组字段解析、校验及聚合转换逻辑
- 更新相关文档与测试用例,确保端到端功能完整
2026-01-16 14:45:36 +08:00
7d5b9c50ea refactor(openspec): 归档心跳数据库v2更新相关文档
将update-heartbeat-db-v2目录下的文档迁移至archive目录
更新specs目录下的相关规范文件以反映最新变更
2026-01-14 19:38:02 +08:00
eb35635253 refactor(db): 移除对分区表列类型的冗余修改
删除在DatabaseManager中重复修改分区表room_id和ip列类型的代码,因为这些修改已在主表上执行并自动应用到所有分区
2026-01-14 19:31:29 +08:00
910f1c353f feat: 实现Redis集成与Kafka消息处理优化
- 新增Redis集成模块,支持心跳写入与控制台日志队列
- 优化Kafka消费者实现,支持多实例与自动重连
- 改进消息处理器,支持批量处理与多层解码
- 更新数据库表结构,调整字段类型与约束
- 添加Redis与Kafka的配置项和环境变量支持
- 补充测试用例和文档说明
2026-01-14 17:58:45 +08:00
eb94aaf92b feat: 升级心跳数据库为高吞吐日分区模型(v2)
- 新增 heartbeat 数据库与表结构文档,描述心跳明细表设计及字段约束。
- 新增 OpenSpec 符合性说明文档,指出与规范的一致点及偏差。
- 新增 Kafka 心跳数据推送说明文档,定义消息格式与推送方式。
- 更新数据库创建脚本,支持 UTF-8 编码与中文排序规则。
- 更新心跳表结构脚本,定义主表及索引,采用 ts_ms 日分区。
- 实现自动分区机制,确保按天创建分区以支持高吞吐写入。
- 添加数据库应用脚本,自动执行 SQL 文件并验证表结构。
- 添加运行时烟雾测试脚本,验证数据库连接与基本操作。
- 添加完整的烟雾测试脚本,验证数据插入与分区创建。
2026-01-12 19:53:27 +08:00
adc3bfd87d feat: 初始化BLS心跳接收端项目
- 添加基础项目结构,包括.gitignore、vite配置和package.json
- 实现Kafka消费者模块框架
- 添加心跳处理器模块框架
- 实现数据库管理模块框架
- 添加OpenSpec规范文档
- 更新README文档说明项目功能和技术栈
2026-01-08 09:16:53 +08:00
24654c4b90 Initial commit 2026-01-07 19:39:27 +08:00