@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.
- package/db/example/00_clear_test_data.sql +2 -1
- package/db/migrations/postgresql/20250626130910-enapo-measurements.js +53 -0
- package/db/migrations/postgresql/sqls/20250626130910-enapo-measurements-down.sql +1 -0
- package/db/migrations/postgresql/sqls/20250626130910-enapo-measurements-up.sql +12 -0
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/PpasAveApiDataSourceProvider.d.ts +1 -0
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/PpasAveApiDataSourceProvider.js +2 -0
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/PpasAveApiDataSourceProvider.js.map +1 -1
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper.d.ts +1 -0
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper.js.map +1 -1
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/interfaces/IAveApiDeviceDataParams.d.ts +1 -0
- package/dist/integration-engine/commodity-providers/helper/EnapoMeasurementsDataNormalizer.d.ts +5 -0
- package/dist/integration-engine/commodity-providers/helper/{MeasurementsDataNormalizer.js → EnapoMeasurementsDataNormalizer.js} +1 -1
- package/dist/integration-engine/commodity-providers/helper/EnapoMeasurementsDataNormalizer.js.map +1 -0
- package/dist/integration-engine/commodity-providers/ioc/WorkerContainerToken.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/AbstractFetchMeasurementsTask.js +2 -2
- package/dist/integration-engine/commodity-providers/workers/tasks/AbstractFetchMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/enapo/constants.d.ts +1 -0
- package/dist/integration-engine/enapo/constants.js +5 -0
- package/dist/integration-engine/enapo/constants.js.map +1 -0
- package/dist/integration-engine/enapo/helpers/IntervalGenerator.d.ts +6 -0
- package/dist/integration-engine/enapo/helpers/IntervalGenerator.js +20 -0
- package/dist/integration-engine/enapo/helpers/IntervalGenerator.js.map +1 -0
- package/dist/integration-engine/enapo/helpers/MeasurementsDataNormalizer.d.ts +5 -0
- package/dist/integration-engine/enapo/helpers/MeasurementsDataNormalizer.js +11 -0
- package/dist/integration-engine/enapo/helpers/MeasurementsDataNormalizer.js.map +1 -0
- package/dist/integration-engine/enapo/interfaces/IPPasMeasurementData.d.ts +28 -0
- package/dist/integration-engine/enapo/interfaces/IPPasMeasurementData.js +3 -0
- package/dist/integration-engine/enapo/interfaces/IPPasMeasurementData.js.map +1 -0
- package/dist/integration-engine/enapo/interfaces/IPPasPlaces.d.ts +48 -0
- package/dist/integration-engine/enapo/interfaces/IPPasPlaces.js +3 -0
- package/dist/integration-engine/enapo/interfaces/IPPasPlaces.js.map +1 -0
- package/dist/integration-engine/enapo/ioc/Di.d.ts +3 -0
- package/dist/integration-engine/enapo/ioc/Di.js +30 -0
- package/dist/integration-engine/enapo/ioc/Di.js.map +1 -0
- package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.d.ts +7 -0
- package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.js +19 -0
- package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.js.map +1 -0
- package/dist/integration-engine/enapo/repositories/EnapoMeasurementsRepository.d.ts +5 -0
- package/dist/integration-engine/enapo/repositories/EnapoMeasurementsRepository.js +32 -0
- package/dist/integration-engine/enapo/repositories/EnapoMeasurementsRepository.js.map +1 -0
- package/dist/integration-engine/enapo/transformations/PPasMeasurementTransformation.d.ts +15 -0
- package/dist/integration-engine/enapo/transformations/PPasMeasurementTransformation.js +53 -0
- package/dist/integration-engine/enapo/transformations/PPasMeasurementTransformation.js.map +1 -0
- package/dist/integration-engine/enapo/workers/EnapoWorker.d.ts +7 -0
- package/dist/integration-engine/enapo/workers/EnapoWorker.js +21 -0
- package/dist/integration-engine/enapo/workers/EnapoWorker.js.map +1 -0
- package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.d.ts +7 -0
- package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.js +3 -0
- package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.js.map +1 -0
- package/dist/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.d.ts +8 -0
- package/dist/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.js +43 -0
- package/dist/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.js.map +1 -0
- package/dist/integration-engine/enapo/workers/task/AbstractEnapoFetchMeasurementsTask.d.ts +8 -0
- package/dist/integration-engine/enapo/workers/task/AbstractEnapoFetchMeasurementsTask.js +33 -0
- package/dist/integration-engine/enapo/workers/task/AbstractEnapoFetchMeasurementsTask.js.map +1 -0
- package/dist/integration-engine/enapo/workers/task/EnapoPpasTask.d.ts +29 -0
- package/dist/integration-engine/enapo/workers/task/EnapoPpasTask.js +117 -0
- package/dist/integration-engine/enapo/workers/task/EnapoPpasTask.js.map +1 -0
- package/dist/integration-engine/index.js +7 -1
- package/dist/integration-engine/index.js.map +1 -1
- package/dist/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.js +2 -1
- package/dist/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.js.map +1 -1
- package/dist/schema-definitions/datasources/commodity-providers/interfaces/IAveApiDeviceDataDto.d.ts +1 -0
- package/dist/schema-definitions/datasources/helpers/MeasurementVariableEnum.d.ts +2 -1
- package/dist/schema-definitions/datasources/helpers/MeasurementVariableEnum.js +1 -0
- package/dist/schema-definitions/datasources/helpers/MeasurementVariableEnum.js.map +1 -1
- package/dist/schema-definitions/models/EnapoMeasurementsModel.d.ts +17 -0
- package/dist/schema-definitions/models/EnapoMeasurementsModel.js +62 -0
- package/dist/schema-definitions/models/EnapoMeasurementsModel.js.map +1 -0
- package/dist/schema-definitions/models/constants/MeasurementConstants.js +1 -0
- package/dist/schema-definitions/models/constants/MeasurementConstants.js.map +1 -1
- package/dist/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.d.ts +9 -0
- package/dist/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.js +3 -0
- package/dist/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.js.map +1 -0
- package/docs/Energetika-Str/303/241nka-5-Str/303/241nka-3.drawio.png +0 -0
- package/docs/implementation_documentation.md +38 -11
- package/package.json +1 -1
- package/dist/integration-engine/commodity-providers/helper/MeasurementsDataNormalizer.d.ts +0 -4
- package/dist/integration-engine/commodity-providers/helper/MeasurementsDataNormalizer.js.map +0 -1
package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasTaskMeasurementParams.js.map
ADDED
|
@@ -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
|
+
}
|
package/dist/integration-engine/enapo/workers/schema/EnapoPpasMeasurementsParamsValidationSchema.js
ADDED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.js
CHANGED
|
@@ -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
|
package/dist/schema-definitions/datasources/commodity-providers/AveApiDeviceDataJsonSchema.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
|
@@ -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,
|
|
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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"IEnapoMeasurmentsDto.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/interfaces/IEnapoMeasurmentsDto.ts"],"names":[],"mappings":""}
|
|
Binary file
|
|
@@ -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
|
+

|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
-
|
|
27
|
-
-
|
|
28
|
-
|
|
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
|
-
-
|
|
354
|
-
-
|
|
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
|
-
-
|
|
430
|
-
-
|
|
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
package/dist/integration-engine/commodity-providers/helper/MeasurementsDataNormalizer.js.map
DELETED
|
@@ -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"}
|