新 EventSink 实现: - accepts 仅 VehicleEvent.RawArchive - publish 写 ArchiveStore,key = yyyy/MM/dd/<source>/<vin>/<eventId>.bin (基于 ingestTime 的 UTC 日期分片,便于按车按天回放) - 相同 eventId 重复写按 put 语义覆盖 - 写失败在返回的 CompletableFuture 上 completeExceptionally,EventBus 打 WARN AutoConfig 在 ArchiveStore bean 存在时装配 ArchiveEventSink,Disruptor EventBus 启动时 自动把它纳入扇出 handler 列表。Disruptor 使用虚拟线程消费,本地/S3/OSS 的 blocking IO 不会 pin 平台线程。 单测覆盖 accepts 过滤、稳定 key 写入、幂等覆盖三种情形。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>