@golemio/energetics 1.4.12-rc.1866109709 → 1.4.12-rc.1964798350

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.
Files changed (79) hide show
  1. package/db/example/00_clear_test_data.sql +2 -1
  2. package/db/migrations/postgresql/20250626130910-enapo-measurements.js +53 -0
  3. package/db/migrations/postgresql/sqls/20250626130910-enapo-measurements-down.sql +1 -0
  4. package/db/migrations/postgresql/sqls/20250626130910-enapo-measurements-up.sql +12 -0
  5. package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/PpasAveApiDataSourceProvider.d.ts +1 -0
  6. package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/PpasAveApiDataSourceProvider.js +2 -0
  7. package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/PpasAveApiDataSourceProvider.js.map +1 -1
  8. package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper.d.ts +1 -0
  9. package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper.js.map +1 -1
  10. package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/interfaces/IAveApiDeviceDataParams.d.ts +1 -0
  11. package/dist/integration-engine/commodity-providers/helper/EnapoMeasurementsDataNormalizer.d.ts +5 -0
  12. package/dist/integration-engine/commodity-providers/helper/{MeasurementsDataNormalizer.js → EnapoMeasurementsDataNormalizer.js} +1 -1
  13. package/dist/integration-engine/commodity-providers/helper/EnapoMeasurementsDataNormalizer.js.map +1 -0
  14. package/dist/integration-engine/commodity-providers/ioc/WorkerContainerToken.js.map +1 -1
  15. package/dist/integration-engine/commodity-providers/workers/tasks/AbstractFetchMeasurementsTask.js +2 -2
  16. package/dist/integration-engine/commodity-providers/workers/tasks/AbstractFetchMeasurementsTask.js.map +1 -1
  17. package/dist/integration-engine/enapo/constants.d.ts +1 -0
  18. package/dist/integration-engine/enapo/constants.js +5 -0
  19. package/dist/integration-engine/enapo/constants.js.map +1 -0
  20. package/dist/integration-engine/enapo/helpers/IntervalGenerator.d.ts +6 -0
  21. package/dist/integration-engine/enapo/helpers/IntervalGenerator.js +20 -0
  22. package/dist/integration-engine/enapo/helpers/IntervalGenerator.js.map +1 -0
  23. package/dist/integration-engine/enapo/helpers/MeasurementsDataNormalizer.d.ts +5 -0
  24. package/dist/integration-engine/enapo/helpers/MeasurementsDataNormalizer.js +11 -0
  25. package/dist/integration-engine/enapo/helpers/MeasurementsDataNormalizer.js.map +1 -0
  26. package/dist/integration-engine/enapo/interfaces/IPPasMeasurementData.d.ts +28 -0
  27. package/dist/integration-engine/enapo/interfaces/IPPasMeasurementData.js +3 -0
  28. package/dist/integration-engine/enapo/interfaces/IPPasMeasurementData.js.map +1 -0
  29. package/dist/integration-engine/enapo/interfaces/IPPasPlaces.d.ts +48 -0
  30. package/dist/integration-engine/enapo/interfaces/IPPasPlaces.js +3 -0
  31. package/dist/integration-engine/enapo/interfaces/IPPasPlaces.js.map +1 -0
  32. package/dist/integration-engine/enapo/ioc/Di.d.ts +3 -0
  33. package/dist/integration-engine/enapo/ioc/Di.js +30 -0
  34. package/dist/integration-engine/enapo/ioc/Di.js.map +1 -0
  35. package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.d.ts +7 -0
  36. package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.js +19 -0
  37. package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.js.map +1 -0
  38. package/dist/integration-engine/enapo/repositories/EnapoMeasurementsRepository.d.ts +5 -0
  39. package/dist/integration-engine/enapo/repositories/EnapoMeasurementsRepository.js +32 -0
  40. package/dist/integration-engine/enapo/repositories/EnapoMeasurementsRepository.js.map +1 -0
  41. package/dist/integration-engine/enapo/transformations/PPasMeasurementTransformation.d.ts +15 -0
  42. package/dist/integration-engine/enapo/transformations/PPasMeasurementTransformation.js +53 -0
  43. package/dist/integration-engine/enapo/transformations/PPasMeasurementTransformation.js.map +1 -0
  44. package/dist/integration-engine/enapo/workers/EnapoWorker.d.ts +7 -0
  45. package/dist/integration-engine/enapo/workers/EnapoWorker.js +21 -0
  46. package/dist/integration-engine/enapo/workers/EnapoWorker.js.map +1 -0
  47. package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.d.ts +7 -0
  48. package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.js +3 -0
  49. package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.js.map +1 -0
  50. package/dist/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.d.ts +8 -0
  51. package/dist/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.js +43 -0
  52. package/dist/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.js.map +1 -0
  53. package/dist/integration-engine/enapo/workers/task/AbstractEnapoFetchMeasurementsTask.d.ts +8 -0
  54. package/dist/integration-engine/enapo/workers/task/AbstractEnapoFetchMeasurementsTask.js +33 -0
  55. package/dist/integration-engine/enapo/workers/task/AbstractEnapoFetchMeasurementsTask.js.map +1 -0
  56. package/dist/integration-engine/enapo/workers/task/EnapoPpasTask.d.ts +29 -0
  57. package/dist/integration-engine/enapo/workers/task/EnapoPpasTask.js +117 -0
  58. package/dist/integration-engine/enapo/workers/task/EnapoPpasTask.js.map +1 -0
  59. package/dist/integration-engine/index.js +7 -1
  60. package/dist/integration-engine/index.js.map +1 -1
  61. package/dist/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.js +2 -1
  62. package/dist/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.js.map +1 -1
  63. package/dist/schema-definitions/datasources/commodity-providers/interfaces/IAveApiDeviceDataDto.d.ts +1 -0
  64. package/dist/schema-definitions/datasources/helpers/MeasurementVariableEnum.d.ts +2 -1
  65. package/dist/schema-definitions/datasources/helpers/MeasurementVariableEnum.js +1 -0
  66. package/dist/schema-definitions/datasources/helpers/MeasurementVariableEnum.js.map +1 -1
  67. package/dist/schema-definitions/models/EnapoMeasurementsModel.d.ts +17 -0
  68. package/dist/schema-definitions/models/EnapoMeasurementsModel.js +62 -0
  69. package/dist/schema-definitions/models/EnapoMeasurementsModel.js.map +1 -0
  70. package/dist/schema-definitions/models/constants/MeasurementConstants.js +1 -0
  71. package/dist/schema-definitions/models/constants/MeasurementConstants.js.map +1 -1
  72. package/dist/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.d.ts +9 -0
  73. package/dist/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.js +3 -0
  74. package/dist/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.js.map +1 -0
  75. package/docs/Energetika-Str/303/241nka-5-Str/303/241nka-3.drawio.png +0 -0
  76. package/docs/implementation_documentation.md +38 -11
  77. package/package.json +1 -1
  78. package/dist/integration-engine/commodity-providers/helper/MeasurementsDataNormalizer.d.ts +0 -4
  79. package/dist/integration-engine/commodity-providers/helper/MeasurementsDataNormalizer.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEnapoPpasTaskMeasurementParams.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { CommodityProviderType } from "../../../../schema-definitions/models/helpers/CommodityProviderTypeEnum";
