feat: 处理整数溢出并持久化无法处理的数据

- 更新 heartbeatProcessor.js 以处理所有数字溢出类型(int16、int32、int64)并使用二进制补码。
- 防止仅与数据相关的 PostgreSQL 失败抛出个别回退错误。
- 在 databaseManager.js 中添加 insertHeartbeatEventsErrors 方法以存储被拒绝的记录。
- 更新 heartbeatProcessor.js 中的 _emitRejectedRecord 方法,直接将所有无法处理的心跳数据写入 heartbeat_events_errors 数据库。
- 更新 openspec 规范以支持新的溢出和验证回退状态。
- 添加测试文件以验证大整数处理。
This commit is contained in:
2026-03-02 10:49:02 +08:00
parent 58c3880732
commit d0c4940e01
7 changed files with 281 additions and 103 deletions

View File

@@ -0,0 +1,37 @@
/*
Navicat Premium Dump SQL
Source Server : FnOS 109
Source Server Type : PostgreSQL
Source Server Version : 150004 (150004)
Source Host : 10.8.8.109:5433
Source Catalog : log_platform
Source Schema : heartbeat
Target Server Type : PostgreSQL
Target Server Version : 150004 (150004)
File Encoding : 65001
Date: 02/03/2026 09:36:55
*/
-- ----------------------------
-- Table structure for heartbeat_events_errors
-- ----------------------------
DROP TABLE IF EXISTS "heartbeat"."heartbeat_events_errors";
CREATE TABLE "heartbeat"."heartbeat_events_errors" (
"error_id" int4 NOT NULL DEFAULT nextval('"heartbeat".heartbeat_events_errors_error_id_seq'::regclass),
"error_time" timestamp(6) DEFAULT now(),
"hotel_id" int4,
"room_id" int4,
"original_data" jsonb,
"error_code" text COLLATE "pg_catalog"."default",
"error_message" text COLLATE "pg_catalog"."default"
)
;
-- ----------------------------
-- Primary Key structure for table heartbeat_events_errors
-- ----------------------------
ALTER TABLE "heartbeat"."heartbeat_events_errors" ADD CONSTRAINT "heartbeat_events_errors_pkey" PRIMARY KEY ("error_id");