@golemio/parkings 1.7.3 → 1.7.4-dev.1107156277
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/dist/integration-engine/ParkingInterface.d.ts +10 -0
- package/dist/integration-engine/datasources/ParkingProviderDataSourceFactory.d.ts +2 -2
- package/dist/integration-engine/datasources/ParkingProviderDataSourceFactory.js.map +1 -1
- package/dist/integration-engine/datasources/interfaces/IParkingProviderDataSourceFactory.d.ts +2 -2
- package/dist/integration-engine/datasources/mr-parkit/MrParkitDataSourceProvider.d.ts +2 -2
- package/dist/integration-engine/transformations/MrParkitGarageTransformation.d.ts +8 -2
- package/dist/integration-engine/transformations/MrParkitGarageTransformation.js +98 -1
- package/dist/integration-engine/transformations/MrParkitGarageTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/interfaces/IMrParkitGarageTransformation.d.ts +4 -3
- package/dist/integration-engine/workers/tasks/SaveMrParkitDataTask.d.ts +3 -1
- package/dist/integration-engine/workers/tasks/SaveMrParkitDataTask.js +10 -3
- package/dist/integration-engine/workers/tasks/SaveMrParkitDataTask.js.map +1 -1
- package/dist/schema-definitions/datasources/MrParkitJsonSchema.d.ts +2 -2
- package/dist/schema-definitions/datasources/MrParkitJsonSchema.js +28 -1
- package/dist/schema-definitions/datasources/MrParkitJsonSchema.js.map +1 -1
- package/dist/schema-definitions/datasources/interfaces/IMrParkitGarage.d.ts +7 -0
- package/docs/implementation-documentation.md +239 -237
- package/docs/openapi-output.yaml +1 -0
- package/package.json +1 -1
|
@@ -80,4 +80,14 @@ export interface IParkingTariff extends IParkingTariffDescription, IParkingTarif
|
|
|
80
80
|
maximum_duration_seconds?: number;
|
|
81
81
|
periods_of_time?: IParkingTariffPeriod[];
|
|
82
82
|
}
|
|
83
|
+
export interface ITariffPeriodElement {
|
|
84
|
+
charge: number;
|
|
85
|
+
charge_type?: string;
|
|
86
|
+
charge_order_index: number;
|
|
87
|
+
charge_interval?: number;
|
|
88
|
+
max_iterations_of_charge?: number;
|
|
89
|
+
min_iterations_of_charge?: number;
|
|
90
|
+
periods_of_time?: IParkingTariffPeriod[];
|
|
91
|
+
}
|
|
92
|
+
export type TTariffData = IParkingTariff & ITariffPeriodElement;
|
|
83
93
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IMrParkitGarageWithTariff } from "../../schema-definitions/datasources/interfaces/IMrParkitGarage";
|
|
2
2
|
import { ParkingProvider } from "./helpers/ParkingProviderEnum";
|
|
3
3
|
import { IDataSourceProvider } from "./interfaces/IDataSourceProvider";
|
|
4
4
|
import { DataSourceProviderDict, DataSourceReturnType, IParkingProviderDataSourceFactory } from "./interfaces/IParkingProviderDataSourceFactory";
|
|
5
5
|
export declare class ParkingProviderDataSourceFactory implements IParkingProviderDataSourceFactory {
|
|
6
6
|
private readonly dataSourceProviderDict;
|
|
7
|
-
constructor(mrParkitDataSourceProvider: IDataSourceProvider<
|
|
7
|
+
constructor(mrParkitDataSourceProvider: IDataSourceProvider<IMrParkitGarageWithTariff[]>);
|
|
8
8
|
getDataSource<T extends ParkingProvider>(presetLogsProvider: T, ...params: Parameters<DataSourceProviderDict[T]["getDataSource"]>): DataSourceReturnType<T>;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParkingProviderDataSourceFactory.js","sourceRoot":"","sources":["../../../src/integration-engine/datasources/ParkingProviderDataSourceFactory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sEAAoE;AAEpE,iEAAwE;AACxE,uEAAgE;AASzD,IAAM,gCAAgC,8CAAtC,MAAM,gCAAgC;IAGzC,YAEI,
|
|
1
|
+
{"version":3,"file":"ParkingProviderDataSourceFactory.js","sourceRoot":"","sources":["../../../src/integration-engine/datasources/ParkingProviderDataSourceFactory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sEAAoE;AAEpE,iEAAwE;AACxE,uEAAgE;AASzD,IAAM,gCAAgC,8CAAtC,MAAM,gCAAgC;IAGzC,YAEI,0BAA4E;QAE5E,IAAI,CAAC,sBAAsB,GAAG;YAC1B,CAAC,qCAAe,CAAC,QAAQ,CAAC,EAAE,0BAA0B;SACzD,CAAC;IACN,CAAC;IAEM,aAAa,CAChB,kBAAqB,EACrB,GAAG,MAA8D;QAEjE,OAAO,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,GAAG,MAAM,CAA4B,CAAC;IAC/G,CAAC;CACJ,CAAA;2CAlBY,gCAAgC;IAD5C,IAAA,qBAAU,GAAE;IAKJ,WAAA,IAAA,iBAAM,EAAC,2CAAoB,CAAC,0BAA0B,CAAC,CAAA;;GAJnD,gCAAgC,CAkB5C"}
|
package/dist/integration-engine/datasources/interfaces/IParkingProviderDataSourceFactory.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IMrParkitGarageWithTariff } from "../../../schema-definitions/datasources/interfaces/IMrParkitGarage";
|
|
2
2
|
import { ParkingProvider } from "../helpers/ParkingProviderEnum";
|
|
3
3
|
import { IDataSourceProvider } from "./IDataSourceProvider";
|
|
4
4
|
export type DataSourceProviderDict = {
|
|
5
|
-
[ParkingProvider.MrParkit]: IDataSourceProvider<
|
|
5
|
+
[ParkingProvider.MrParkit]: IDataSourceProvider<IMrParkitGarageWithTariff[]>;
|
|
6
6
|
};
|
|
7
7
|
export type DataSourceReturnType<T extends ParkingProvider> = ReturnType<DataSourceProviderDict[T]["getDataSource"]>;
|
|
8
8
|
export interface IParkingProviderDataSourceFactory {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IMrParkitGarageWithTariff } from "../../../schema-definitions/datasources/interfaces/IMrParkitGarage";
|
|
2
2
|
import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleConfig";
|
|
3
3
|
import { IDataSource } from "@golemio/core/dist/integration-engine";
|
|
4
4
|
import { IDataSourceProvider } from "../interfaces/IDataSourceProvider";
|
|
5
|
-
type MrParkitDto =
|
|
5
|
+
type MrParkitDto = IMrParkitGarageWithTariff[];
|
|
6
6
|
export declare class MrParkitDataSourceProvider implements IDataSourceProvider<MrParkitDto> {
|
|
7
7
|
private config;
|
|
8
8
|
private static DATASOURCE_NAME;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IMrParkitGarageWithTariff } from "../../schema-definitions/datasources/interfaces/IMrParkitGarage";
|
|
2
2
|
import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
|
|
3
3
|
import { IMrParkingTransformationDto, IMrParkitGarageTransformation } from "./interfaces/IMrParkitGarageTransformation";
|
|
4
|
-
type TransformIn =
|
|
4
|
+
type TransformIn = IMrParkitGarageWithTariff;
|
|
5
5
|
type TransformOut = IMrParkingTransformationDto;
|
|
6
6
|
export declare class MrParkitGarageTransformation extends AbstractTransformation<TransformIn, TransformOut> implements IMrParkitGarageTransformation {
|
|
7
7
|
private transformationDate;
|
|
@@ -10,5 +10,11 @@ export declare class MrParkitGarageTransformation extends AbstractTransformation
|
|
|
10
10
|
protected transformInternal: (data: TransformIn) => TransformOut;
|
|
11
11
|
private transformLocation;
|
|
12
12
|
private transformMeasurement;
|
|
13
|
+
private transformTariffElement;
|
|
14
|
+
private getHourlyTariffs;
|
|
15
|
+
private getWorkDayTariffs;
|
|
16
|
+
private getWeekendTariffs;
|
|
17
|
+
private getWorkDayPeriodsOfTime;
|
|
18
|
+
private getWeekendPeriodsOfTime;
|
|
13
19
|
}
|
|
14
20
|
export {};
|
|
@@ -3,6 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MrParkitGarageTransformation = void 0;
|
|
4
4
|
const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
|
|
5
5
|
const output_gateway_1 = require("@golemio/core/dist/output-gateway");
|
|
6
|
+
var DaysInWeekEnum;
|
|
7
|
+
(function (DaysInWeekEnum) {
|
|
8
|
+
DaysInWeekEnum["monday"] = "Mo";
|
|
9
|
+
DaysInWeekEnum["tuesday"] = "Tu";
|
|
10
|
+
DaysInWeekEnum["wednesday"] = "We";
|
|
11
|
+
DaysInWeekEnum["thursday"] = "Th";
|
|
12
|
+
DaysInWeekEnum["friday"] = "Fr";
|
|
13
|
+
DaysInWeekEnum["saturday"] = "Sa";
|
|
14
|
+
DaysInWeekEnum["sunday"] = "Su";
|
|
15
|
+
})(DaysInWeekEnum || (DaysInWeekEnum = {}));
|
|
16
|
+
var OffWeekDays;
|
|
17
|
+
(function (OffWeekDays) {
|
|
18
|
+
OffWeekDays["saturday"] = "Sa";
|
|
19
|
+
OffWeekDays["sunday"] = "Su";
|
|
20
|
+
})(OffWeekDays || (OffWeekDays = {}));
|
|
21
|
+
var PhTypes;
|
|
22
|
+
(function (PhTypes) {
|
|
23
|
+
PhTypes["off"] = "ph_off";
|
|
24
|
+
PhTypes["only"] = "ph_only";
|
|
25
|
+
})(PhTypes || (PhTypes = {}));
|
|
6
26
|
class MrParkitGarageTransformation extends AbstractTransformation_1.AbstractTransformation {
|
|
7
27
|
constructor(transformationDate) {
|
|
8
28
|
super();
|
|
@@ -30,7 +50,7 @@ class MrParkitGarageTransformation extends AbstractTransformation_1.AbstractTran
|
|
|
30
50
|
address_formatted: data.address,
|
|
31
51
|
},
|
|
32
52
|
};
|
|
33
|
-
return Object.assign(Object.assign({}, parking), { parkingLocation: this.transformLocation(parking), parkingMeasurement: this.transformMeasurement(parking, data) });
|
|
53
|
+
return Object.assign(Object.assign({}, parking), { parkingLocation: this.transformLocation(parking), parkingMeasurement: this.transformMeasurement(parking, data), tariffs: this.transformTariffElement(data) });
|
|
34
54
|
};
|
|
35
55
|
this.transformLocation = (parking) => {
|
|
36
56
|
return {
|
|
@@ -56,6 +76,83 @@ class MrParkitGarageTransformation extends AbstractTransformation_1.AbstractTran
|
|
|
56
76
|
total_spot_number: parking.total_spot_number,
|
|
57
77
|
};
|
|
58
78
|
};
|
|
79
|
+
this.transformTariffElement = (element) => {
|
|
80
|
+
const tariffCommonInfo = {
|
|
81
|
+
charge_band_name: element.name,
|
|
82
|
+
source: "mr_parkit",
|
|
83
|
+
tariff_id: element.id,
|
|
84
|
+
last_updated: this.transformationDate.toISOString(),
|
|
85
|
+
free_of_charge: false,
|
|
86
|
+
payment_mode: "pre_paid",
|
|
87
|
+
charge_currency: "czk",
|
|
88
|
+
};
|
|
89
|
+
const result = [
|
|
90
|
+
Object.assign(Object.assign({}, tariffCommonInfo), this.getHourlyTariffs(element)),
|
|
91
|
+
Object.assign(Object.assign({}, tariffCommonInfo), this.getWorkDayTariffs(element)),
|
|
92
|
+
Object.assign(Object.assign({}, tariffCommonInfo), this.getWeekendTariffs(element)),
|
|
93
|
+
];
|
|
94
|
+
return result;
|
|
95
|
+
};
|
|
96
|
+
this.getHourlyTariffs = (element) => {
|
|
97
|
+
return {
|
|
98
|
+
charge: element.pricePerHour,
|
|
99
|
+
charge_type: "other",
|
|
100
|
+
charge_order_index: 0,
|
|
101
|
+
charge_interval: 3600,
|
|
102
|
+
max_iterations_of_charge: 24,
|
|
103
|
+
min_iterations_of_charge: element.minReservationDuration,
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
this.getWorkDayTariffs = (element) => {
|
|
107
|
+
return {
|
|
108
|
+
charge: element.pricePerDay,
|
|
109
|
+
charge_type: "other",
|
|
110
|
+
charge_order_index: 1,
|
|
111
|
+
charge_interval: 86400,
|
|
112
|
+
max_iterations_of_charge: element.maxReservationDuration / 24,
|
|
113
|
+
min_iterations_of_charge: 0,
|
|
114
|
+
periods_of_time: this.getWorkDayPeriodsOfTime(),
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
this.getWeekendTariffs = (element) => {
|
|
118
|
+
return {
|
|
119
|
+
charge: element.pricePerWeekend,
|
|
120
|
+
charge_type: "other",
|
|
121
|
+
charge_order_index: 2,
|
|
122
|
+
charge_interval: 172800,
|
|
123
|
+
max_iterations_of_charge: 1,
|
|
124
|
+
min_iterations_of_charge: 0,
|
|
125
|
+
periods_of_time: this.getWeekendPeriodsOfTime(),
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
this.getWorkDayPeriodsOfTime = () => {
|
|
129
|
+
const result = [];
|
|
130
|
+
for (const day of Object.keys(DaysInWeekEnum)) {
|
|
131
|
+
for (const ph of Object.keys(PhTypes)) {
|
|
132
|
+
result.push({
|
|
133
|
+
day_in_week: DaysInWeekEnum[day],
|
|
134
|
+
start: "00:00",
|
|
135
|
+
end: "23:59",
|
|
136
|
+
ph: PhTypes[ph],
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
};
|
|
142
|
+
this.getWeekendPeriodsOfTime = () => {
|
|
143
|
+
const result = [];
|
|
144
|
+
for (const day of Object.keys(OffWeekDays)) {
|
|
145
|
+
for (const ph of Object.keys(PhTypes)) {
|
|
146
|
+
result.push({
|
|
147
|
+
day_in_week: OffWeekDays[day],
|
|
148
|
+
start: "00:00",
|
|
149
|
+
end: "23:59",
|
|
150
|
+
ph: PhTypes[ph],
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
};
|
|
59
156
|
}
|
|
60
157
|
}
|
|
61
158
|
exports.MrParkitGarageTransformation = MrParkitGarageTransformation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrParkitGarageTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MrParkitGarageTransformation.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MrParkitGarageTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MrParkitGarageTransformation.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/transformations/interfaces/IMrParkitGarageTransformation.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { IParking, IParkingMeasurements } from "../../ParkingInterface";
|
|
2
|
-
import {
|
|
1
|
+
import { IParking, IParkingMeasurements, TTariffData } from "../../ParkingInterface";
|
|
2
|
+
import { IMrParkitGarageWithTariff } from "../../../schema-definitions/datasources/interfaces/IMrParkitGarage";
|
|
3
3
|
import { IParkingLocation } from "../../../schema-definitions/models/interfaces/IParkingLocation";
|
|
4
4
|
import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
|
|
5
5
|
export interface IMrParkingTransformationDto extends IParking {
|
|
6
6
|
parkingLocation: IParkingLocation;
|
|
7
7
|
parkingMeasurement: IParkingMeasurements;
|
|
8
|
+
tariffs: TTariffData[];
|
|
8
9
|
}
|
|
9
|
-
export interface IMrParkitGarageTransformation extends AbstractTransformation<
|
|
10
|
+
export interface IMrParkitGarageTransformation extends AbstractTransformation<IMrParkitGarageWithTariff, IMrParkingTransformationDto> {
|
|
10
11
|
}
|
|
@@ -2,14 +2,16 @@ import { IParkingProviderDataSourceFactory } from "../../datasources/interfaces/
|
|
|
2
2
|
import { ParkingsLocationRepository } from "../../repositories/ParkingsLocationRepository";
|
|
3
3
|
import { ParkingsRepository } from "../../repositories/ParkingsRepository";
|
|
4
4
|
import { AbstractEmptyTask } from "@golemio/core/dist/integration-engine/workers/AbstractEmptyTask";
|
|
5
|
+
import { ParkingTariffsRepository } from "../../repositories/ParkingTariffsRepository";
|
|
5
6
|
export declare class SaveMrParkitDataTask extends AbstractEmptyTask {
|
|
6
7
|
private dataSourceFactory;
|
|
7
8
|
private parkingRepository;
|
|
8
9
|
private parkingLocationRepository;
|
|
10
|
+
private parkingsTariffsRepository;
|
|
9
11
|
readonly queueName = "saveMrParkitData";
|
|
10
12
|
readonly queueTtl: number;
|
|
11
13
|
private measurementsRepository;
|
|
12
|
-
constructor(dataSourceFactory: IParkingProviderDataSourceFactory, parkingRepository: ParkingsRepository, parkingLocationRepository: ParkingsLocationRepository);
|
|
14
|
+
constructor(dataSourceFactory: IParkingProviderDataSourceFactory, parkingRepository: ParkingsRepository, parkingLocationRepository: ParkingsLocationRepository, parkingsTariffsRepository: ParkingTariffsRepository);
|
|
13
15
|
protected execute(): Promise<void>;
|
|
14
16
|
private getParkingAtributesToUpdate;
|
|
15
17
|
}
|
|
@@ -46,12 +46,14 @@ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
|
46
46
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
47
47
|
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
48
48
|
const constants_1 = require("../constants");
|
|
49
|
+
const ParkingTariffsRepository_1 = require("../../repositories/ParkingTariffsRepository");
|
|
49
50
|
let SaveMrParkitDataTask = exports.SaveMrParkitDataTask = class SaveMrParkitDataTask extends AbstractEmptyTask_1.AbstractEmptyTask {
|
|
50
|
-
constructor(dataSourceFactory, parkingRepository, parkingLocationRepository) {
|
|
51
|
+
constructor(dataSourceFactory, parkingRepository, parkingLocationRepository, parkingsTariffsRepository) {
|
|
51
52
|
super(constants_1.NEW_PARKINGS_WORKER_NAME);
|
|
52
53
|
this.dataSourceFactory = dataSourceFactory;
|
|
53
54
|
this.parkingRepository = parkingRepository;
|
|
54
55
|
this.parkingLocationRepository = parkingLocationRepository;
|
|
56
|
+
this.parkingsTariffsRepository = parkingsTariffsRepository;
|
|
55
57
|
this.queueName = "saveMrParkitData";
|
|
56
58
|
this.queueTtl = 15 * 60 * 1000; // 15min
|
|
57
59
|
this.measurementsRepository = new integration_engine_1.PostgresModel(_sch_1.Parkings.measurements.name + "Model", {
|
|
@@ -79,12 +81,14 @@ let SaveMrParkitDataTask = exports.SaveMrParkitDataTask = class SaveMrParkitData
|
|
|
79
81
|
let transformedGarages = [];
|
|
80
82
|
let transformedLocations = [];
|
|
81
83
|
let transformedMeasurements = [];
|
|
84
|
+
let transformedTariffs = [];
|
|
82
85
|
try {
|
|
83
86
|
for (const garage of garageResult) {
|
|
84
|
-
const _a = garageTransformation.transformElement(garage), { parkingLocation, parkingMeasurement } = _a, parking = __rest(_a, ["parkingLocation", "parkingMeasurement"]);
|
|
87
|
+
const _a = garageTransformation.transformElement(garage), { parkingLocation, parkingMeasurement, tariffs } = _a, parking = __rest(_a, ["parkingLocation", "parkingMeasurement", "tariffs"]);
|
|
85
88
|
transformedGarages.push(parking);
|
|
86
89
|
transformedLocations.push(parkingLocation);
|
|
87
90
|
transformedMeasurements.push(parkingMeasurement);
|
|
91
|
+
transformedTariffs.push(...tariffs);
|
|
88
92
|
}
|
|
89
93
|
}
|
|
90
94
|
catch (err) {
|
|
@@ -97,6 +101,7 @@ let SaveMrParkitDataTask = exports.SaveMrParkitDataTask = class SaveMrParkitData
|
|
|
97
101
|
yield this.measurementsRepository.bulkSave(transformedMeasurements);
|
|
98
102
|
yield this.parkingLocationRepository.bulkSave(transformedLocations);
|
|
99
103
|
yield this.parkingRepository.bulkSave(transformedGarages, this.getParkingAtributesToUpdate(transformedGarages[0]));
|
|
104
|
+
yield this.parkingsTariffsRepository.bulkSave(transformedTariffs);
|
|
100
105
|
}
|
|
101
106
|
catch (err) {
|
|
102
107
|
throw new golemio_errors_1.GeneralError("Error while saving MR.PARKIT data", this.constructor.name, err);
|
|
@@ -114,7 +119,9 @@ exports.SaveMrParkitDataTask = SaveMrParkitDataTask = __decorate([
|
|
|
114
119
|
__param(0, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingProviderDataSourceFactory)),
|
|
115
120
|
__param(1, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingsRepository)),
|
|
116
121
|
__param(2, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingsLocationRepository)),
|
|
122
|
+
__param(3, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingTariffsRepository)),
|
|
117
123
|
__metadata("design:paramtypes", [Object, ParkingsRepository_1.ParkingsRepository,
|
|
118
|
-
ParkingsLocationRepository_1.ParkingsLocationRepository
|
|
124
|
+
ParkingsLocationRepository_1.ParkingsLocationRepository,
|
|
125
|
+
ParkingTariffsRepository_1.ParkingTariffsRepository])
|
|
119
126
|
], SaveMrParkitDataTask);
|
|
120
127
|
//# sourceMappingURL=SaveMrParkitDataTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveMrParkitDataTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/SaveMrParkitDataTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uFAA8E;AAE9E,yEAAoE;AACpE,8FAAyF;AACzF,8EAAyE;AACzE,qGAAgG;AAChG,sDAAgC;AAChC,uHAA6F;AAG7F,8EAAsE;AACtE,uGAAoG;AACpG,6EAKkD;AAClD,mFAAkF;AAClF,iEAAwE;AACxE,4CAAwD;
|
|
1
|
+
{"version":3,"file":"SaveMrParkitDataTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/SaveMrParkitDataTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
|
|
2
|
-
import {
|
|
3
|
-
export declare const mrParkitJsonSchema: JSONSchemaType<
|
|
2
|
+
import { IMrParkitGarageWithTariff } from "./interfaces/IMrParkitGarage";
|
|
3
|
+
export declare const mrParkitJsonSchema: JSONSchemaType<IMrParkitGarageWithTariff[]>;
|
|
@@ -24,8 +24,35 @@ exports.mrParkitJsonSchema = {
|
|
|
24
24
|
longitude: {
|
|
25
25
|
type: "number",
|
|
26
26
|
},
|
|
27
|
+
minReservationDuration: {
|
|
28
|
+
type: "number",
|
|
29
|
+
},
|
|
30
|
+
maxReservationDuration: {
|
|
31
|
+
type: "number",
|
|
32
|
+
},
|
|
33
|
+
pricePerHour: {
|
|
34
|
+
type: "number",
|
|
35
|
+
},
|
|
36
|
+
pricePerDay: {
|
|
37
|
+
type: "number",
|
|
38
|
+
},
|
|
39
|
+
pricePerWeekend: {
|
|
40
|
+
type: "number",
|
|
41
|
+
},
|
|
27
42
|
},
|
|
28
|
-
required: [
|
|
43
|
+
required: [
|
|
44
|
+
"id",
|
|
45
|
+
"name",
|
|
46
|
+
"free",
|
|
47
|
+
"address",
|
|
48
|
+
"latitude",
|
|
49
|
+
"longitude",
|
|
50
|
+
"minReservationDuration",
|
|
51
|
+
"maxReservationDuration",
|
|
52
|
+
"pricePerHour",
|
|
53
|
+
"pricePerDay",
|
|
54
|
+
"pricePerWeekend",
|
|
55
|
+
],
|
|
29
56
|
},
|
|
30
57
|
};
|
|
31
58
|
//# sourceMappingURL=MrParkitJsonSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrParkitJsonSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/MrParkitJsonSchema.ts"],"names":[],"mappings":";;;AAGa,QAAA,kBAAkB,
|
|
1
|
+
{"version":3,"file":"MrParkitJsonSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/MrParkitJsonSchema.ts"],"names":[],"mappings":";;;AAGa,QAAA,kBAAkB,GAAgD;IAC3E,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,EAAE,EAAE;gBACA,IAAI,EAAE,QAAQ;aACjB;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,SAAS;aAClB;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE,QAAQ;aACjB;YACD,SAAS,EAAE;gBACP,IAAI,EAAE,QAAQ;aACjB;YACD,sBAAsB,EAAE;gBACpB,IAAI,EAAE,QAAQ;aACjB;YACD,sBAAsB,EAAE;gBACpB,IAAI,EAAE,QAAQ;aACjB;YACD,YAAY,EAAE;gBACV,IAAI,EAAE,QAAQ;aACjB;YACD,WAAW,EAAE;gBACT,IAAI,EAAE,QAAQ;aACjB;YACD,eAAe,EAAE;gBACb,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,QAAQ,EAAE;YACN,IAAI;YACJ,MAAM;YACN,MAAM;YACN,SAAS;YACT,UAAU;YACV,WAAW;YACX,wBAAwB;YACxB,wBAAwB;YACxB,cAAc;YACd,aAAa;YACb,iBAAiB;SACpB;KACJ;CACJ,CAAC"}
|
|
@@ -6,3 +6,10 @@ export interface IMrParkitGarage {
|
|
|
6
6
|
latitude: number;
|
|
7
7
|
longitude: number;
|
|
8
8
|
}
|
|
9
|
+
export interface IMrParkitGarageWithTariff extends IMrParkitGarage {
|
|
10
|
+
minReservationDuration: number;
|
|
11
|
+
maxReservationDuration: number;
|
|
12
|
+
pricePerHour: number;
|
|
13
|
+
pricePerDay: number;
|
|
14
|
+
pricePerWeekend: number;
|
|
15
|
+
}
|
|
@@ -6,26 +6,26 @@ Modul slouží k ukládání a poskytování informací o parkování.
|
|
|
6
6
|
|
|
7
7
|
**Dostupní poskytovatelé**:
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
9
|
+
- Korid (Liberec)
|
|
10
|
+
- TSK (Praha)
|
|
11
|
+
- IPR (Praha)
|
|
12
|
+
- IPT/OICT
|
|
13
|
+
- TSK (Praha) API v2
|
|
14
14
|
|
|
15
15
|
## Vstupní data
|
|
16
16
|
|
|
17
17
|
### Data nám jsou posílána
|
|
18
18
|
|
|
19
|
-
-
|
|
19
|
+
- Přes Permission Proxy na Input Gateway, dodavatel Korid
|
|
20
20
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
- POST (/koridparkings/config) => RabbitMQ send Message `saveKoridConfToDB` ([Data example](../test/input-gateway/korid-parkings/data/korid-config.json))
|
|
22
|
+
- POST (/koridparkings/data) => RabbitMQ send Message `saveKoridDataToDB` ([Data example](../test/input-gateway/korid-parkings/data/korid-data.json))
|
|
23
23
|
|
|
24
|
-
-
|
|
24
|
+
- na FTP, dodavatel TSK (parkovací zóny)
|
|
25
25
|
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
- Data poskytovatelů přes /source
|
|
27
|
+
- slouží pro administraci a update statických hodnot k poskytovatelům parkovišť
|
|
28
|
+
- POST (/source) => RabbitMq send Message `saveParkingSourceToDB` ([Data example](../test/input-gateway/data/parkingSourceInput.json))
|
|
29
29
|
|
|
30
30
|
### Data aktivně stahujeme
|
|
31
31
|
|
|
@@ -43,141 +43,142 @@ Pro statické (ručně vytvořené) polygony placených parkovišť se stahuje G
|
|
|
43
43
|
Zóny placeného stání používají 2 datové zdroje - TSK a Opendata IPR, které mají přesnější geometrii.
|
|
44
44
|
Další datový zdroj zón je API TSK (CIS VHD CD API) značené jako v2
|
|
45
45
|
|
|
46
|
-
-
|
|
46
|
+
- zdroj dat (**TSK**):
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
config FTPProtocolStrategy:
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
```
|
|
51
|
+
filename: "Area_YYYY-MM-DD.json", // "Tarif_YYYY-MM-DD.tsv" pro tarify
|
|
52
|
+
path: config.datasources.TSKFTPParkingZonesPath,
|
|
53
|
+
url: {
|
|
54
|
+
host: config.datasources.TSKFTP.host,
|
|
55
|
+
port: config.datasources.TSKFTP.port,
|
|
56
|
+
user: config.datasources.TSKFTP.user,
|
|
57
|
+
password: config.datasources.TSKFTP.password,
|
|
58
|
+
},
|
|
59
|
+
encoding: "utf8",
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
-
|
|
62
|
+
- formát dat (**TSK**)
|
|
63
63
|
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
64
|
+
- protokol: ftp
|
|
65
|
+
- datový typ:
|
|
66
|
+
- lokace: json
|
|
67
|
+
- tarify: tsv
|
|
68
|
+
- validační schéma:
|
|
69
|
+
- lokace: json
|
|
70
|
+
- tarify: tsv
|
|
71
|
+
- validační schéma:
|
|
72
|
+
- lokace [datasourceGeoJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/index.ts)
|
|
73
|
+
- tarify [datasourceTariffJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/index.ts)
|
|
74
|
+
- příklad vstupních dat:
|
|
75
|
+
- [lokace](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/test/integration-engine/data/ipr-parking-data-input.json)
|
|
76
|
+
- [tarify (tsv->json)](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/test/integration-engine/data/tsk-parking-tariff-data-input.json)
|
|
77
77
|
|
|
78
|
-
-
|
|
78
|
+
- zdroj dat (**IPR**):
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
config HTTPProtocolStrategy:
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
```
|
|
83
|
+
headers: {},
|
|
84
|
+
method: "GET",
|
|
85
|
+
url: config.datasources.ParkingZones,
|
|
86
|
+
```
|
|
87
87
|
|
|
88
|
-
-
|
|
88
|
+
- formát dat (**IPR**)
|
|
89
89
|
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
90
|
+
- protokol: http
|
|
91
|
+
- datový typ: json
|
|
92
|
+
- validační schéma: [datasourceIPRJSONSchema](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/index.ts)
|
|
93
|
+
- příklad vstupních dat
|
|
94
94
|
|
|
95
|
-
-
|
|
95
|
+
- frekvence stahování
|
|
96
96
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
97
|
+
- cron definice:
|
|
98
|
+
- cron.dataplatform.parkings.saveParkingZonesPrague (`0 0 4 * * *`)
|
|
99
99
|
|
|
100
|
-
-
|
|
101
|
-
- dataplatform.parkings.saveParkingZonesPrague
|
|
100
|
+
- název rabbitmq fronty
|
|
102
101
|
|
|
103
|
-
-
|
|
102
|
+
- dataplatform.parkings.saveParkingZonesPrague
|
|
104
103
|
|
|
105
|
-
|
|
104
|
+
- zdroj dat (**TSK v2**):
|
|
106
105
|
|
|
107
|
-
|
|
108
|
-
headers: {
|
|
109
|
-
Authorization: `Basic jmeno:heslo`,
|
|
110
|
-
},
|
|
111
|
-
method: "GET",
|
|
112
|
-
url: this.config.datasources.parking.TskApiBaseUrl + this.config.datasources.parking.TskApiEndpoints[endpoint],
|
|
113
|
-
```
|
|
106
|
+
config HTTPProtocolStrategy:
|
|
114
107
|
|
|
115
|
-
|
|
108
|
+
```
|
|
109
|
+
headers: {
|
|
110
|
+
Authorization: `Basic jmeno:heslo`,
|
|
111
|
+
},
|
|
112
|
+
method: "GET",
|
|
113
|
+
url: this.config.datasources.parking.TskApiBaseUrl + this.config.datasources.parking.TskApiEndpoints[endpoint],
|
|
114
|
+
```
|
|
116
115
|
|
|
117
|
-
|
|
118
|
-
- protokol: http
|
|
119
|
-
- datový typ: json
|
|
120
|
-
- validační schéma sections: https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/TskParkingSectionSchema.ts
|
|
121
|
-
- validační schéma sections level (251 i 253): https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/TskParkingSectionLevelSchema.ts
|
|
122
|
-
- validační schéma tarify: https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/TskParkingZoneTariffSchema.ts
|
|
116
|
+
- formát dat (**TSK v2**)
|
|
123
117
|
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
118
|
+
- zdroj používá 4 datové zdroje: sections, sectionList level 251 (zóny plac. stání) a level 253 (ZTP), tariffs
|
|
119
|
+
- protokol: http
|
|
120
|
+
- datový typ: json
|
|
121
|
+
- validační schéma sections: https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/TskParkingSectionSchema.ts
|
|
122
|
+
- validační schéma sections level (251 i 253): https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/TskParkingSectionLevelSchema.ts
|
|
123
|
+
- validační schéma tarify: https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/TskParkingZoneTariffSchema.ts
|
|
128
124
|
|
|
129
|
-
-
|
|
125
|
+
- transformace a ukládání:
|
|
126
|
+
- sections => parkings
|
|
127
|
+
- section levels => parkings_location
|
|
128
|
+
- tariffs => parkings_tariffs
|
|
130
129
|
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
- frekvence stahování
|
|
131
|
+
|
|
132
|
+
- cron definice:
|
|
133
|
+
- cron.dataplatform.parkings.saveParkingZonesPrague (`0 0 4 * * *`)
|
|
133
134
|
|
|
134
135
|
#### Parkovací automaty TSK
|
|
135
136
|
|
|
136
|
-
-
|
|
137
|
+
- zdroj dat (**TSK v2**) je stejný, jako pro zóny, liší se jen konec URL: "ParkMachine/list"
|
|
137
138
|
|
|
138
|
-
-
|
|
139
|
+
- formát dat (**TSK v2**)
|
|
139
140
|
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
141
|
+
- protokol: http
|
|
142
|
+
- datový typ: json
|
|
143
|
+
- validační schéma: https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/TskParkingMachinesSchema.ts
|
|
143
144
|
|
|
144
|
-
-
|
|
145
|
+
- frekvence stahování
|
|
145
146
|
|
|
146
|
-
-
|
|
147
|
-
-
|
|
147
|
+
- cron definice:
|
|
148
|
+
- cron.dataplatform.parkings.saveParkingZonesPrague (`0 0 4 * * *`)
|
|
148
149
|
|
|
149
|
-
-
|
|
150
|
+
- cílová tabulka: `parking_machines`
|
|
150
151
|
|
|
151
152
|
#### Placené parkoviště
|
|
152
153
|
|
|
153
|
-
-
|
|
154
|
+
- zdroj dat (**TSK**):
|
|
154
155
|
|
|
155
|
-
|
|
156
|
+
config HTTPProtocolStrategy:
|
|
156
157
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
```
|
|
159
|
+
headers: {},
|
|
160
|
+
method: "GET",
|
|
161
|
+
url: config.datasources.TSKParkings,
|
|
161
162
|
```
|
|
162
163
|
|
|
163
|
-
|
|
164
|
+
- filter `lastUpdated` ne starší než 48h
|
|
164
165
|
|
|
165
|
-
-
|
|
166
|
-
- protokol: http
|
|
167
|
-
- datový typ: json
|
|
168
|
-
- [validační schéma: InputParkingLotsSchema](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/InputParkingLotsSchema.ts)
|
|
169
|
-
- [příklad vstupních dat](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/test/integration-engine/data/parking-lots-data-input.json)
|
|
166
|
+
- formát dat
|
|
170
167
|
|
|
168
|
+
- protokol: http
|
|
169
|
+
- datový typ: json
|
|
170
|
+
- [validační schéma: InputParkingLotsSchema](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/schema-definitions/datasources/InputParkingLotsSchema.ts)
|
|
171
|
+
- [příklad vstupních dat](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/test/integration-engine/data/parking-lots-data-input.json)
|
|
171
172
|
|
|
172
|
-
-
|
|
173
|
+
- frekvence stahování
|
|
173
174
|
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
175
|
+
- cron definice:
|
|
176
|
+
- cron.dataplatform.parkings.saveParkingLotsPrague (`0 0 */6 * * *`)
|
|
177
|
+
- cron.dataplatform.parkings.saveParkingLotsMeasurementsPrague (`0 */5 * * * *`)
|
|
177
178
|
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
179
|
+
- název rabbitmq fronty
|
|
180
|
+
- dataplatform.parkings.saveParkingLotsPrague
|
|
181
|
+
- dataplatform.parkings.saveParkingLotsMeasurementsPrague
|
|
181
182
|
|
|
182
183
|
Parkoviště, která nemají tarif (je null), mohou dostat tarif ze statického zdroje IPT.
|
|
183
184
|
|
|
@@ -195,6 +196,7 @@ Vybraným parkovištím může být nahrazena location za Multipolygon ze zdroje
|
|
|
195
196
|
- datový typ: json
|
|
196
197
|
- validační schéma: [mrParkitJsonSchema](../src/schema-definitions/datasources/MrParkitJsonSchema.ts)
|
|
197
198
|
- příklad vstupnich dat: [InputDataFixture](../test/integration-engine/data/MrParkitInputDataFixture.ts)
|
|
199
|
+
- tarify z datového zdroje jsou namapované na tabulku parkings_tariffs, data ["mrParkitTransformation"](../test/integration-engine/data/MrParkitGarageTransformation.ts)
|
|
198
200
|
- frekvence stahování
|
|
199
201
|
- cron definice:
|
|
200
202
|
- cron.dataplatform.parkings.saveMrParkitData
|
|
@@ -209,32 +211,34 @@ Při transformaci dat lokací data obohacujeme o adresu parkoviště, která vyc
|
|
|
209
211
|
Parkoviště, která nemají tarif (je null), mohou dostat tarif ze statického zdroje IPT.
|
|
210
212
|
Vybraným parkovištím může být nahrazena location za Multipolygon ze zdroje IPT (výměna bodu za multipolygon). Původní bod je uložen do centroidu.
|
|
211
213
|
|
|
212
|
-
### Worker
|
|
214
|
+
### Worker _NewParkingsWorker_
|
|
213
215
|
|
|
214
|
-
#### Task
|
|
216
|
+
#### Task _SaveParkingZonesPrague_
|
|
215
217
|
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
-
|
|
223
|
-
-
|
|
218
|
+
- vstupní rabbitmq fronta
|
|
219
|
+
- název: `dataplatform.parkings.saveParkingZonesPrague`
|
|
220
|
+
- bez parametrů
|
|
221
|
+
- datové zdroje
|
|
222
|
+
- dataSourceTSK (ftp),
|
|
223
|
+
- dataSourceTariffTSK (ftp),
|
|
224
|
+
- dataSourceIPR
|
|
225
|
+
- transformace
|
|
224
226
|
|
|
225
227
|
Data pro `parkings` - TSK zdroj rozšiřujeme o geodata z Opendat IPR (geometrie stejné zóny mergujeme v jednu), které mají přesnější polohu parkovišť. Kde jsou k dispozici, nahrazujeme geometrii TSK.
|
|
226
228
|
Data pro `parkings_location` - IPR zdroj (původní detailní geometrie) rozšiřujeme o geodata z TSK, pouze kdyžkteré mají přesnější polohu parkovišť. Kde jsou k dispozici, nahrazujeme geometrii TSK.
|
|
227
|
-
|
|
228
|
-
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
-
|
|
237
|
-
-
|
|
229
|
+
|
|
230
|
+
- [TSKParkingTransformation](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/integration-engine/TSKParkingTransformation.ts) - mapování pro `parkingsModel` a `parkingsLocationModel`
|
|
231
|
+
- [TSKParkingTariffTransformation](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/integration-engine/TSKParkingTariffTransformation.ts) - mapování pro `parkingsTariffsModel`
|
|
232
|
+
- [IPRParkingTransformation](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/integration-engine/IPRParkingTransformation.ts) - mapování pro `parkingsModel` a `parkingsLocationModel`
|
|
233
|
+
|
|
234
|
+
- data modely
|
|
235
|
+
- parkingsModel -> (schéma public) `parkings`
|
|
236
|
+
- parkingsLocationModel -> (schéma public) `parkings_location` (detailnější geometrie, která vychází z položek IPRu)
|
|
237
|
+
- parkingsTariffsModel -> (schéma public) `parkings_tariffs`
|
|
238
|
+
- Důležité informace pro zpracování dat ze zdroje TariffTSK
|
|
239
|
+
- U parkovišť ZPS pod správou TSK nastaveno ve payment_method hodnotu `litacka`
|
|
240
|
+
- Další zpracování TariffTSK
|
|
241
|
+
- před uložením jsou ceníky zkontrolovány podle pravidel: `ZeroMaxParkingTime`, `MaxChargeIterationsRule`, `MaxPriceRule`. Pokud jedno z pravidel není splněno tak se všechny položky se stejným cTariff přeskočí a tudíž neuloží do databáze. Záznam o tom, které položky neprošly kontrolou se uloží do tabulky `parkings_business_errors`
|
|
238
242
|
|
|
239
243
|
#### Task _SaveMrParkitData_
|
|
240
244
|
|
|
@@ -250,114 +254,113 @@ Vybraným parkovištím může být nahrazena location za Multipolygon ze zdroje
|
|
|
250
254
|
- parkingsLocationModel -> (schéma parkings) `parkings_location`
|
|
251
255
|
- parkingsMeasurementsModel -> (schéma parkings) `parkings_measurements`
|
|
252
256
|
|
|
253
|
-
### Worker
|
|
254
|
-
|
|
255
|
-
####
|
|
256
|
-
|
|
257
|
-
-
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
-
|
|
261
|
-
-
|
|
262
|
-
-
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
-
|
|
266
|
-
-
|
|
267
|
-
-
|
|
268
|
-
-
|
|
269
|
-
-
|
|
270
|
-
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
-
|
|
276
|
-
-
|
|
277
|
-
|
|
278
|
-
-
|
|
279
|
-
|
|
280
|
-
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
-
|
|
284
|
-
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
-
|
|
292
|
-
-
|
|
293
|
-
|
|
294
|
-
-
|
|
295
|
-
|
|
296
|
-
-
|
|
297
|
-
|
|
298
|
-
-
|
|
299
|
-
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
-
|
|
305
|
-
-
|
|
306
|
-
|
|
307
|
-
-
|
|
308
|
-
|
|
309
|
-
-
|
|
310
|
-
|
|
311
|
-
-
|
|
312
|
-
-
|
|
313
|
-
- parkingsMeasurementsActualModel -> `parkings_measurements_actual`
|
|
257
|
+
### Worker _ParkingsWorker_
|
|
258
|
+
|
|
259
|
+
#### _saveParkingLotsPrague_
|
|
260
|
+
|
|
261
|
+
- vstupní rabbitmq fronta
|
|
262
|
+
- název: `dataplatform.parkings.saveParkingLotsPrague`
|
|
263
|
+
- bez parametrů
|
|
264
|
+
- datové zdroje
|
|
265
|
+
- dataSource (http),
|
|
266
|
+
- statický IPT zdroj (http),
|
|
267
|
+
- transformace
|
|
268
|
+
- [ParkingLotsTransformation](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/integration-engine/ParkingLotsTransformation.ts) - mapování pro `parkingsModel` a `parkingsLocationModel`
|
|
269
|
+
- data modely
|
|
270
|
+
- parkingsModel -> (schéma public) `parkings`
|
|
271
|
+
- důležité informace pro zpracování dat ze zdroje TSKParkings
|
|
272
|
+
- V budoucnu přibydou další hodnoty parking_type: `park_sharing` pro službu Mr. Parkit atp.
|
|
273
|
+
- Parametr `zone_type` je povinný pokud je `parking_type == on_street`. Jinak má být `NULL`
|
|
274
|
+
- `zone_free` - placeholder pro Zóny neplaceného stání (zone_type), které se budou integrovat v budoucnu
|
|
275
|
+
|
|
276
|
+
#### _saveParkingLotsMeasurementsPrague_
|
|
277
|
+
|
|
278
|
+
- vstupní rabbitmq fronta
|
|
279
|
+
- název: `dataplatform.parkings.saveParkingLotsMeasurementsPrague`
|
|
280
|
+
- bez parametrů
|
|
281
|
+
- datové zdroje
|
|
282
|
+
- dataSource (http),
|
|
283
|
+
- transformace
|
|
284
|
+
- [ParkingLotsTransformation](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/integration-engine/ParkingLotsTransformation.ts) - mapování pro `parkingsModel` a `parkingsLocationModel`
|
|
285
|
+
- data modely
|
|
286
|
+
|
|
287
|
+
- parkingsMeasurementsModel -> (schéma public) `parkings_measurements_part`
|
|
288
|
+
- parkingsMeasurementsActualModel -> (schéma public) `parkings_measurements_actual`
|
|
289
|
+
|
|
290
|
+
Všechny historické údaje jsou uloženy v tabulce `parkings_measurements_part`. Aktualizujeme pouze aktuální údaje v tabulce `parkings_measurements_actual`.
|
|
291
|
+
|
|
292
|
+
#### _saveKoridConfToDB_
|
|
293
|
+
|
|
294
|
+
- vstupní rabbitmq fronta
|
|
295
|
+
- název: `dataplatform.parkings.saveKoridConfToDB`
|
|
296
|
+
- bez parametrů
|
|
297
|
+
- datové zdroje
|
|
298
|
+
- IG
|
|
299
|
+
- transformace
|
|
300
|
+
- [KoridParkingConfigTransformation](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/integration-engine/KoridParkingConfigTransformation.ts) - mapování pro `parkingsModel` a `parkingsLocationModel`
|
|
301
|
+
- data modely
|
|
302
|
+
- parkingsModel -> `parkings`
|
|
303
|
+
- ParkingsLocationRepository -> `parkings_location`
|
|
304
|
+
|
|
305
|
+
#### _saveKoridDataToDB_
|
|
306
|
+
|
|
307
|
+
- vstupní rabbitmq fronta
|
|
308
|
+
- název: `dataplatform.parkings.saveKoridDataToDB`
|
|
309
|
+
- bez parametrů
|
|
310
|
+
- datové zdroje
|
|
311
|
+
- IG
|
|
312
|
+
- transformace
|
|
313
|
+
- [KoridParkingDataTransformation](https://gitlab.com/operator-ict/golemio/code/modules/parkings/-/blob/development/src/integration-engine/KoridParkingDataTransformation.ts) - mapování pro `parkingsModel` a `parkingsLocationModel`
|
|
314
|
+
- data modely
|
|
315
|
+
- parkingsMeasurementsModel -> `parkings_measurements_part`
|
|
316
|
+
- parkingsMeasurementsActualModel -> `parkings_measurements_actual`
|
|
314
317
|
|
|
315
318
|
### ZtpParkingZonesWorker
|
|
316
319
|
|
|
317
|
-
####
|
|
318
|
-
|
|
319
|
-
-
|
|
320
|
-
-
|
|
321
|
-
-
|
|
322
|
-
-
|
|
323
|
-
-
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
-
|
|
329
|
-
-
|
|
330
|
-
|
|
331
|
-
### Worker
|
|
332
|
-
|
|
333
|
-
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
-
|
|
343
|
-
-
|
|
344
|
-
-
|
|
320
|
+
#### _updateZtpParkings_
|
|
321
|
+
|
|
322
|
+
- vstupní rabbitmq fronta
|
|
323
|
+
- název: `dataplatform.parkings.updateZtpParkings`
|
|
324
|
+
- bez parametrů
|
|
325
|
+
- datové zdroje
|
|
326
|
+
- JSON stahovaný z IPR
|
|
327
|
+
- frekvence stahování: denně v 5 ráno (`0 5 */1 * *`)
|
|
328
|
+
- transformace
|
|
329
|
+
Mapování `IZtpParkingJsonFeature` na `IParking` + doplnění o adresu.
|
|
330
|
+
Získává se z Photon API metodou `GeocodeApi.getAddressByLatLngFromPhoton` v modulu Core.
|
|
331
|
+
- data modely
|
|
332
|
+
- parkingsModel -> (schéma public) `parkings`
|
|
333
|
+
|
|
334
|
+
### Worker _StaticTariffsWorker_ a _UpdateStaticTariffsTask_
|
|
335
|
+
|
|
336
|
+
- vstupní rabbitmq fronta:
|
|
337
|
+
- název: `updateStaticTariffs`
|
|
338
|
+
- bez parametrů
|
|
339
|
+
- datový zdroj
|
|
340
|
+
- JSON stahovaný ze zdroje IPT
|
|
341
|
+
- [příklad vstupních dat](../test/integration-engine/data/StaticParkingTariffsData.json)
|
|
342
|
+
- transformace
|
|
343
|
+
- mapování na `IParkingTariff`
|
|
344
|
+
- `relations` mapuje `StaticTariffsMatcher` tak, že do příslušného `IParking` doplní id tarifu, pokud je toto null
|
|
345
|
+
- data modely
|
|
346
|
+
- parkingsModel -> (schéma public) `parkings`
|
|
347
|
+
- parkingTariffsmodel -> (schéma public) `parkings_tariffs`
|
|
345
348
|
|
|
346
349
|
### Worker ParkingSourcesWorker
|
|
347
350
|
|
|
348
|
-
-
|
|
349
|
-
-
|
|
350
|
-
-
|
|
351
|
+
- ukládá data z queue `saveParkingSourceToDB` do db
|
|
352
|
+
- zdroj je IG přes `ParkingSourcesRouter`
|
|
353
|
+
- transformace není
|
|
351
354
|
|
|
352
355
|
## Uložení dat
|
|
353
356
|
|
|
354
|
-
-
|
|
355
|
-
-
|
|
356
|
-
-
|
|
357
|
-
-
|
|
358
|
-
-
|
|
359
|
-
-
|
|
360
|
-
-
|
|
357
|
+
- typ databáze
|
|
358
|
+
- PSQL
|
|
359
|
+
- databázové schéma
|
|
360
|
+
- 
|
|
361
|
+
- retence dat
|
|
362
|
+
- `parkingsModel`, `parkingsLocationModel`, `parkingsMeasurementsActualModel`, `parkingsTariffsModel` update
|
|
363
|
+
- `parkingsMeasurementsModel` historizace bez promazávání
|
|
361
364
|
|
|
362
365
|
## Output API
|
|
363
366
|
|
|
@@ -386,10 +389,10 @@ Vybraným parkovištím může být nahrazena location za Multipolygon ze zdroje
|
|
|
386
389
|
|
|
387
390
|
#### _/v2/parking/detail/:id_
|
|
388
391
|
|
|
389
|
-
-
|
|
390
|
-
-
|
|
391
|
-
-
|
|
392
|
-
-
|
|
392
|
+
- zdrojové tabulky
|
|
393
|
+
- parkings
|
|
394
|
+
- parkings_location
|
|
395
|
+
- detailnejší geometrie, vychází z OpenData IPR a doplňuje parametry z TSK (ftp)
|
|
393
396
|
|
|
394
397
|
#### _/v2/parking/tariffs/_
|
|
395
398
|
|
|
@@ -440,15 +443,15 @@ _:warning: Deprecated, využijte /parking/measurements_
|
|
|
440
443
|
- zdrojové tabulky
|
|
441
444
|
- parkings
|
|
442
445
|
- parkings_location
|
|
443
|
-
-
|
|
446
|
+
- added `special_access` column with possible values: `for_all, disabled, charging, parent, delivery, customer, resident, bus, designated, truck,motorcycle, RV`
|
|
444
447
|
- zatím vytvořeno pro nové API od TSK další budou následovat
|
|
445
448
|
- nový formát výstupu viz open api dokumentace
|
|
446
449
|
|
|
447
450
|
#### _/v3/parking/:id_
|
|
448
451
|
|
|
449
|
-
-
|
|
450
|
-
-
|
|
451
|
-
-
|
|
452
|
+
- zdrojové tabulky
|
|
453
|
+
- parkings
|
|
454
|
+
- parkings_location
|
|
452
455
|
|
|
453
456
|
#### _/v3/parking-tariff_
|
|
454
457
|
|
|
@@ -456,10 +459,9 @@ _:warning: Deprecated, využijte /parking/measurements_
|
|
|
456
459
|
- parkings_tariffs
|
|
457
460
|
- na výstupu děleno do charge bands a charges
|
|
458
461
|
- pod jedním tariffem může být více charge bands ~ každý řádek se stejným `tariff_id` je jeden charge band
|
|
459
|
-
- `valid_from` a `valid_to` se vztahují k charge band se vypočítá jako min a
|
|
462
|
+
- `valid_from` a `valid_to` se vztahují k charge band se vypočítá jako min a maximum z `valid_from` a `valid_to` ze všech chargů
|
|
460
463
|
- pod jedním charge band může být více charges pozná se podle `charge_band_name`
|
|
461
464
|
|
|
462
|
-
|
|
463
465
|
#### _/v3/parking-tariff/:id_
|
|
464
466
|
|
|
465
467
|
- zdrojové tabulky
|
|
@@ -471,7 +473,7 @@ _:warning: Deprecated, využijte /parking/measurements_
|
|
|
471
473
|
- zdrojové tabulky
|
|
472
474
|
- parkings_machines
|
|
473
475
|
- seznam parkovacích automatů s geometrií
|
|
474
|
-
-
|
|
476
|
+
- `type` nabývá hodnot: `payment_machine, info_box
|
|
475
477
|
|
|
476
478
|
#### _/v3/parking-machines/:id_
|
|
477
479
|
|
package/docs/openapi-output.yaml
CHANGED