feat(provider): add Gelios unit profile product

This commit is contained in:
Codex
2026-07-22 23:36:57 +03:00
parent 2def90fa33
commit e843bbda66
10 changed files with 486 additions and 11 deletions
@@ -20,6 +20,7 @@ import { geliosProviderPackageV4 } from "../providers/gelios/v4/index.mjs";
import { geliosProviderPackageV5 } from "../providers/gelios/v5/index.mjs";
import { geliosProviderPackageV6 } from "../providers/gelios/v6/index.mjs";
import { geliosProviderPackageV7 } from "../providers/gelios/v7/index.mjs";
import { geliosProviderPackageV8 } from "../providers/gelios/v8/index.mjs";
import { normalizeDataProductDefinition } from "../../../services/external-data-plane/src/data-product-policy.mjs";
const expectedFields = [
@@ -45,6 +46,24 @@ assert.deepEqual(validateProviderPackage(geliosProviderPackageV4), { ok: true, e
assert.deepEqual(validateProviderPackage(geliosProviderPackageV5), { ok: true, errors: [] });
assert.deepEqual(validateProviderPackage(geliosProviderPackageV6), { ok: true, errors: [] });
assert.deepEqual(validateProviderPackage(geliosProviderPackageV7), { ok: true, errors: [] });
assert.deepEqual(validateProviderPackage(geliosProviderPackageV8), { ok: true, errors: [] });
const profileProduct = geliosProviderPackageV8.dataProducts.find((product) => product.id === "fleet.units.profile.current.v1");
const registeredProfileProduct = JSON.parse(await readFile(new URL(
"../../../services/external-data-plane/definitions/fleet.units.profile.current.v1.json",
import.meta.url,
), "utf8"));
assert.deepEqual(profileProduct, registeredProfileProduct);
assert.deepEqual(profileProduct.semanticTypes, ["map.moving_object"]);
assert.equal(profileProduct.history.mode, "none");
const profileCollection = geliosProviderPackageV8.collectionProfiles.find((profile) => profile.id === "gelios.units.profile.cold.v1");
assert.equal(profileCollection.schedule.intervalMs, 6 * 60 * 60 * 1000);
assert.deepEqual(profileCollection.capabilityIds, ["gelios.units.current.read"]);
const profileMapping = geliosProviderPackageV8.mappingContracts.find((mapping) => mapping.id === "gelios.units.to.fleet.units.profile.current.v1");
assert.equal(profileMapping.fact.sourceId.prefix, "gelios-unit-");
assert.equal(profileMapping.fact.attributes.hardware_type_name.paths[0], "hwType.name");
assert.equal(profileMapping.fact.attributes.trip_detection_type.paths[0], "tripParams.tripDetectionType.name");
assert.equal(profileMapping.fact.attributes.use_odometer.coerce, "boolean");
const telemetryProduct = geliosProviderPackageV7.dataProducts.find((product) => product.id === "fleet.positions.current.v5");
const registeredTelemetryProduct = JSON.parse(await readFile(new URL(