2
+ import { IEnapoPpasTaskMeasurementParams } from "../interfaces/IEnapoPpasTaskMeasurementParams";
3
+ export declare class EnapoPpasMeasurementsParamsValidationSchema implements IEnapoPpasTaskMeasurementParams {
4
+ dateFrom?: string;
5
+ dateTo?: string;
6
+ targetDays?: number;
7
+ providerType: CommodityProviderType.PpasAveV | CommodityProviderType.PpasAveM | CommodityProviderType.PpasAveA | CommodityProviderType.PpasAveC | CommodityProviderType.PpasAveMO;
8
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EnapoPpasMeasurementsParamsValidationSchema = void 0;
13
+ const CommodityProviderTypeEnum_1 = require("../../../../schema-definitions/models/helpers/CommodityProviderTypeEnum");
14
+ const class_validator_1 = require("@golemio/core/dist/shared/class-validator");
15
+ class EnapoPpasMeasurementsParamsValidationSchema {
16
+ }
17
+ exports.EnapoPpasMeasurementsParamsValidationSchema = EnapoPpasMeasurementsParamsValidationSchema;
18
+ __decorate([
19
+ (0, class_validator_1.IsISO8601)(),
20
+ (0, class_validator_1.IsOptional)(),
21
+ __metadata("design:type", String)
22
+ ], EnapoPpasMeasurementsParamsValidationSchema.prototype, "dateFrom", void 0);
23
+ __decorate([
24
+ (0, class_validator_1.IsISO8601)(),
25
+ (0, class_validator_1.IsOptional)(),
26
+ __metadata("design:type", String)
27
+ ], EnapoPpasMeasurementsParamsValidationSchema.prototype, "dateTo", void 0);
28
+ __decorate([
29
+ (0, class_validator_1.IsNumber)(),
30
+ (0, class_validator_1.IsOptional)(),
31
+ __metadata("design:type", Number)
32
+ ], EnapoPpasMeasurementsParamsValidationSchema.prototype, "targetDays", void 0);
33
+ __decorate([
34
+ (0, class_validator_1.IsEnum)([
35
+ CommodityProviderTypeEnum_1.CommodityProviderType.PpasAveV,
36
+ CommodityProviderTypeEnum_1.CommodityProviderType.PpasAveM,
37
+ CommodityProviderTypeEnum_1.CommodityProviderType.PpasAveA,
38
+ CommodityProviderTypeEnum_1.CommodityProviderType.PpasAveC,
39
+ CommodityProviderTypeEnum_1.CommodityProviderType.PpasAveMO,
40
+ ]),
41
+ __metadata("design:type", String)
42
+ ], EnapoPpasMeasurementsParamsValidationSchema.prototype, "providerType", void 0);
43
+ //# sourceMappingURL=EnapoPpasMeasurementsParamsValidationSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnapoPpasMeasurementsParamsValidationSchema.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uHAAsF;AACtF,+EAAoG;AAGpG,MAAa,2CAA2C;CA0BvD;AA1BD,kGA0BC;AAvBG;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;6EACK;AAIlB;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;2EACG;AAIhB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+EACO;AASpB;IAPC,IAAA,wBAAM,EAAC;QACJ,iDAAqB,CAAC,QAAQ;QAC9B,iDAAqB,CAAC,QAAQ;QAC9B,iDAAqB,CAAC,QAAQ;QAC9B,iDAAqB,CAAC,QAAQ;QAC9B,iDAAqB,CAAC,SAAS;KAClC,CAAC;;iFAMoC"}
@@ -0,0 +1,8 @@
1
+ import { EnapoMeasurementsRepository } from "../../repositories/EnapoMeasurementsRepository";
2
+ import { IEnapoMeasurementsDto } from "../../../../schema-definitions/models/interfaces/IEnapoMeasurmentsDto";
3
+ import { AbstractTask } from "@golemio/core/dist/integration-engine";
4
+ export declare abstract class AbstractEnapoFetchMeasurementsTask<T extends object> extends AbstractTask<T> {
5
+ protected abstract measurementsRepository: EnapoMeasurementsRepository;
6
+ constructor();
7
+ protected saveConsumptionData(data: IEnapoMeasurementsDto[], skipFilter?: boolean): Promise<void>;
8
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractEnapoFetchMeasurementsTask = void 0;
4
+ const constants_1 = require("../../constants");
5
+ const MeasurementsDataNormalizer_1 = require("../../helpers/MeasurementsDataNormalizer");
6
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
7
+ const MEASUREMENTS_BATCH_SIZE = 5000;
8
+ class AbstractEnapoFetchMeasurementsTask extends integration_engine_1.AbstractTask {
9
+ constructor() {
10
+ super(constants_1.ENAPO_WORKER_NAME);
11
+ }
12
+ async saveConsumptionData(data, skipFilter = false) {
13
+ for (let i = 0; i < data.length; i += MEASUREMENTS_BATCH_SIZE) {
14
+ let batch = data.slice(i, i + MEASUREMENTS_BATCH_SIZE);
15
+ if (!skipFilter) {
16
+ batch = MeasurementsDataNormalizer_1.EnapoMeasurementsDataNormalizer.filter(batch);
17
+ }
18
+ const uniqueValues = new Set();
19
+ batch = batch.filter((item) => {
20
+ const key = `${item.timestamp.getTime()}_${item.var}_${item.place_id}_${item.eic}`;
21
+ if (uniqueValues.has(key))
22
+ return false;
23
+ uniqueValues.add(key);
24
+ return true;
25
+ });
26
+ if (batch.length) {
27
+ await this.measurementsRepository.bulkSave(batch);
28
+ }
29
+ }
30
+ }
31
+ }
32
+ exports.AbstractEnapoFetchMeasurementsTask = AbstractEnapoFetchMeasurementsTask;
33
+ //# sourceMappingURL=AbstractEnapoFetchMeasurementsTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractEnapoFetchMeasurementsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/workers/task/AbstractEnapoFetchMeasurementsTask.ts"],"names":[],"mappings":";;;AAAA,+CAAwD;AACxD,yFAA+F;AAG/F,8EAAqE;AAErE,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,MAAsB,kCAAqD,SAAQ,iCAAe;IAG9F;QACI,KAAK,CAAC,6BAAiB,CAAC,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,mBAAmB,CAAC,IAA6B,EAAE,aAAsB,KAAK;QAC1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,uBAAuB,EAAE;YAC3D,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC;YAEvD,IAAI,CAAC,UAAU,EAAE;gBACb,KAAK,GAAG,4DAA+B,CAAC,MAAM,CAAC,KAAK,CAA4B,CAAC;aACpF;YAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;YACvC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACnF,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACxC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,MAAM,EAAE;gBACd,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACrD;SACJ;IACL,CAAC;CACJ;AA5BD,gFA4BC"}
@@ -0,0 +1,29 @@
1
+ import { AveApiDtoUnion, ICommodityProviderDataSourceFactory } from "../../../commodity-providers/datasources/interfaces/ICommodityProviderDataSourceFactory";
2
+ import { IAveConfig, PpasAveApiHelper } from "../../../commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper";
3
+ import { IAveApiDeviceDataParams } from "../../../commodity-providers/datasources/ppas-ave-api/interfaces/IAveApiDeviceDataParams";
4
+ import { IPpasMeasurementsParams } from "../../../commodity-providers/workers/interfaces/IPpasMeasurementsParams";
5
+ import { EnapoMeasurementsRepository } from "../../repositories/EnapoMeasurementsRepository";
6
+ import { PPasMeasurementTransformation } from "../../transformations/PPasMeasurementTransformation";
7
+ import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleConfig";
8
+ import { ILogger } from "@golemio/core/dist/helpers/logger/LoggerProvider";
9
+ import { IEnapoPpasTaskMeasurementParams } from "../interfaces/IEnapoPpasTaskMeasurementParams";
10
+ import { EnapoPpasMeasurementsParamsValidationSchema } from "../schema/EnapoPpasMeasurementsParamsValidationSchema";
11
+ import { AbstractEnapoFetchMeasurementsTask } from "./AbstractEnapoFetchMeasurementsTask";
12
+ export declare class EnapoPpasTask extends AbstractEnapoFetchMeasurementsTask<IEnapoPpasTaskMeasurementParams> {
13
+ protected config: ISimpleConfig;
14
+ protected measurementsRepository: EnapoMeasurementsRepository;
15
+ protected transformation: PPasMeasurementTransformation;
16
+ protected logger: ILogger;
17
+ protected dataSourceFactory: ICommodityProviderDataSourceFactory;
18
+ queueName: string;
19
+ queueTtl: number;
20
+ schema: typeof EnapoPpasMeasurementsParamsValidationSchema;
21
+ constructor(config: ISimpleConfig, measurementsRepository: EnapoMeasurementsRepository, transformation: PPasMeasurementTransformation, logger: ILogger, dataSourceFactory: ICommodityProviderDataSourceFactory);
22
+ execute(params: IPpasMeasurementsParams): Promise<void>;
23
+ private fetchAndSave;
24
+ protected getProviderConfig(data: IPpasMeasurementsParams): {
25
+ baseUrl: string;
26
+ config: IAveConfig;
27
+ };
28
+ protected getDataFromDataSource<T extends AveApiDtoUnion>(resourceTypeKey: keyof typeof PpasAveApiHelper.resourceType, sessionId: string, params?: IAveApiDeviceDataParams): Promise<T[]>;
29
+ }
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.EnapoPpasTask = void 0;
16
+ const CommodityProviderEnum_1 = require("../../../commodity-providers/datasources/helpers/CommodityProviderEnum");
17
+ const AveDataTypeEnum_1 = require("../../../commodity-providers/datasources/ppas-ave-api/AveDataTypeEnum");
18
+ const PpasAveApiHelper_1 = require("../../../commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper");
19
+ const IntervalGenerator_1 = require("../../helpers/IntervalGenerator");
20
+ const EnapoWorkerContainerToken_1 = require("../../ioc/EnapoWorkerContainerToken");
21
+ const EnapoMeasurementsRepository_1 = require("../../repositories/EnapoMeasurementsRepository");
22
+ const PPasMeasurementTransformation_1 = require("../../transformations/PPasMeasurementTransformation");
23
+ const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
24
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
25
+ const luxon_1 = require("@golemio/core/dist/shared/luxon");
26
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
27
+ const EnapoPpasMeasurementsParamsValidationSchema_1 = require("../schema/EnapoPpasMeasurementsParamsValidationSchema");
28
+ const AbstractEnapoFetchMeasurementsTask_1 = require("./AbstractEnapoFetchMeasurementsTask");
29
+ let EnapoPpasTask = exports.EnapoPpasTask = class EnapoPpasTask extends AbstractEnapoFetchMeasurementsTask_1.AbstractEnapoFetchMeasurementsTask {
30
+ constructor(config, measurementsRepository, transformation, logger, dataSourceFactory) {
31
+ super();
32
+ this.config = config;
33
+ this.measurementsRepository = measurementsRepository;
34
+ this.transformation = transformation;
35
+ this.logger = logger;
36
+ this.dataSourceFactory = dataSourceFactory;
37
+ this.queueName = "fetchPpasMeasurements";
38
+ this.queueTtl = 60 * 60 * 1000;
39
+ this.schema = EnapoPpasMeasurementsParamsValidationSchema_1.EnapoPpasMeasurementsParamsValidationSchema;
40
+ }
41
+ async execute(params) {
42
+ const { baseUrl, config } = this.getProviderConfig(params);
43
+ const aveApiHelper = new PpasAveApiHelper_1.PpasAveApiHelper(baseUrl, config);
44
+ const sessionId = await aveApiHelper.createSession();
45
+ try {
46
+ const places = await this.getDataFromDataSource("Places", sessionId);
47
+ for (const place of places) {
48
+ if (config.excludelist && config.excludelist.includes(place.Eic)) {
49
+ continue;
50
+ }
51
+ this.logger.info(`Fetching data for device ${place.DeviceSerialNumber}`);
52
+ await this.fetchAndSave(place, sessionId, params);
53
+ }
54
+ }
55
+ finally {
56
+ await aveApiHelper.terminateSession(sessionId);
57
+ }
58
+ }
59
+ async fetchAndSave(place, sessionId, params) {
60
+ try {
61
+ if (!params?.targetDays && (!params?.dateFrom || !params?.dateTo)) {
62
+ throw new golemio_errors_1.GeneralError("Both dateFrom and dateTo must be provided when targetDays is not specified", this.constructor.name);
63
+ }
64
+ const intervals = params.targetDays
65
+ ? IntervalGenerator_1.IntervalGenerator.generateIntervalsFromTargetDays({ targetDays: params.targetDays }, 5)
66
+ : IntervalGenerator_1.IntervalGenerator.getIntervals(luxon_1.DateTime.fromISO(params.dateFrom), luxon_1.DateTime.fromISO(params.dateTo), 5);
67
+ for (const interval of intervals) {
68
+ const start = interval.start.startOf("day");
69
+ const end = interval.end.startOf("day");
70
+ const measurementRawData = await this.getDataFromDataSource("DeviceData", sessionId, {
71
+ placeId: place.Id,
72
+ dateFrom: start.toISODate(),
73
+ dateTo: end.toISODate(),
74
+ isoDate: "1",
75
+ // fill all measurement values (we need the OperatingAmount and ConvertDifference values)
76
+ truncateData: "0",
77
+ dataType: AveDataTypeEnum_1.AveDataType.RawData.toString(),
78
+ });
79
+ const measurementRawDataWithPlace = measurementRawData.map((item) => ({
80
+ ...place,
81
+ ...item,
82
+ }));
83
+ const transFormedData = this.transformation.transformArray(measurementRawDataWithPlace);
84
+ await this.saveConsumptionData(transFormedData.flatMap((item) => Object.values(item)));
85
+ }
86
+ }
87
+ catch (err) {
88
+ if (err instanceof golemio_errors_1.AbstractGolemioError) {
89
+ throw err;
90
+ }
91
+ throw new golemio_errors_1.GeneralError(`Unable to download data for place id: ${place.Id} eic: ${place.Eic}`, this.constructor.name, err);
92
+ }
93
+ }
94
+ getProviderConfig(data) {
95
+ const rawConfig = this.config.getValue(`module.energetics.commodityProviders.${data.providerType}`);
96
+ rawConfig.excludelist = rawConfig.excludelist ? Object.values(rawConfig.excludelist) : null;
97
+ return {
98
+ baseUrl: this.config.getValue("module.energetics.commodityProviders.ppas_ave_api.baseUrl"),
99
+ config: this.config.getValue(`module.energetics.commodityProviders.${data.providerType}`),
100
+ };
101
+ }
102
+ getDataFromDataSource(resourceTypeKey, sessionId, params) {
103
+ const dataSource = this.dataSourceFactory.getDataSource(CommodityProviderEnum_1.CommodityProvider.PpasInternetAveApi, PpasAveApiHelper_1.PpasAveApiHelper.resourceType[resourceTypeKey], sessionId, params);
104
+ return dataSource.getAll();
105
+ }
106
+ };
107
+ exports.EnapoPpasTask = EnapoPpasTask = __decorate([
108
+ (0, tsyringe_1.injectable)(),
109
+ __param(0, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)),
110
+ __param(1, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.EnapoMeasurementsRepository)),
111
+ __param(2, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.PPasMeasurementTransformation)),
112
+ __param(3, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
113
+ __param(4, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.CommodityProviderDataSourceFactory)),
114
+ __metadata("design:paramtypes", [Object, EnapoMeasurementsRepository_1.EnapoMeasurementsRepository,
115
+ PPasMeasurementTransformation_1.PPasMeasurementTransformation, Object, Object])
116
+ ], EnapoPpasTask);
117
+ //# sourceMappingURL=EnapoPpasTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnapoPpasTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/workers/task/EnapoPpasTask.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,11 @@ exports.workers = void 0;
4
4
  const OictEnergetikaWorker_1 = require("./workers/oict-energetika/OictEnergetikaWorker");
