@golemio/pid 6.4.0 → 6.4.1-dev.3054859807
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/example/00_clear_test_data.sql +1 -0
- package/db/example/24_jis_delayed_segments.sql +142 -0
- package/db/migrations/postgresql/20261027100000-jis-delayed-segments.js +16 -0
- package/db/migrations/postgresql/sqls/20250127134438-departure-additional-indexes-down.sql +20 -2
- package/db/migrations/postgresql/sqls/20261027100000-jis-delayed-segments-down.sql +17 -0
- package/db/migrations/postgresql/sqls/20261027100000-jis-delayed-segments-up.sql +42 -0
- package/dist/integration-engine/jis/datasources/JISDelayedSegmentsDataSourceFactory.d.ts +9 -0
- package/dist/integration-engine/jis/datasources/JISDelayedSegmentsDataSourceFactory.js +54 -0
- package/dist/integration-engine/jis/datasources/JISDelayedSegmentsDataSourceFactory.js.map +1 -0
- package/dist/integration-engine/jis/ioc/Di.js +10 -0
- package/dist/integration-engine/jis/ioc/Di.js.map +1 -1
- package/dist/integration-engine/jis/ioc/JISContainerToken.d.ts +5 -0
- package/dist/integration-engine/jis/ioc/JISContainerToken.js +5 -0
- package/dist/integration-engine/jis/ioc/JISContainerToken.js.map +1 -1
- package/dist/integration-engine/jis/repositories/JISDelayedSegmentEnrichmentRepository.d.ts +14 -0
- package/dist/integration-engine/jis/repositories/JISDelayedSegmentEnrichmentRepository.js +69 -0
- package/dist/integration-engine/jis/repositories/JISDelayedSegmentEnrichmentRepository.js.map +1 -0
- package/dist/integration-engine/jis/repositories/JISDelayedSegmentsRepository.d.ts +23 -0
- package/dist/integration-engine/jis/repositories/JISDelayedSegmentsRepository.js +73 -0
- package/dist/integration-engine/jis/repositories/JISDelayedSegmentsRepository.js.map +1 -0
- package/dist/integration-engine/jis/repositories/helpers/JISDelayedSegmentEnrichmentQuery.d.ts +13 -0
- package/dist/integration-engine/jis/repositories/helpers/JISDelayedSegmentEnrichmentQuery.js +266 -0
- package/dist/integration-engine/jis/repositories/helpers/JISDelayedSegmentEnrichmentQuery.js.map +1 -0
- package/dist/integration-engine/jis/repositories/interfaces/IJISDelayedSegmentEnrichmentParams.d.ts +23 -0
- package/dist/integration-engine/jis/repositories/interfaces/IJISDelayedSegmentEnrichmentParams.js +2 -0
- package/dist/integration-engine/jis/repositories/interfaces/IJISDelayedSegmentEnrichmentParams.js.map +1 -0
- package/dist/integration-engine/jis/services/JISDelayedSegmentsDataService.d.ts +38 -0
- package/dist/integration-engine/jis/services/JISDelayedSegmentsDataService.js +174 -0
- package/dist/integration-engine/jis/services/JISDelayedSegmentsDataService.js.map +1 -0
- package/dist/integration-engine/jis/workers/JISWorker.js +1 -0
- package/dist/integration-engine/jis/workers/JISWorker.js.map +1 -1
- package/dist/integration-engine/jis/workers/tasks/RefreshDelayedSegmentsTask.d.ts +15 -0
- package/dist/integration-engine/jis/workers/tasks/RefreshDelayedSegmentsTask.js +55 -0
- package/dist/integration-engine/jis/workers/tasks/RefreshDelayedSegmentsTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.d.ts +2 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.js +16 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.js.map +1 -1
- package/dist/output-gateway/jis/controllers/v1/V1DelayedSegmentsController.d.ts +9 -0
- package/dist/output-gateway/jis/controllers/v1/V1DelayedSegmentsController.js +54 -0
- package/dist/output-gateway/jis/controllers/v1/V1DelayedSegmentsController.js.map +1 -0
- package/dist/output-gateway/jis/data-access/JISDelayedSegmentsRepository.d.ts +14 -0
- package/dist/output-gateway/jis/data-access/JISDelayedSegmentsRepository.js +56 -0
- package/dist/output-gateway/jis/data-access/JISDelayedSegmentsRepository.js.map +1 -0
- package/dist/output-gateway/jis/domain/IJISDelayedSegmentDto.d.ts +12 -0
- package/dist/output-gateway/jis/domain/IJISDelayedSegmentDto.js +2 -0
- package/dist/output-gateway/jis/domain/IJISDelayedSegmentDto.js.map +1 -0
- package/dist/output-gateway/jis/dto/interfaces/IDelayedSegmentsQueryDto.d.ts +5 -0
- package/dist/output-gateway/jis/dto/interfaces/IDelayedSegmentsQueryDto.js +2 -0
- package/dist/output-gateway/jis/dto/interfaces/IDelayedSegmentsQueryDto.js.map +1 -0
- package/dist/output-gateway/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter.d.ts +8 -0
- package/dist/output-gateway/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter.js +13 -0
- package/dist/output-gateway/jis/helpers/JISDelayedSegmentInfoPanelStopsFilter.js.map +1 -0
- package/dist/output-gateway/jis/ioc/Di.js +6 -0
- package/dist/output-gateway/jis/ioc/Di.js.map +1 -1
- package/dist/output-gateway/jis/ioc/OgJisToken.d.ts +3 -0
- package/dist/output-gateway/jis/ioc/OgJisToken.js +3 -0
- package/dist/output-gateway/jis/ioc/OgJisToken.js.map +1 -1
- package/dist/output-gateway/jis/routers/v1/V1JISRouter.d.ts +2 -0
- package/dist/output-gateway/jis/routers/v1/V1JISRouter.js +9 -0
- package/dist/output-gateway/jis/routers/v1/V1JISRouter.js.map +1 -1
- package/dist/output-gateway/jis/transformations/JISDelayedSegmentsTransformation.d.ts +7 -0
- package/dist/output-gateway/jis/transformations/JISDelayedSegmentsTransformation.js +32 -0
- package/dist/output-gateway/jis/transformations/JISDelayedSegmentsTransformation.js.map +1 -0
- package/dist/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.d.ts +3 -0
- package/dist/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.js +16 -0
- package/dist/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.js.map +1 -0
- package/dist/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.d.ts +10 -0
- package/dist/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.js +2 -0
- package/dist/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.js.map +1 -0
- package/dist/schema-definitions/jis/datasources/interfaces/index.d.ts +1 -0
- package/dist/schema-definitions/jis/datasources/interfaces/index.js +1 -0
- package/dist/schema-definitions/jis/datasources/interfaces/index.js.map +1 -1
- package/dist/schema-definitions/jis/models/JISDelayedSegmentsModel.d.ts +24 -0
- package/dist/schema-definitions/jis/models/JISDelayedSegmentsModel.js +138 -0
- package/dist/schema-definitions/jis/models/JISDelayedSegmentsModel.js.map +1 -0
- package/dist/schema-definitions/jis/models/interfaces/IJISDelayedSegment.d.ts +44 -0
- package/dist/schema-definitions/jis/models/interfaces/IJISDelayedSegment.js +2 -0
- package/dist/schema-definitions/jis/models/interfaces/IJISDelayedSegment.js.map +1 -0
- package/dist/schema-definitions/jis/models/interfaces/index.d.ts +1 -0
- package/dist/schema-definitions/jis/models/interfaces/index.js +1 -0
- package/dist/schema-definitions/jis/models/interfaces/index.js.map +1 -1
- package/docs/assets/pid_jis_erd.png +0 -0
- package/docs/asyncapi.yaml +15 -0
- package/docs/implementation_documentation.md +56 -0
- package/docs/index.md +1 -0
- package/docs/jis/delayed-segments.md +241 -0
- package/docs/jis/index.md +9 -0
- package/docs/openapi-output.yaml +176 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMapaPidDelayShape.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/datasources/interfaces/IMapaPidDelayShape.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/datasources/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/datasources/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type JSONSchemaType } from "@golemio/core/dist/shared/ajv.js";
|
|
2
|
+
import type { CreationOptional, InferAttributes, InferCreationAttributes, ModelAttributes } from "@golemio/core/dist/shared/sequelize.js";
|
|
3
|
+
import SequelizeCore from "@golemio/core/dist/shared/sequelize.js";
|
|
4
|
+
declare const Model: typeof SequelizeCore.Model;
|
|
5
|
+
import { type IJISDelayedSegment, type IJISDelayedSegmentInfoPanelStop, type IJISDelayedSegmentRoute, type IJISDelayedSegmentStop } from "./interfaces/index.js";
|
|
6
|
+
export declare class JISDelayedSegmentsModel extends Model<InferAttributes<JISDelayedSegmentsModel>, InferCreationAttributes<JISDelayedSegmentsModel>> implements IJISDelayedSegment {
|
|
7
|
+
static tableName: string;
|
|
8
|
+
id: string;
|
|
9
|
+
external_from_stop_id: string;
|
|
10
|
+
external_to_stop_id: string;
|
|
11
|
+
from_stop_id: string;
|
|
12
|
+
from_stop_name: string;
|
|
13
|
+
to_stop_id: string;
|
|
14
|
+
to_stop_name: string;
|
|
15
|
+
expected_delay_seconds: number;
|
|
16
|
+
stops: IJISDelayedSegmentStop[];
|
|
17
|
+
routes: IJISDelayedSegmentRoute[];
|
|
18
|
+
info_panel_stops: IJISDelayedSegmentInfoPanelStop[];
|
|
19
|
+
created_at: CreationOptional<Date>;
|
|
20
|
+
updated_at: CreationOptional<Date>;
|
|
21
|
+
static attributeModel: ModelAttributes<JISDelayedSegmentsModel>;
|
|
22
|
+
static jsonSchema: JSONSchemaType<IJISDelayedSegment[]>;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import SequelizeCore from "@golemio/core/dist/shared/sequelize.js";
|
|
2
|
+
const { DataTypes, Model } = SequelizeCore;
|
|
3
|
+
const stopJsonSchema = {
|
|
4
|
+
type: "object",
|
|
5
|
+
properties: {
|
|
6
|
+
id: { type: "string" },
|
|
7
|
+
name: { type: "string" },
|
|
8
|
+
},
|
|
9
|
+
additionalProperties: false,
|
|
10
|
+
required: ["id", "name"],
|
|
11
|
+
};
|
|
12
|
+
export class JISDelayedSegmentsModel extends Model {
|
|
13
|
+
}
|
|
14
|
+
JISDelayedSegmentsModel.tableName = "jis_delayed_segments";
|
|
15
|
+
JISDelayedSegmentsModel.attributeModel = {
|
|
16
|
+
id: {
|
|
17
|
+
primaryKey: true,
|
|
18
|
+
type: DataTypes.TEXT,
|
|
19
|
+
allowNull: false,
|
|
20
|
+
},
|
|
21
|
+
external_from_stop_id: {
|
|
22
|
+
type: DataTypes.STRING(50),
|
|
23
|
+
allowNull: false,
|
|
24
|
+
},
|
|
25
|
+
external_to_stop_id: {
|
|
26
|
+
type: DataTypes.STRING(50),
|
|
27
|
+
allowNull: false,
|
|
28
|
+
},
|
|
29
|
+
from_stop_id: {
|
|
30
|
+
type: DataTypes.STRING(50),
|
|
31
|
+
allowNull: false,
|
|
32
|
+
},
|
|
33
|
+
from_stop_name: {
|
|
34
|
+
type: DataTypes.TEXT,
|
|
35
|
+
allowNull: false,
|
|
36
|
+
},
|
|
37
|
+
to_stop_id: {
|
|
38
|
+
type: DataTypes.STRING(50),
|
|
39
|
+
allowNull: false,
|
|
40
|
+
},
|
|
41
|
+
to_stop_name: {
|
|
42
|
+
type: DataTypes.TEXT,
|
|
43
|
+
allowNull: false,
|
|
44
|
+
},
|
|
45
|
+
expected_delay_seconds: {
|
|
46
|
+
type: DataTypes.INTEGER,
|
|
47
|
+
allowNull: false,
|
|
48
|
+
},
|
|
49
|
+
stops: {
|
|
50
|
+
type: DataTypes.JSONB,
|
|
51
|
+
allowNull: false,
|
|
52
|
+
},
|
|
53
|
+
routes: {
|
|
54
|
+
type: DataTypes.JSONB,
|
|
55
|
+
allowNull: false,
|
|
56
|
+
},
|
|
57
|
+
info_panel_stops: {
|
|
58
|
+
type: DataTypes.JSONB,
|
|
59
|
+
allowNull: false,
|
|
60
|
+
},
|
|
61
|
+
created_at: {
|
|
62
|
+
type: DataTypes.DATE,
|
|
63
|
+
allowNull: false,
|
|
64
|
+
},
|
|
65
|
+
updated_at: {
|
|
66
|
+
type: DataTypes.DATE,
|
|
67
|
+
allowNull: false,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
JISDelayedSegmentsModel.jsonSchema = {
|
|
71
|
+
type: "array",
|
|
72
|
+
items: {
|
|
73
|
+
type: "object",
|
|
74
|
+
properties: {
|
|
75
|
+
id: { type: "string" },
|
|
76
|
+
external_from_stop_id: { type: "string" },
|
|
77
|
+
external_to_stop_id: { type: "string" },
|
|
78
|
+
from_stop_id: { type: "string" },
|
|
79
|
+
from_stop_name: { type: "string" },
|
|
80
|
+
to_stop_id: { type: "string" },
|
|
81
|
+
to_stop_name: { type: "string" },
|
|
82
|
+
expected_delay_seconds: { type: "integer" },
|
|
83
|
+
stops: { type: "array", items: stopJsonSchema },
|
|
84
|
+
routes: {
|
|
85
|
+
type: "array",
|
|
86
|
+
items: {
|
|
87
|
+
type: "object",
|
|
88
|
+
properties: {
|
|
89
|
+
id: { type: "string" },
|
|
90
|
+
short_name: { type: "string" },
|
|
91
|
+
type: { type: "integer" },
|
|
92
|
+
},
|
|
93
|
+
additionalProperties: false,
|
|
94
|
+
required: ["id", "short_name", "type"],
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
info_panel_stops: {
|
|
98
|
+
type: "array",
|
|
99
|
+
items: {
|
|
100
|
+
type: "object",
|
|
101
|
+
properties: {
|
|
102
|
+
stop: stopJsonSchema,
|
|
103
|
+
preset_route_names: { type: "array", items: { type: "string" } },
|
|
104
|
+
routes: {
|
|
105
|
+
type: "array",
|
|
106
|
+
items: {
|
|
107
|
+
type: "object",
|
|
108
|
+
properties: {
|
|
109
|
+
id: { type: "string" },
|
|
110
|
+
distance_stops: { type: "integer" },
|
|
111
|
+
},
|
|
112
|
+
additionalProperties: false,
|
|
113
|
+
required: ["id", "distance_stops"],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
additionalProperties: false,
|
|
118
|
+
required: ["stop", "preset_route_names", "routes"],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
additionalProperties: false,
|
|
123
|
+
required: [
|
|
124
|
+
"id",
|
|
125
|
+
"external_from_stop_id",
|
|
126
|
+
"external_to_stop_id",
|
|
127
|
+
"from_stop_id",
|
|
128
|
+
"from_stop_name",
|
|
129
|
+
"to_stop_id",
|
|
130
|
+
"to_stop_name",
|
|
131
|
+
"expected_delay_seconds",
|
|
132
|
+
"stops",
|
|
133
|
+
"routes",
|
|
134
|
+
"info_panel_stops",
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=JISDelayedSegmentsModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JISDelayedSegmentsModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/jis/models/JISDelayedSegmentsModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface IJISDelayedSegmentStop {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
}
|
|
5
|
+
export interface IJISDelayedSegmentRoute {
|
|
6
|
+
id: string;
|
|
7
|
+
short_name: string;
|
|
8
|
+
type: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Route passing an info panel stop, with the signed distance of the stop from the segment
|
|
12
|
+
* (negative before the segment, 0 inside, positive after it, in stops along the route)
|
|
13
|
+
*/
|
|
14
|
+
export interface IJISDelayedSegmentInfoPanelRoute {
|
|
15
|
+
id: string;
|
|
16
|
+
distance_stops: number;
|
|
17
|
+
}
|
|
18
|
+
export interface IJISDelayedSegmentInfoPanelStop {
|
|
19
|
+
stop: IJISDelayedSegmentStop;
|
|
20
|
+
preset_route_names: string[];
|
|
21
|
+
routes: IJISDelayedSegmentInfoPanelRoute[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Stops, routes and info panels of a delayed segment derived from GTFS
|
|
25
|
+
*/
|
|
26
|
+
export interface IJISDelayedSegmentEnrichment extends Pick<IJISDelayedSegment, "stops" | "routes" | "info_panel_stops"> {
|
|
27
|
+
/** Whether both endpoints exist in GTFS; endpoints without stops then mean that no trip runs the whole segment */
|
|
28
|
+
has_endpoint_stops: boolean;
|
|
29
|
+
from_stop: IJISDelayedSegmentStop | null;
|
|
30
|
+
to_stop: IJISDelayedSegmentStop | null;
|
|
31
|
+
}
|
|
32
|
+
export interface IJISDelayedSegment {
|
|
33
|
+
id: string;
|
|
34
|
+
external_from_stop_id: string;
|
|
35
|
+
external_to_stop_id: string;
|
|
36
|
+
from_stop_id: string;
|
|
37
|
+
from_stop_name: string;
|
|
38
|
+
to_stop_id: string;
|
|
39
|
+
to_stop_name: string;
|
|
40
|
+
expected_delay_seconds: number;
|
|
41
|
+
stops: IJISDelayedSegmentStop[];
|
|
42
|
+
routes: IJISDelayedSegmentRoute[];
|
|
43
|
+
info_panel_stops: IJISDelayedSegmentInfoPanelStop[];
|
|
44
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IJISDelayedSegment.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/models/interfaces/IJISDelayedSegment.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/models/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/jis/models/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
Binary file
|
package/docs/asyncapi.yaml
CHANGED
|
@@ -84,6 +84,17 @@ channels:
|
|
|
84
84
|
messages:
|
|
85
85
|
data:
|
|
86
86
|
$ref: "#/components/messages/JISEvents"
|
|
87
|
+
jis.refreshDelayedSegments:
|
|
88
|
+
address: vehicle-positions.jis.refreshDelayedSegments
|
|
89
|
+
description: Fetch delayed segments from Mapa PID, enrich them with GTFS data and refresh them in database
|
|
90
|
+
bindings:
|
|
91
|
+
amqp:
|
|
92
|
+
is: queue
|
|
93
|
+
queue:
|
|
94
|
+
durable: true
|
|
95
|
+
messages:
|
|
96
|
+
empty:
|
|
97
|
+
$ref: "#/components/messages/emptyMessage"
|
|
87
98
|
ropidgtfs.refreshPublicGtfsDepartureCache:
|
|
88
99
|
address: vehicle-positions.ropidgtfs.refreshPublicGtfsDepartureCache
|
|
89
100
|
description: Refresh PublicGtfsDepartureCache
|
|
@@ -382,6 +393,10 @@ operations:
|
|
|
382
393
|
action: "send"
|
|
383
394
|
channel:
|
|
384
395
|
$ref: "#/channels/jis.updateEventWebhook"
|
|
396
|
+
jis.refreshDelayedSegments:
|
|
397
|
+
action: "send"
|
|
398
|
+
channel:
|
|
399
|
+
$ref: "#/channels/jis.refreshDelayedSegments"
|
|
385
400
|
ropidgtfs.refreshPublicGtfsDepartureCache:
|
|
386
401
|
action: "send"
|
|
387
402
|
channel:
|
|
@@ -241,6 +241,26 @@ _:warning: Původním záměrem bylo využití OIS číselníku během zpracová
|
|
|
241
241
|
- název rabbitmq fronty
|
|
242
242
|
- vehicle-positions.jis.fetchJISInfotexts
|
|
243
243
|
|
|
244
|
+
#### _Mapa PID – zpožděné úseky_
|
|
245
|
+
|
|
246
|
+
- zdroj dat
|
|
247
|
+
- url: module.pid.jis.delayedSegments.url
|
|
248
|
+
- interní endpoint webové [Mapy PID](https://mapa.pid.cz/), POST požadavek bez vozidel a tvarů úseků (prázdné `bounds`, `show_delay_sections: false`); zpožděné úseky vrací vždy pro celou síť
|
|
249
|
+
- formát dat
|
|
250
|
+
- protokol: http
|
|
251
|
+
- datový typ: json
|
|
252
|
+
- validační schéma: [MapaPidDelayShapesJsonSchema](../src/schema-definitions/jis/datasources/MapaPidDelayShapesJsonSchema.ts)
|
|
253
|
+
- příklad vstupních dat: [JISDelayedSegmentsDataSourceFactory.unit.test.ts](../test/integration-engine/jis/datasources/JISDelayedSegmentsDataSourceFactory.unit.test.ts)
|
|
254
|
+
- frekvence stahování
|
|
255
|
+
- cron definice:
|
|
256
|
+
- cron.vehicle-positions.jis.refreshDelayedSegments
|
|
257
|
+
- rabin `0 */5 * * * *`
|
|
258
|
+
- prod `0 */5 * * * *`
|
|
259
|
+
- název rabbitmq fronty
|
|
260
|
+
- vehicle-positions.jis.refreshDelayedSegments
|
|
261
|
+
- omezení
|
|
262
|
+
- odpověď neobsahuje čas výpočtu úseků; pokud Mapa PID přestane úseky přepočítávat, vrací poslední známý stav (až 24 hodin) a ten se u nás dál jeví jako aktuální
|
|
263
|
+
|
|
244
264
|
### _Ropid staticka data_
|
|
245
265
|
|
|
246
266
|
- zdroj dat
|
|
@@ -1313,6 +1333,30 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1313
1333
|
- data modely
|
|
1314
1334
|
- žádné
|
|
1315
1335
|
|
|
1336
|
+
#### _task: RefreshDelayedSegmentsTask_
|
|
1337
|
+
|
|
1338
|
+
Záměr, architekturu a algoritmus podrobně popisuje [jis/delayed-segments.md](./jis/delayed-segments.md).
|
|
1339
|
+
|
|
1340
|
+
- vstupní rabbitmq fronta
|
|
1341
|
+
- název: vehicle-positions.jis.refreshDelayedSegments
|
|
1342
|
+
- TTL: 4 minuty
|
|
1343
|
+
- parametry: žádné
|
|
1344
|
+
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
|
|
1345
|
+
- žádné
|
|
1346
|
+
- datové zdroje
|
|
1347
|
+
- Mapa PID (zpožděné úseky)
|
|
1348
|
+
- `ropidgtfs_precomputed_departures`, `ropidgtfs_trips`, `ropidgtfs_stops`, `ropid_departures_presets`, `ropid_departures_presets_ropidgtfs_stops`
|
|
1349
|
+
- transformace
|
|
1350
|
+
- úseky se zpožděním pod `module.pid.jis.delayedSegments.minDelaySeconds` (výchozí 300 s) se zahazují
|
|
1351
|
+
- krajní zastávky se převádí na ASW id (`uzel/sloupek`), z nichž se skládá id úseku; úseky bez ASW id (např. železniční body `T…`) se zahazují
|
|
1352
|
+
- úseky se obohatí o GTFS data, všechny jedním dotazem ([JISDelayedSegmentEnrichmentQuery](../src/integration-engine/jis/repositories/helpers/JISDelayedSegmentEnrichmentQuery.ts)); uvažují se pouze odjezdy v okně ± `module.pid.jis.delayedSegments.routeTimeWindowMinutes` (výchozí 120 min) od stažení a pravidelné spoje (`exceptional = 0`):
|
|
1353
|
+
- zastávky úseku – zastávky mezi krajními zastávkami na spojích projíždějících celý úsek, sloučené podle ASW id (reprezentované abecedně prvním stop id ze všech variant v GTFS, aby se neměnilo mezi běhy), seřazené podél úseku
|
|
1354
|
+
- dotčené linky – linky se spojem, který projede alespoň jeden mezizastávkový úsek ve směru úseku
|
|
1355
|
+
- zastávky s panely – zastávky s presetem odjezdové tabule (párované podle ASW id) do vzdálenosti `module.pid.jis.delayedSegments.maxInfoPanelDistanceStops` (výchozí 5) zastávek od úseku podél dotčených spojů; pro každou linku se uvádí vzdálenost se znaménkem (záporná před úsekem, 0 v úseku, kladná za úsekem), nejbližší k úseku; vzdálenost se počítá jako rozdíl `stop_sequence`, což předpokládá souvislé číslování zastávek spoje (platí pro všechny spoje PID); mezera v číslování by vzdálenost zvětšila o svou délku
|
|
1356
|
+
- zahazují se úseky, jejichž krajní zastávky nejsou v GTFS, úseky, které v časovém okně celé neprojíždí žádný spoj (Mapa PID slučuje navazující úseky různých linek), a úseky bez dotčených linek; počty vyřazených úseků podle důvodu se logují při každém běhu
|
|
1357
|
+
- data modely
|
|
1358
|
+
- Model `jis_delayed_segments` – při každém úspěšném stažení se nahradí celý obsah; `created_at` je začátek aktuální nepřerušené detekce úseku (úsek chybějící v úspěšném stažení se smaže a při dalším výskytu začíná znovu), `updated_at` čas poslední; při chybě stažení zůstávají data beze změny
|
|
1359
|
+
|
|
1316
1360
|
## Uložení dat
|
|
1317
1361
|
|
|
1318
1362
|
- typ databáze
|
|
@@ -1344,6 +1388,7 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1344
1388
|
- popis vozidel se nepromazává – přetrvávají do přepsání novými daty (fixní TTL bylo odstraněno)
|
|
1345
1389
|
- preset logy si uchováváme 8 hodin
|
|
1346
1390
|
- JIS události si uchováváme neomezeně; JIS infotexty jen dokud jsou v posledním přijatém seznamu z VYMI (chybějící se při každém přenačtení mažou)
|
|
1391
|
+
- zpožděné úseky jen dokud jsou v posledním úspěšně staženém seznamu z Mapy PID
|
|
1347
1392
|
|
|
1348
1393
|
## Input API
|
|
1349
1394
|
|
|
@@ -1622,3 +1667,14 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1622
1667
|
- zdrojové tabulky: `jis_events`, `jis_events_ropidgtfs_routes`
|
|
1623
1668
|
- formát odpovědi: viz schéma `EventCustomFormat` v [openapi-output.yaml](./openapi-output.yaml)
|
|
1624
1669
|
- trasy v `informed_entity.routes` jsou snapshot-first (`jis_events_ropidgtfs_routes.route_details`), s GTFS fallbackem (`ropidgtfs_routes`) jen pro starší řádky bez snímku; podrobněji viz [jis/index.md](./jis/index.md#informed_entityroutesroute_details-snímek-gtfs-atributů-trasy)
|
|
1670
|
+
|
|
1671
|
+
#### _/v1/jis/delayed-segments_
|
|
1672
|
+
|
|
1673
|
+
- interní endpoint pro VYMI, vrací aktuální zpožděné úseky obohacené o GTFS data (viz [RefreshDelayedSegmentsTask](#task-refreshdelayedsegmentstask) a [jis/delayed-segments.md](./jis/delayed-segments.md#kontrakt-api))
|
|
1674
|
+
- úseky v čase rostou a zmenšují se, `id` (odvozené od krajních zastávek) proto není stabilní identifikace úseku; úseky se mají párovat podle zastávek
|
|
1675
|
+
- při chybě stažení se úseky nemažou a jejich `last_detected_at` se přestane posouvat, aktuálnost je proto třeba posuzovat podle něj; zaseknutý výpočet na straně Mapy PID tím rozpoznat nelze (viz omezení zdroje)
|
|
1676
|
+
- parametry (volitelné, jen zužují uložená data):
|
|
1677
|
+
- `minDelaySeconds` – minimální `expected_delay_seconds` úseku
|
|
1678
|
+
- `minDistanceStops`, `maxDistanceStops` – rozsah `distance_stops` linek zastávek s panely včetně; zastávky bez linky v rozsahu se vynechají
|
|
1679
|
+
- zdrojové tabulky: `jis_delayed_segments`
|
|
1680
|
+
- formát odpovědi: viz schéma `JISDelayedSegment` v [openapi-output.yaml](./openapi-output.yaml)
|
package/docs/index.md
CHANGED
|
@@ -28,6 +28,7 @@ PID Polohy je soubor služeb datové platformy [Golemio](https://golemio.cz/) na
|
|
|
28
28
|
- [Upřesňující popis architektury platformy Golemio]
|
|
29
29
|
- Podrobná dokumentace:
|
|
30
30
|
- [Dokumentace propisu VYMI dat do datové platformy Golemio]
|
|
31
|
+
- [Zpožděné úseky – podklad pro automatické infotexty](./jis/delayed-segments.md)
|
|
31
32
|
- [Dokumentace zpracování RT dat](./processing/index.md)
|
|
32
33
|
- [Vstupní data HTTP MPVnet (autobusy mimo DPP, přívozy, vlaky)](./processing/input_realtime_data/http_mpvnet.md)
|
|
33
34
|
- [Vstupní data TCP DPP tramvaje](./processing/input_realtime_data/tcp_dpp_tram.md)
|