# G5 room_status 空 IP 跳过写入 ## 背景 Kafka payload 中包含 `ip` 字段,但该字段可能为空。对于 `room_status_moment_g5`,当 `ip` 为空时,应直接跳过该次状态写入,避免更新 `ts_ms`,也避免写入不完整数据。 ## 目标 1. G5 `room_status_moment_g5` 写入时补充 `ip` 字段。 2. 当 `ip` 为空或空白时,G5 直接跳过这条状态,不进入缓冲、不触发 upsert、不更新 `ts_ms`。 3. G4 逻辑保持现状,不受 G5 空 IP 策略影响。 4. 保持 `ip` 作为有效值时的正常 upsert 与字段合并。 ## 变更范围 - `src/processor/statusExtractor.js` - 规范化 `ip`,将空字符串/空白字符串视为 `null` - `src/db/statusBatchProcessor.js` - G5 目标在 `ip` 为空时直接跳过 - `src/db/roomStatusManager.js` - 在 upsert 中增加 `ip` 写入与更新逻辑 - `tests/status_extractor.test.js` - 增加 `ip` 归一化测试 - `tests/status_batch_processor.test.js` - 增加 G5 空 `ip` 直接跳过测试 ## 验收标准 1. G5 表 `room_status_moment_g5` 的记录可写入 `ip` 字段。 2. `ip` 为空的 G5 状态不产生任何数据库写入。 3. 现有测试通过。