5
5
  const CommodityWorker_1 = require("./commodity-providers/workers/CommodityWorker");
6
6
  const EnergeticsNewVpalaceWorker_1 = require("./workers/vpalace/EnergeticsNewVpalaceWorker");
7
- exports.workers = [OictEnergetikaWorker_1.OictEnergetikaWorker, EnergeticsNewVpalaceWorker_1.EnergeticsNewVpalaceWorker, CommodityWorker_1.CommodityWorker];
7
+ const EnapoWorker_1 = require("./enapo/workers/EnapoWorker");
8
+ exports.workers = [
9
+ OictEnergetikaWorker_1.OictEnergetikaWorker,
10
+ EnergeticsNewVpalaceWorker_1.EnergeticsNewVpalaceWorker,
11
+ CommodityWorker_1.CommodityWorker,
12
+ EnapoWorker_1.EnapoWorker,
13
+ ];
8
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;AAAA,yFAAwF;AAExF,mFAAgF;AAChF,6FAA0F;AAE7E,QAAA,OAAO,GAAoC,CAAC,2CAAoB,EAAE,uDAA0B,EAAE,iCAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;AAAA,yFAAwF;AAExF,mFAAgF;AAChF,6FAA0F;AAC1F,6DAA0D;AAE7C,QAAA,OAAO,GAAoC;IACpD,2CAAoB;IACpB,uDAA0B;IAC1B,iCAAe;IACf,yBAAW;CACd,CAAC"}
@@ -9,8 +9,9 @@ exports.aveApiDeviceDataJsonSchema = {
9
9
  StandardTime: { type: "string" },
10
10
  OperatingAmount: { type: "number" },
11
11
  ConvertDifference: { type: "number" },
12
+ OperatingDifference: { type: "number" },
12
13
  },
