From 6646b9b1e1d33fa65b54a27270a301bf3ba15149 Mon Sep 17 00:00:00 2001 From: lingniu Date: Mon, 29 Jun 2026 15:23:34 +0800 Subject: [PATCH] fix: preserve jt808 location raw archive uri --- .../tdenginehistory/TdengineEnvelopeRows.java | 4 +++- .../TdengineEnvelopeRowsTest.java | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/modules/sinks/tdengine-history-store/src/main/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRows.java b/modules/sinks/tdengine-history-store/src/main/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRows.java index 52a9bbfe..42ad5d33 100644 --- a/modules/sinks/tdengine-history-store/src/main/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRows.java +++ b/modules/sinks/tdengine-history-store/src/main/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRows.java @@ -55,7 +55,9 @@ public final class TdengineEnvelopeRows { return Optional.empty(); } LocationPayload location = envelope.getLocation(); - String rawUri = envelope.hasRawArchive() ? envelope.getRawArchive().getUri() : ""; + String rawUri = firstNonBlank( + envelope.hasRawArchive() ? envelope.getRawArchive().getUri() : "", + envelope.getMetadataOrDefault("rawArchiveUri", "")); String frameId = envelope.getMetadataOrDefault("frame_id", envelope.getEventId()); return Optional.of(new TdengineLocationRow( instant(envelope.getEventTimeMs()), diff --git a/modules/sinks/tdengine-history-store/src/test/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRowsTest.java b/modules/sinks/tdengine-history-store/src/test/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRowsTest.java index 2d720e00..e2a8152c 100644 --- a/modules/sinks/tdengine-history-store/src/test/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRowsTest.java +++ b/modules/sinks/tdengine-history-store/src/test/java/com/lingniu/ingest/tdenginehistory/TdengineEnvelopeRowsTest.java @@ -89,6 +89,26 @@ class TdengineEnvelopeRowsTest { assertThat(row.rawUri()).isEqualTo("archive://gb32960/2026/06/29/frame-location-1.bin"); } + @Test + void mapsLocationRawUriFromMetadataWhenRawArchiveRefIsAbsent() { + VehicleEnvelope envelope = VehicleEnvelope.newBuilder() + .setEventId("evt-location-metadata-raw") + .setVin("unknown") + .setSource("JT808") + .setEventTimeMs(1_772_000_002_000L) + .setIngestTimeMs(1_772_000_002_321L) + .putMetadata("phone", "13079963291") + .putMetadata("rawArchiveUri", "archive://jt808/metadata-only.bin") + .setLocation(LocationPayload.newBuilder() + .setLongitude(119.12) + .setLatitude(29.45)) + .build(); + + TdengineLocationRow row = TdengineEnvelopeRows.location(envelope).orElseThrow(); + + assertThat(row.rawUri()).isEqualTo("archive://jt808/metadata-only.bin"); + } + @Test void mapsTelemetrySnapshotEnvelopeToFieldRows() { VehicleEnvelope envelope = VehicleEnvelope.newBuilder()