From 1c1d400784fce30ffe690ea9f533598a7667f7d8 Mon Sep 17 00:00:00 2001 From: kkfluous Date: Mon, 20 Apr 2026 15:55:14 +0800 Subject: [PATCH] docs(changelog): record raw archive event sink integration Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9df12c3f..c24a658b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,22 @@ ## [Unreleased] +### Added —— 原始报文冷存(Raw Archive)接入 EventSink 扇出 +- 新增 `VehicleEvent.RawArchive` sealed 变体(`ingest-api`),携带一帧入站的原始字节 + + `command` / `infoType` 供按协议命令分片归档。 +- `Dispatcher.dispatch` 在 interceptor **之前**按 `RawFrame.rawBytes()` 产出一条 + `RawArchive` 事件,保证 dedup / rate-limit **不过滤** raw archive,满足"每帧必留痕"目标。 +- 新增 `ArchiveEventSink implements EventSink`(`sink-archive`): + - `accepts` 仅 `VehicleEvent.RawArchive` + - 写入 key `yyyy/MM/dd///.bin`(UTC 日期分片) + - 同 eventId 重复写按 put 语义覆盖 + - 失败 completeExceptionally,EventBus 打 WARN + - AutoConfig 在 `ArchiveStore` bean 存在时自动装配 +- `KafkaEventSink.accepts(RawArchive)` 返回 `false`:本期 Kafka 不投递原始字节, + 只落 ArchiveStore。未来需要 Kafka 回填 URI 时再开(`TopicRouter` / `EnvelopeMapper` + 已补好 switch 分支)。 +- 覆盖测试 `ArchiveEventSinkTest` —— accepts 过滤 / 稳定 key 写入 / 幂等覆盖 3 case。 + ### Changed —— GB/T 32960 Body Parser 单块异常隔离 - `Gb32960BodyParser` 主循环对单信息块的 parser 异常不再放弃整帧: - 固定长度块(`fixedLength ≥ 0`):回滚 reader → 按 `fixedLen` 截取字节兜成