fix(data-plane): preserve immutable zone product v1
This commit is contained in:
parent
343812b90d
commit
92d292ce87
|
|
@ -92,7 +92,7 @@ deleted.
|
|||
|
||||
The active predecessor is package version `0.1.4` at immutable release
|
||||
`0.1.4-59dc9f7882721d6a`. Package `0.1.5` adds the provider-neutral complete
|
||||
snapshot replace mode used by `map.zones.current.v1`; its Platform staging
|
||||
snapshot replace mode used by `map.zones.current.v2`; its Platform staging
|
||||
remains inert until a separately reviewed Engine-owned transition selects the
|
||||
exact digest and accepts the updated MCP node schema.
|
||||
|
||||
|
|
|
|||
|
|
@ -4,5 +4,5 @@ Adds the bounded, offset-paged `gelios.geozone` read capability and maps a
|
|||
complete account generation into `map.gelios-geofences.current.v1`.
|
||||
|
||||
Gelios account geo-objects are deliberately not published into the normative
|
||||
`map.zones.current.v1` Department of Transport dataset. Independent authorities
|
||||
`map.zones.current.v2` Department of Transport dataset. Independent authorities
|
||||
must never share one replace generation.
|
||||
|
|
|
|||
|
|
@ -46,12 +46,12 @@ assert.deepEqual(validateProviderPackage(geliosProviderPackageV6), { ok: true, e
|
|||
|
||||
const zonesProduct = geliosProviderPackageV6.dataProducts.find((product) => product.id === "map.gelios-geofences.current.v1");
|
||||
const registeredZonesProduct = JSON.parse(await readFile(new URL(
|
||||
"../../../services/external-data-plane/definitions/map.zones.current.v1.json",
|
||||
"../../../services/external-data-plane/definitions/map.zones.current.v2.json",
|
||||
import.meta.url,
|
||||
), "utf8"));
|
||||
assert.deepEqual(zonesProduct.semanticTypes, ["map.zone"]);
|
||||
assert.equal(zonesProduct.fieldContracts.geometry.type, "geometry");
|
||||
assert.equal(registeredZonesProduct.version, "1.1.0");
|
||||
assert.equal(registeredZonesProduct.version, "2.0.0");
|
||||
assert.deepEqual(registeredZonesProduct.fieldContracts.dataset_authority.enum, ["moscow-department-of-transport"]);
|
||||
assert.deepEqual(registeredZonesProduct.fieldContracts.source_adapter.enum, [
|
||||
"depttrans-mmap-snapshot-v1",
|
||||
|
|
|
|||
|
|
@ -1,50 +1,32 @@
|
|||
{
|
||||
"id": "map.zones.current.v1",
|
||||
"version": "1.1.0",
|
||||
"version": "1.0.0",
|
||||
"ontologyRevision": "ontology.map.zone.v1",
|
||||
"deliveryMode": "snapshot+patch",
|
||||
"semanticTypes": ["map.zone"],
|
||||
"fields": [
|
||||
"area_square_meters",
|
||||
"applies_to_couriers",
|
||||
"applies_to_kicksharing",
|
||||
"dataset_authority",
|
||||
"dataset_id",
|
||||
"description",
|
||||
"display_name",
|
||||
"geometry",
|
||||
"geometry_kind",
|
||||
"max_speed_kph",
|
||||
"perimeter_meters",
|
||||
"schedule_timezone",
|
||||
"source_adapter",
|
||||
"source_created_at",
|
||||
"source_kind",
|
||||
"source_revision",
|
||||
"source_updated_at",
|
||||
"style_color",
|
||||
"weekly_speed_schedule"
|
||||
"style_color"
|
||||
],
|
||||
"fieldContracts": {
|
||||
"area_square_meters": { "type": "number", "required": false, "minimum": 0 },
|
||||
"applies_to_couriers": { "type": "boolean", "required": false },
|
||||
"applies_to_kicksharing": { "type": "boolean", "required": false },
|
||||
"dataset_authority": { "type": "string", "required": true, "enum": ["moscow-department-of-transport"] },
|
||||
"dataset_id": { "type": "string", "required": true, "enum": ["pmd-slow-zones"] },
|
||||
"description": { "type": "string", "required": false },
|
||||
"display_name": { "type": "string", "required": true },
|
||||
"geometry": { "type": "geometry", "required": true },
|
||||
"geometry_kind": { "type": "string", "required": true, "enum": ["circle", "corridor", "polygon"] },
|
||||
"max_speed_kph": { "type": "number", "required": false, "minimum": 0 },
|
||||
"perimeter_meters": { "type": "number", "required": false, "minimum": 0 },
|
||||
"schedule_timezone": { "type": "string", "required": false, "enum": ["Europe/Moscow"] },
|
||||
"source_adapter": { "type": "string", "required": true, "enum": ["depttrans-mmap-snapshot-v1", "depttrans-api-snapshot-v1"] },
|
||||
"source_created_at": { "type": "string", "required": false },
|
||||
"source_kind": { "type": "string", "required": true, "enum": ["versioned_snapshot"] },
|
||||
"source_kind": { "type": "string", "required": true, "enum": ["live_api", "versioned_snapshot"] },
|
||||
"source_revision": { "type": "string", "required": true },
|
||||
"source_updated_at": { "type": "string", "required": false },
|
||||
"style_color": { "type": "string", "required": false },
|
||||
"weekly_speed_schedule": { "type": "string_array", "required": false }
|
||||
"style_color": { "type": "string", "required": false }
|
||||
},
|
||||
"history": { "mode": "none", "retentionDays": 1 }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"id": "map.zones.current.v2",
|
||||
"version": "2.0.0",
|
||||
"ontologyRevision": "ontology.map.zone.v1",
|
||||
"deliveryMode": "snapshot+patch",
|
||||
"semanticTypes": ["map.zone"],
|
||||
"fields": [
|
||||
"area_square_meters",
|
||||
"applies_to_couriers",
|
||||
"applies_to_kicksharing",
|
||||
"dataset_authority",
|
||||
"dataset_id",
|
||||
"description",
|
||||
"display_name",
|
||||
"geometry",
|
||||
"geometry_kind",
|
||||
"max_speed_kph",
|
||||
"perimeter_meters",
|
||||
"schedule_timezone",
|
||||
"source_adapter",
|
||||
"source_created_at",
|
||||
"source_kind",
|
||||
"source_revision",
|
||||
"source_updated_at",
|
||||
"style_color",
|
||||
"weekly_speed_schedule"
|
||||
],
|
||||
"fieldContracts": {
|
||||
"area_square_meters": { "type": "number", "required": false, "minimum": 0 },
|
||||
"applies_to_couriers": { "type": "boolean", "required": false },
|
||||
"applies_to_kicksharing": { "type": "boolean", "required": false },
|
||||
"dataset_authority": { "type": "string", "required": true, "enum": ["moscow-department-of-transport"] },
|
||||
"dataset_id": { "type": "string", "required": true, "enum": ["pmd-slow-zones"] },
|
||||
"description": { "type": "string", "required": false },
|
||||
"display_name": { "type": "string", "required": true },
|
||||
"geometry": { "type": "geometry", "required": true },
|
||||
"geometry_kind": { "type": "string", "required": true, "enum": ["circle", "corridor", "polygon"] },
|
||||
"max_speed_kph": { "type": "number", "required": false, "minimum": 0 },
|
||||
"perimeter_meters": { "type": "number", "required": false, "minimum": 0 },
|
||||
"schedule_timezone": { "type": "string", "required": false, "enum": ["Europe/Moscow"] },
|
||||
"source_adapter": { "type": "string", "required": true, "enum": ["depttrans-mmap-snapshot-v1", "depttrans-api-snapshot-v1"] },
|
||||
"source_created_at": { "type": "string", "required": false },
|
||||
"source_kind": { "type": "string", "required": true, "enum": ["versioned_snapshot"] },
|
||||
"source_revision": { "type": "string", "required": true },
|
||||
"source_updated_at": { "type": "string", "required": false },
|
||||
"style_color": { "type": "string", "required": false },
|
||||
"weekly_speed_schedule": { "type": "string_array", "required": false }
|
||||
},
|
||||
"history": { "mode": "none", "retentionDays": 1 }
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@ assert.deepEqual(bundled.map((definition) => definition.id), [
|
|||
"fleet.positions.current.v3",
|
||||
"fleet.positions.current.v4",
|
||||
"map.zones.current.v1",
|
||||
"map.zones.current.v2",
|
||||
]);
|
||||
assert.deepEqual(bundled[0].semanticTypes, ["map.moving_object"]);
|
||||
assert.equal(bundled[0].ontologyRevision, "ontology.map.moving_object.v1");
|
||||
|
|
@ -46,12 +47,19 @@ assert.deepEqual(bundled[3].fieldContracts.movement_state, {
|
|||
required: true,
|
||||
enum: ["moving", "stopped"],
|
||||
});
|
||||
assert.equal(bundled[4].version, "1.1.0");
|
||||
assert.equal(bundled[4].version, "1.0.0");
|
||||
assert.equal(bundled[4].ontologyRevision, "ontology.map.zone.v1");
|
||||
assert.deepEqual(bundled[4].semanticTypes, ["map.zone"]);
|
||||
assert.deepEqual(bundled[4].fieldContracts.geometry, { type: "geometry", required: true });
|
||||
assert.equal(bundled[4].fields.includes("dataset_authority"), false);
|
||||
assert.equal(bundled[5].version, "2.0.0");
|
||||
assert.equal(bundled[5].ontologyRevision, "ontology.map.zone.v1");
|
||||
assert.deepEqual(bundled[5].semanticTypes, ["map.zone"]);
|
||||
assert.deepEqual(bundled[5].fieldContracts.geometry, { type: "geometry", required: true });
|
||||
assert.deepEqual(bundled[5].fieldContracts.dataset_authority.enum, ["moscow-department-of-transport"]);
|
||||
assert.equal(Object.keys(bundled[3].fieldContracts).length, bundled[3].fields.length);
|
||||
assert.equal(Object.keys(bundled[4].fieldContracts).length, bundled[4].fields.length);
|
||||
assert.equal(Object.keys(bundled[5].fieldContracts).length, bundled[5].fields.length);
|
||||
|
||||
const directory = await mkdtemp(join(tmpdir(), "nodedc-edp-definitions-"));
|
||||
try {
|
||||
|
|
|
|||
Loading…
Reference in New Issue