fix(polygon): separate dataset sources from runs

This commit is contained in:
DCCONSTRUCTIONS
2026-07-25 18:40:56 +03:00
parent 2e5c4ba1c5
commit e97573e221
13 changed files with 1036 additions and 658 deletions
@@ -10,6 +10,8 @@ let decodeGroundReview;
let decodeGroundReviewFrame;
let fetchGroundQualification;
let GroundQualificationContractError;
let parseGooseFrameId;
let groupGooseReviewFrames;
const aggregate = {
micro: {
@@ -76,7 +78,11 @@ before(async () => {
decodeGroundReviewFrame,
fetchGroundQualification,
GroundQualificationContractError,
parseGooseFrameId,
} = await server.ssrLoadModule("/src/core/polygon/groundQualification.ts"));
({
groupGooseReviewFrames,
} = await server.ssrLoadModule("/src/workspaces/GooseDatasetReview.tsx"));
});
after(async () => {
@@ -139,7 +145,7 @@ test("treats missing qualification as a generic run", async () => {
test("decodes a complete ordered frame review", () => {
const decoded = decodeGroundReview({
schema_version: "missioncore.polygon-ground-review/v1",
schema_version: "missioncore.polygon-ground-review/v2",
access: "read-only",
run_id: "goose-ground-abc",
identity_sha256: "b".repeat(64),
@@ -148,7 +154,10 @@ test("decodes a complete ordered frame review", () => {
preview_points: 12_000,
frames: [0, 1].map((sequence) => ({
sequence,
frame_id: `2022-07-22_flight__0071_000${sequence}`,
frame_id: `2022-07-22_flight__007${sequence + 1}_165849423${sequence}334310308`,
dataset_sequence_id: "2022-07-22_flight",
dataset_frame_number: sequence + 71,
sensor_timestamp_ns: `165849423${sequence}334310308`,
source_point_count: 100_000,
point_count: 12_000,
current: {
@@ -168,9 +177,59 @@ test("decodes a complete ordered frame review", () => {
});
assert.equal(decoded.frames.length, 2);
assert.equal(decoded.frames[1].sequence, 1);
assert.equal(decoded.frames[1].datasetSequenceId, "2022-07-22_flight");
assert.equal(decoded.frames[1].datasetFrameNumber, 72);
assert.equal(decoded.frames[0].patchwork.groundIou, 0.7);
});
test("parses GOOSE sequence, source frame and nanosecond timestamp", () => {
assert.deepEqual(
parseGooseFrameId("2023-05-17_neubiberg_sunny__0459_1684330012686564560"),
{
datasetSequenceId: "2023-05-17_neubiberg_sunny",
datasetFrameNumber: 459,
sensorTimestampNs: "1684330012686564560",
},
);
});
test("keeps independent GOOSE recordings in separate playback sequences", () => {
const metric = {
groundIou: 0.5,
naturalGroundRecall: 0.6,
obstacleNonGroundRecall: 0.9,
latencyMs: 20,
};
const frames = [
["2022-07-22_flight", 71, "1658494234334310308"],
["2022-07-22_flight", 72, "1658494235988100385"],
["2023-05-17_neubiberg_sunny", 459, "1684330012686564560"],
].map(([datasetSequenceId, datasetFrameNumber, sensorTimestampNs], sequence) => ({
sequence,
frameId: `${datasetSequenceId}__${String(datasetFrameNumber).padStart(4, "0")}_${sensorTimestampNs}`,
datasetSequenceId,
datasetFrameNumber,
sensorTimestampNs,
sourcePointCount: 100_000,
pointCount: 12_000,
current: metric,
patchwork: metric,
groundIouDelta: 0,
}));
const groups = groupGooseReviewFrames({
runId: "goose-ground-abc",
identitySha256: "b".repeat(64),
sourceId: "goose-3d/v2025-08-22",
frameCount: frames.length,
previewPoints: 12_000,
frames,
});
assert.equal(groups.length, 2);
assert.equal(groups[0].frames.length, 2);
assert.equal(groups[1].frames.length, 1);
assert.ok(groups[0].durationSeconds > 1.6);
});
test("decodes a point-aligned review frame with intensity", () => {
const decoded = decodeGroundReviewFrame({
schema_version: "missioncore.polygon-ground-review-frame/v1",