13
- required: ["StandardTime", "OperatingAmount", "ConvertDifference"],
14
+ required: ["StandardTime", "OperatingAmount", "ConvertDifference", "OperatingDifference"],
14
15
  },
15
16
  };
16
17
  //# sourceMappingURL=AveApiDeviceDataJsonSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AveApiDeviceDataJsonSchema.js","sourceRoot":"","sources":["../../../../src/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.ts"],"names":[],"mappings":";;;AAGa,QAAA,0BAA0B,GAA2C;IAC9E,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACnC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACxC;QACD,QAAQ,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;KACrE;CACJ,CAAC"}
1
+ {"version":3,"file":"AveApiDeviceDataJsonSchema.js","sourceRoot":"","sources":["../../../../src/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.ts"],"names":[],"mappings":";;;AAGa,QAAA,0BAA0B,GAA2C;IAC9E,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACnC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrC,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1C;QACD,QAAQ,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAC5F;CACJ,CAAC"}
@@ -2,4 +2,5 @@ export interface IAveApiDeviceDataDto {
2
2
  StandardTime: string;
3
3
  OperatingAmount: number;
4
4
  ConvertDifference: number;
5
+ OperatingDifference: number;
5
6
  }
@@ -1,4 +1,5 @@
1
1
  export declare enum MeasurementVariable {
2
2
  Core = "core",
3
- Core2 = "core2"
3
+ Core2 = "core2",
4
+ CoreDiff = "corediff"
4
5
  }
@@ -5,5 +5,6 @@ var MeasurementVariable;
5
5
  (function (MeasurementVariable) {
6
6
  MeasurementVariable["Core"] = "core";
7
7
  MeasurementVariable["Core2"] = "core2";
8
+ MeasurementVariable["CoreDiff"] = "corediff";
8
9
  })(MeasurementVariable || (exports.MeasurementVariable = MeasurementVariable = {}));
9
10
  //# sourceMappingURL=MeasurementVariableEnum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MeasurementVariableEnum.js","sourceRoot":"","sources":["../../../../src/schema-definitions/datasources/helpers/MeasurementVariableEnum.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC3B,oCAAa,CAAA;IACb,sCAAe,CAAA;AACnB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B"}
1
+ {"version":3,"file":"MeasurementVariableEnum.js","sourceRoot":"","sources":["../../../../src/schema-definitions/datasources/helpers/MeasurementVariableEnum.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC3B,oCAAa,CAAA;IACb,sCAAe,CAAA;IACf,4CAAqB,CAAA;AACzB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
@@ -0,0 +1,17 @@
1
+ import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
2
+ import { Model, ModelAttributes } from "@golemio/core/dist/shared/sequelize";
3
+ import { IEnapoMeasurementsDto } from "./interfaces/IEnapoMeasurmentsDto";
4
+ export declare class EnapoMeasurementsModel extends Model<IEnapoMeasurementsDto> implements IEnapoMeasurementsDto {
5
+ static TABLE_NAME: string;
6
+ static REPOSITORY_NAME: string;
7
+ static JSON_SCHEMA_VALIDATOR_NAME: string;
8
+ eic: string;
9
+ value: number;
10
+ timestamp: Date;
11
+ var: string;
12
+ source: string;
13
+ place_id: string;
14
+ device_serial_number: string;
15
+ static attributeModel: ModelAttributes<EnapoMeasurementsModel, IEnapoMeasurementsDto>;
16
+ static jsonSchema: JSONSchemaType<IEnapoMeasurementsDto[]>;
17
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnapoMeasurementsModel = void 0;
4
+ const sequelize_1 = require("@golemio/core/dist/shared/sequelize");
5
+ const MeasurementConstants_1 = require("./constants/MeasurementConstants");
6
+ class EnapoMeasurementsModel extends sequelize_1.Model {
7
+ }
8
+ exports.EnapoMeasurementsModel = EnapoMeasurementsModel;
9
+ EnapoMeasurementsModel.TABLE_NAME = "enapo_measurements";
10
+ EnapoMeasurementsModel.REPOSITORY_NAME = "EnapoMeasurementsRepository";
11
+ EnapoMeasurementsModel.JSON_SCHEMA_VALIDATOR_NAME = "EnapoMeasurementsRepositoryValidator";
12
+ EnapoMeasurementsModel.attributeModel = {
13
+ eic: {
14
+ type: sequelize_1.DataTypes.STRING(50),
15
+ allowNull: false,
16
+ primaryKey: true,
17
+ },
18
+ value: {
19
+ type: sequelize_1.DataTypes.DECIMAL(30, 15),
20
+ allowNull: false,
21
+ },
22
+ timestamp: {
23
+ type: sequelize_1.DataTypes.DATE,
24
+ allowNull: false,
25
+ primaryKey: true,
26
+ },
27
+ var: {
28
+ type: sequelize_1.DataTypes.STRING(255),
29
+ allowNull: false,
30
+ primaryKey: true,
31
+ },
32
+ source: {
33
+ type: sequelize_1.DataTypes.STRING(20),
34
+ allowNull: false,
35
+ },
36
+ place_id: {
37
+ type: sequelize_1.DataTypes.STRING(50),
38
+ allowNull: false,
39
+ primaryKey: true,
40
+ },
41
+ device_serial_number: {
42
+ type: sequelize_1.DataTypes.STRING(50),
43
+ allowNull: false,
44
+ },
45
+ };
46
+ EnapoMeasurementsModel.jsonSchema = {
47
+ type: "array",
48
+ items: {
49
+ type: "object",
50
+ properties: {
51
+ eic: { type: "string" },
52
+ value: { type: "number" },
53
+ timestamp: { type: "object", required: ["toISOString"] },
54
+ var: { type: "string", enum: MeasurementConstants_1.MEASUREMENT_VARIABLES },
55
+ source: { type: "string" },
56
+ place_id: { type: "string" },
57
+ device_serial_number: { type: "string" },
58
+ },
59
+ required: ["eic", "value", "timestamp", "var", "source", "place_id", "device_serial_number"],
60
+ },
61
+ };
62
+ //# sourceMappingURL=EnapoMeasurementsModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnapoMeasurementsModel.js","sourceRoot":"","sources":["../../../src/schema-definitions/models/EnapoMeasurementsModel.ts"],"names":[],"mappings":";;;AACA,mEAAwF;AAExF,2EAAyE;AAEzE,MAAa,sBAAuB,SAAQ,iBAA4B;;AAAxE,wDAgEC;AA/DiB,iCAAU,GAAG,oBAAoB,CAAC;AAClC,sCAAe,GAAG,6BAA6B,CAAC;AAChD,iDAA0B,GAAG,sCAAsC,CAAC;AAUpE,qCAAc,GAAmE;IAC3F,GAAG,EAAE;QACD,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,KAAK,EAAE;QACH,IAAI,EAAE,qBAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;QAC/B,SAAS,EAAE,KAAK;KACnB;IACD,SAAS,EAAE;QACP,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,GAAG,EAAE;QACD,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3B,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,oBAAoB,EAAE;QAClB,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;KACnB;CACJ,CAAC;AAEY,iCAAU,GAA4C;IAChE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;YACxD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,4CAAqB,EAAE;YACpD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3C;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,sBAAsB,CAAC;KAC/F;CACJ,CAAC"}
@@ -4,6 +4,7 @@ exports.MEASUREMENT_TYPES = exports.MEASUREMENT_VARIABLES = void 0;
4
4
  exports.MEASUREMENT_VARIABLES = [
5
5
  "core",
6
6
  "core2",
7
+ "corediff",
7
8
  "EFwActi",
8
9
  "EFwActiVT",
9
10
  "ERvReact",
@@ -1 +1 @@
1
- {"version":3,"file":"MeasurementConstants.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/constants/MeasurementConstants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG;IACjC,MAAM;IACN,OAAO;IACP,SAAS;IACT,WAAW;IACX,UAAU;IACV,UAAU;IACV,KAAK;IACL,GAAG;IACH,KAAK;IACL,IAAI;IACJ,WAAW;IACX,KAAK;IACL,IAAI;IACJ,IAAI;CACP,CAAC;AAEW,QAAA,iBAAiB,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"MeasurementConstants.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/constants/MeasurementConstants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG;IACjC,MAAM;IACN,OAAO;IACP,UAAU;IACV,SAAS;IACT,WAAW;IACX,UAAU;IACV,UAAU;IACV,KAAK;IACL,GAAG;IACH,KAAK;IACL,IAAI;IACJ,WAAW;IACX,KAAK;IACL,IAAI;IACJ,IAAI;CACP,CAAC;AAEW,QAAA,iBAAiB,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface IEnapoMeasurementsDto {
2
+ eic: string;
3
+ value: number;
4
+ timestamp: Date;
5
+ var: string;
6
+ source: string;
7
+ place_id: string;
8
+ device_serial_number: string;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IEnapoMeasurmentsDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEnapoMeasurmentsDto.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.ts"],"names":[],"mappings":""}
@@ -2,7 +2,13 @@
2
2
 
3
3
  ## Záměr
4
4
 
5
- Modul slouží k ukládání dat o spotřebě energií v budovách a jednotlivých bytech a prostorách pro jejich nájemnce
5
+ Modul slouží k ukládání dat o spotřebě energií v budovách a jednotlivých bytech a prostorách pro jejich nájemnce.
6
+
7
+ ### ENAPO
8
+
9
+ V roce 2025 byl k modulu přidán projekt ENAPO (energetický nástroj Prahy a organizací).
10
+ ![alt text](Energetika-Stránka-5-Stránka-3.drawio.png)
11
+ https://gitlab.com/operator-ict/golemio/projekty/energetika/p0262.prevzeti-energeticke-databaze/-/issues/66
6
12
 
7
13
  ## Vstupní data
8
14
 
@@ -16,17 +22,16 @@ Modul slouží k ukládání dat o spotřebě energií v budovách a jednotlivý
16
22
  #### _POST /pre_
17
23
 
18
24
  - PRE posílá data na Input Gateway v JSON formátu (POST na /pre).
19
- - Očekávaný [formát dat](../src/schema-definitions/datasources/interfaces/IPreJsonInput.ts)
20
- - Na IG chodí větší soubory (např. 20M). Proto se na IG rozdělí podle měřidel a vyříznou se jen data, co zpracováváme.
25
+ - Očekávaný [formát dat](../src/schema-definitions/datasources/interfaces/IPreJsonInput.ts)
26
+ - Na IG chodí větší soubory (např. 20M). Proto se na IG rozdělí podle měřidel a vyříznou se jen data, co zpracováváme.
21
27
  Dál to postupuje na IE přes rabbit do [ProcessPreEanMeasurementsTask](../src/integration-engine/commodity-providers/workers/tasks/ProcessPreEanMeasurementsTask.ts).
22
28
 
23
29
  #### _POST /pre/csv_
24
30
 
25
31
  - Endpoint pro příjem historických dat PRE v CSV formátu (POST na /pre/csv).
26
- - Očekávaný [formát dat](../src/schema-definitions/datasources/interfaces/IPreCsvInput.ts)
27
- - V IG se CSV převede na stejný formát, jako /pre používá endpoint a dál na IE postupuje stejně.
28
- Tj. přes rabbit do [ProcessPreEanMeasurementsTask](../src/integration-engine/commodity-providers/workers/tasks/ProcessPreEanMeasurementsTask.ts).
29
-
32
+ - Očekávaný [formát dat](../src/schema-definitions/datasources/interfaces/IPreCsvInput.ts)
33
+ - V IG se CSV převede na stejný formát, jako /pre používá endpoint a dál na IE postupuje stejně.
34
+ Tj. přes rabbit do [ProcessPreEanMeasurementsTask](../src/integration-engine/commodity-providers/workers/tasks/ProcessPreEanMeasurementsTask.ts).
30
35
 
31
36
  ### Data aktivně stahujeme
32
37
 
@@ -350,8 +355,8 @@ Task aktualizuje lookup tabulku pro limitaci přístupu k output API.
350
355
  - žádné
351
356
  - datové zdroje
352
357
  - blob storage
353
- - rabín: https://rabingolemio.blob.core.windows.net/rabin-energetics/access_configuration.json
354
- - golem: https://golemgolemio.blob.core.windows.net/golem-energetics/access_configuration.json
358
+ - rabín: https://rabingolemio.blob.core.windows.net/rabin-energetics/access_configuration.json
359
+ - golem: https://golemgolemio.blob.core.windows.net/golem-energetics/access_configuration.json
355
360
  - transformace
356
361
  - není
357
362
  - data modely
@@ -403,6 +408,28 @@ Metoda sbírá historická data
403
408
  - VpalacTypeMeasuringEquipmentModel `vpalac_type_measuring_equipment`
404
409
  - VpalacUnitsModel `vpalac_units`
405
410
 
411
+ ### _EnapoWorker_
412
+
413
+ Worker se stará o stahování dat (odečty, měřidla a počítadla) z datového zdroje PPAS pro projekt ENAPO.
414
+
415
+ #### _task: EnapoPpasTask_
416
+
417
+ Metoda sbírá data o spotřebách od poskytovatele komodit - PPAS (Pražská plynárenská).
418
+
419
+ - vstupní rabbitmq fronta
420
+ - název: dataplatform.enapoenergetics.fetchPpasMeasurements
421
+ - TTL: 1 hodina
422
+ - parametry: `{ providerType, dateFrom?, dateTo?, targetDays? }`
423
+ - validační schéma: [PpasMeasurementsSchema](../src/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.ts)
424
+ - závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
425
+ - žádné
426
+ - datové zdroje
427
+ - PPAS (Pražská plynárenská) InternetAVE API
428
+ - transformace
429
+ - [PPasMeasurementTransformation](../src/integration-engine/enapo/transformations/PPasMeasurementTransformation.ts)
430
+ - data modely
431
+ - [EnapoMeasurementsModel](../src/schema-definitions/models/EnapoMeasurementsModel.ts) tabulka `enapo_measurements`
432
+
406
433
  ## Uložení dat
407
434
 
408
435
  - typ databáze
@@ -426,8 +453,8 @@ Metoda sbírá historická data
426
453
  - rabin: https://rabin.golemio.cz/v2/docs/openapi/
427
454
  - golem: https://api.golemio.cz/v2/docs/openapi/
428
455
  - přístup je řízen pomocí interního parametru `accessLimit`, který musí být vždy nastaven a omezen z permission proxy
429
- - při obdržení dotazu na API se stáhnou povolené organizace z tabulky `access_limit` a omezí se podle toho dotazy do databáze
430
- - pokud je `accessLimit` nastaven na `admin`, tak se vždy dotazuje na všechny organizace
456
+ - při obdržení dotazu na API se stáhnou povolené organizace z tabulky `access_limit` a omezí se podle toho dotazy do databáze
457
+ - pokud je `accessLimit` nastaven na `admin`, tak se vždy dotazuje na všechny organizace
431
458
 
432
459
  ### API
433
460
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/energetics",
3
- "version": "1.4.12-rc.1866109709",
3
+ "version": "1.4.12-rc.1964798350",
4
4
  "description": "Golemio Energetics Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,4 +0,0 @@
1
- import { IMeasurementDto } from "../../../schema-definitions/models/interfaces/IMeasurementDto";
2
- export declare class MeasurementsDataNormalizer {
3
- static filter(data: IMeasurementDto[]): IMeasurementDto[];
4
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MeasurementsDataNormalizer.js","sourceRoot":"","sources":["../../../../src/integration-engine/commodity-providers/helper/MeasurementsDataNormalizer.ts"],"names":[],"mappings":";;;AAEA,yGAAyG;AACzG,MAAa,0BAA0B;IAC5B,MAAM,CAAC,MAAM,CAAC,IAAuB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;IACvG,CAAC;CACJ;AAJD,gEAIC"}