@golemio/energetics 1.12.1 → 1.12.2-dev.2727447026

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 (90) hide show
  1. package/db/example/00_clear_test_data.sql +13 -0
  2. package/db/example/06_eno.sql +25 -0
  3. package/db/example/07_enapo_om_detail.sql +131 -0
  4. package/db/migrations/postgresql/20260729100000-enapo-gid-mapping-om-detail.js +53 -0
  5. package/db/migrations/postgresql/20260730120000-enapo-om-detail-porsenna.js +53 -0
  6. package/db/migrations/postgresql/sqls/20260729100000-enapo-gid-mapping-om-detail-down.sql +3 -0
  7. package/db/migrations/postgresql/sqls/20260729100000-enapo-gid-mapping-om-detail-up.sql +179 -0
  8. package/db/migrations/postgresql/sqls/20260730120000-enapo-om-detail-porsenna-down.sql +132 -0
  9. package/db/migrations/postgresql/sqls/20260730120000-enapo-om-detail-porsenna-up.sql +287 -0
  10. package/db/scripts/ded_gid_mapping_mock_import.sql +48 -0
  11. package/dist/output-gateway/constants/Links.d.ts +1 -0
  12. package/dist/output-gateway/constants/Links.js +2 -1
  13. package/dist/output-gateway/constants/Links.js.map +1 -1
  14. package/dist/output-gateway/controllers/v2/EnoBuildingsController.d.ts +11 -0
  15. package/dist/output-gateway/controllers/v2/EnoBuildingsController.js +53 -0
  16. package/dist/output-gateway/controllers/v2/EnoBuildingsController.js.map +1 -0
  17. package/dist/output-gateway/helpers/objectMappers.d.ts +10 -0
  18. package/dist/output-gateway/helpers/objectMappers.js +37 -0
  19. package/dist/output-gateway/helpers/objectMappers.js.map +1 -0
  20. package/dist/output-gateway/index.js +8 -1
  21. package/dist/output-gateway/index.js.map +1 -1
  22. package/dist/output-gateway/ioc/Di.js +9 -1
  23. package/dist/output-gateway/ioc/Di.js.map +1 -1
  24. package/dist/output-gateway/ioc/ModuleContainerToken.d.ts +4 -0
  25. package/dist/output-gateway/ioc/ModuleContainerToken.js +4 -0
  26. package/dist/output-gateway/ioc/ModuleContainerToken.js.map +1 -1
  27. package/dist/output-gateway/models/EnoBuildingDetailViewModel.d.ts +35 -0
  28. package/dist/output-gateway/models/EnoBuildingDetailViewModel.js +43 -0
  29. package/dist/output-gateway/models/EnoBuildingDetailViewModel.js.map +1 -0
  30. package/dist/output-gateway/models/EnoConsumptionPointViewModel.d.ts +105 -0
  31. package/dist/output-gateway/models/EnoConsumptionPointViewModel.js +118 -0
  32. package/dist/output-gateway/models/EnoConsumptionPointViewModel.js.map +1 -0
  33. package/dist/output-gateway/models/EnoPorsennaDeviceViewModel.d.ts +27 -0
  34. package/dist/output-gateway/models/EnoPorsennaDeviceViewModel.js +41 -0
  35. package/dist/output-gateway/models/EnoPorsennaDeviceViewModel.js.map +1 -0
  36. package/dist/output-gateway/models/interfaces/IEnoBuildingDetailView.d.ts +30 -0
  37. package/dist/output-gateway/models/interfaces/IEnoBuildingDetailView.js +3 -0
  38. package/dist/output-gateway/models/interfaces/IEnoBuildingDetailView.js.map +1 -0
  39. package/dist/output-gateway/models/interfaces/IEnoConsumptionPointView.d.ts +104 -0
  40. package/dist/output-gateway/models/interfaces/IEnoConsumptionPointView.js +3 -0
  41. package/dist/output-gateway/models/interfaces/IEnoConsumptionPointView.js.map +1 -0
  42. package/dist/output-gateway/models/interfaces/IEnoPorsennaDeviceView.d.ts +22 -0
  43. package/dist/output-gateway/models/interfaces/IEnoPorsennaDeviceView.js +3 -0
  44. package/dist/output-gateway/models/interfaces/IEnoPorsennaDeviceView.js.map +1 -0
  45. package/dist/output-gateway/repositories/AbstractNumericParsingRepository.d.ts +12 -0
  46. package/dist/output-gateway/repositories/AbstractNumericParsingRepository.js +41 -0
  47. package/dist/output-gateway/repositories/AbstractNumericParsingRepository.js.map +1 -0
  48. package/dist/output-gateway/repositories/EnoBuildingAddressesRepository.d.ts +8 -0
  49. package/dist/output-gateway/repositories/EnoBuildingAddressesRepository.js +62 -0
  50. package/dist/output-gateway/repositories/EnoBuildingAddressesRepository.js.map +1 -0
  51. package/dist/output-gateway/repositories/EnoBuildingDetailRepository.d.ts +18 -0
  52. package/dist/output-gateway/repositories/EnoBuildingDetailRepository.js +100 -0
  53. package/dist/output-gateway/repositories/EnoBuildingDetailRepository.js.map +1 -0
  54. package/dist/output-gateway/repositories/EnoConsumptionPointsRepository.d.ts +8 -0
  55. package/dist/output-gateway/repositories/EnoConsumptionPointsRepository.js +51 -0
  56. package/dist/output-gateway/repositories/EnoConsumptionPointsRepository.js.map +1 -0
  57. package/dist/output-gateway/repositories/EnoPorsennaDevicesRepository.d.ts +8 -0
  58. package/dist/output-gateway/repositories/EnoPorsennaDevicesRepository.js +51 -0
  59. package/dist/output-gateway/repositories/EnoPorsennaDevicesRepository.js.map +1 -0
  60. package/dist/output-gateway/repositories/PorsennaConsumptionsRepository.d.ts +8 -0
  61. package/dist/output-gateway/repositories/PorsennaConsumptionsRepository.js +52 -0
  62. package/dist/output-gateway/repositories/PorsennaConsumptionsRepository.js.map +1 -0
  63. package/dist/output-gateway/repositories/PpasInvoiceChildRepository.d.ts +13 -0
  64. package/dist/output-gateway/repositories/PpasInvoiceChildRepository.js +39 -0
  65. package/dist/output-gateway/repositories/PpasInvoiceChildRepository.js.map +1 -0
  66. package/dist/output-gateway/repositories/interfaces/IEnoBuildingDetailAggregate.d.ts +22 -0
  67. package/dist/output-gateway/repositories/interfaces/IEnoBuildingDetailAggregate.js +3 -0
  68. package/dist/output-gateway/repositories/interfaces/IEnoBuildingDetailAggregate.js.map +1 -0
  69. package/dist/output-gateway/routers/interfaces/IEnoBuildingDetailResponse.d.ts +106 -0
  70. package/dist/output-gateway/routers/interfaces/IEnoBuildingDetailResponse.js +3 -0
  71. package/dist/output-gateway/routers/interfaces/IEnoBuildingDetailResponse.js.map +1 -0
  72. package/dist/output-gateway/routers/v2/V2EnoBuildingsRouter.d.ts +9 -0
  73. package/dist/output-gateway/routers/v2/V2EnoBuildingsRouter.js +40 -0
  74. package/dist/output-gateway/routers/v2/V2EnoBuildingsRouter.js.map +1 -0
  75. package/dist/output-gateway/transformations/EnoBuildingDetailTransformation.d.ts +14 -0
  76. package/dist/output-gateway/transformations/EnoBuildingDetailTransformation.js +149 -0
  77. package/dist/output-gateway/transformations/EnoBuildingDetailTransformation.js.map +1 -0
  78. package/dist/schema-definitions/models/enapo/EnapoGidMappingModel.d.ts +17 -0
  79. package/dist/schema-definitions/models/enapo/EnapoGidMappingModel.js +63 -0
  80. package/dist/schema-definitions/models/enapo/EnapoGidMappingModel.js.map +1 -0
  81. package/dist/schema-definitions/models/enapo/interfaces/IEnapoGidMapping.d.ts +11 -0
  82. package/dist/schema-definitions/models/enapo/interfaces/IEnapoGidMapping.js +3 -0
  83. package/dist/schema-definitions/models/enapo/interfaces/IEnapoGidMapping.js.map +1 -0
  84. package/dist/schema-definitions/models/eno/AddressModel.d.ts +1 -1
  85. package/dist/schema-definitions/models/eno/AddressModel.js +1 -1
  86. package/dist/schema-definitions/models/eno/AddressModel.js.map +1 -1
  87. package/dist/schema-definitions/models/eno/interfaces/IAddress.d.ts +1 -1
  88. package/docs/implementation_documentation.md +41 -2
  89. package/docs/openapi-output.yaml +260 -1
  90. package/package.json +1 -1
@@ -0,0 +1,40 @@
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.V2EnoBuildingsRouter = void 0;
13
+ const Links_1 = require("../../constants/Links");
14
+ const RouteVersion_1 = require("../../constants/RouteVersion");
15
+ const Di_1 = require("../../ioc/Di");
16
+ const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
17
+ const AbstractRouter_1 = require("@golemio/core/dist/helpers/routing/AbstractRouter");
18
+ const Validation_1 = require("@golemio/core/dist/output-gateway/Validation");
19
+ const ioc_1 = require("@golemio/core/dist/output-gateway/ioc");
20
+ const express_validator_1 = require("@golemio/core/dist/shared/express-validator");
21
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
22
+ let V2EnoBuildingsRouter = class V2EnoBuildingsRouter extends AbstractRouter_1.AbstractRouter {
23
+ constructor() {
24
+ super(RouteVersion_1.RouteVersion.v2, Links_1.DED_BUILDING_PATH);
25
+ this.maxAge = 6 * 60 * 60; // 6 hours
26
+ this.staleWhileRevalidate = 60; // 1 minute
27
+ this.controller = Di_1.OGEnergeticsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.EnoBuildingsController);
28
+ this.cacheHeaderMiddleware = Di_1.OGEnergeticsContainer.resolve(ioc_1.ContainerToken.CacheHeaderMiddleware);
29
+ this.initRoutes();
30
+ }
31
+ initRoutes() {
32
+ this.router.get("/:gid", (0, express_validator_1.param)("gid").exists().isString().not().isArray(), Validation_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(this.maxAge, this.staleWhileRevalidate), this.controller.getOne);
33
+ }
34
+ };
35
+ exports.V2EnoBuildingsRouter = V2EnoBuildingsRouter;
36
+ exports.V2EnoBuildingsRouter = V2EnoBuildingsRouter = __decorate([
37
+ (0, tsyringe_1.injectable)(),
38
+ __metadata("design:paramtypes", [])
39
+ ], V2EnoBuildingsRouter);
40
+ //# sourceMappingURL=V2EnoBuildingsRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V2EnoBuildingsRouter.js","sourceRoot":"","sources":["../../../../src/output-gateway/routers/v2/V2EnoBuildingsRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAwD;AACxD,+DAA0D;AAE1D,qCAAmD;AACnD,yEAAoE;AACpE,sFAAmF;AAEnF,6EAA2E;AAC3E,+DAAuE;AACvE,mFAAoE;AACpE,iEAAgE;AAGzD,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,+BAAc;IAMpD;QACI,KAAK,CAAC,2BAAY,CAAC,EAAE,EAAE,yBAAiB,CAAC,CAAC;QAJtC,WAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU;QAChC,yBAAoB,GAAG,EAAE,CAAC,CAAC,WAAW;QAI1C,IAAI,CAAC,UAAU,GAAG,0BAAqB,CAAC,OAAO,CAAyB,2CAAoB,CAAC,sBAAsB,CAAC,CAAC;QACrH,IAAI,CAAC,qBAAqB,GAAG,0BAAqB,CAAC,OAAO,CAAwB,oBAAc,CAAC,qBAAqB,CAAC,CAAC;QACxH,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAES,UAAU;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,OAAO,EACP,IAAA,yBAAK,EAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAChD,wBAAW,EACX,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAChF,IAAI,CAAC,UAAU,CAAC,MAAM,CACzB,CAAC;IACN,CAAC;CACJ,CAAA;AAtBY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,qBAAU,GAAE;;GACA,oBAAoB,CAsBhC"}
@@ -0,0 +1,14 @@
1
+ import { IEnoBuildingDetailAggregate } from "../repositories/interfaces/IEnoBuildingDetailAggregate";
2
+ import { IEnoBuildingDetailResponse } from "../routers/interfaces/IEnoBuildingDetailResponse";
3
+ import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
4
+ export declare class EnoBuildingDetailTransformation extends AbstractTransformation<IEnoBuildingDetailAggregate, IEnoBuildingDetailResponse> {
5
+ name: string;
6
+ protected transformInternal: (element: IEnoBuildingDetailAggregate) => IEnoBuildingDetailResponse;
7
+ private transformPoint;
8
+ private transformElectricity;
9
+ private transformGas;
10
+ private buildPorsennaBlock;
11
+ private transformEnergyManagement;
12
+ private resolveAddress;
13
+ private composeAddress;
14
+ }
@@ -0,0 +1,149 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.EnoBuildingDetailTransformation = void 0;
10
+ const objectMappers_1 = require("../helpers/objectMappers");
11
+ const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
12
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
13
+ let EnoBuildingDetailTransformation = class EnoBuildingDetailTransformation extends AbstractTransformation_1.AbstractTransformation {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.name = "EnoBuildingDetailTransformation";
17
+ this.transformInternal = (element) => {
18
+ return {
19
+ gid: element.gid,
20
+ building: element.building === null ? null : (0, objectMappers_1.omitKeys)(element.building, ["gid"]),
21
+ addresses: element.addresses.map((address) => ({
22
+ popis: address.popis ?? null,
23
+ hlavni: address.hlavni ?? null,
24
+ poradi: address.poradi,
25
+ })),
26
+ energy_management: this.transformEnergyManagement(element),
27
+ consumption_points: element.points.map((point) => this.transformPoint(point, element)),
28
+ };
29
+ };
30
+ this.transformPoint = (point, aggregate) => {
31
+ const porsenna = this.buildPorsennaBlock(point, aggregate);
32
+ return {
33
+ place_id: point.place_id,
34
+ id_type: point.id_type,
35
+ commodity: point.commodity,
36
+ is_first_gid: point.is_first_gid,
37
+ is_active: point.is_active,
38
+ link_source: point.link_source,
39
+ valid_from: point.valid_from,
40
+ valid_to: point.valid_to,
41
+ address: this.resolveAddress(point),
42
+ ...(point.commodity === "electricity" ? { electricity: this.transformElectricity(point, porsenna) } : {}),
43
+ ...(point.commodity === "gas" ? { gas: this.transformGas(point, aggregate, porsenna) } : {}),
44
+ ...(point.commodity === "heat" ? { heat: { porsenna } } : {}),
45
+ ...(point.commodity === "water" ? { water: { porsenna } } : {}),
46
+ };
47
+ };
48
+ this.transformElectricity = (point, porsenna) => {
49
+ return {
50
+ metadata: point.md_year === null ? null : (0, objectMappers_1.stripPrefix)(point, "md_"),
51
+ ...(porsenna === null ? {} : { porsenna }),
52
+ };
53
+ };
54
+ this.transformGas = (point, aggregate, porsenna) => {
55
+ return {
56
+ distribution: point.di_id === null
57
+ ? null
58
+ : {
59
+ invoice: (0, objectMappers_1.stripPrefix)(point, "di_"),
60
+ devices: aggregate.distributionDevices
61
+ .filter((device) => device.invoice_id === point.di_id)
62
+ .map((device) => (0, objectMappers_1.omitKeys)(device, ["invoice_id"])),
63
+ prices: aggregate.distributionPrices
64
+ .filter((price) => price.invoice_id === point.di_id)
65
+ .map((price) => (0, objectMappers_1.omitKeys)(price, ["invoice_id", "customer_id"])),
66
+ },
67
+ commercial: point.ci_id === null
68
+ ? null
69
+ : {
70
+ invoice: (0, objectMappers_1.stripPrefix)(point, "ci_"),
71
+ installation: (0, objectMappers_1.omitKeys)((0, objectMappers_1.stripPrefix)(point, "cii_"), ["place_id"]),
72
+ devices: aggregate.commercialDevices
73
+ .filter((device) => device.invoice_id === point.ci_id && device.place_id === point.cii_place_id)
74
+ .map((device) => (0, objectMappers_1.omitKeys)(device, ["invoice_id", "place_id"])),
75
+ prices: aggregate.commercialPrices
76
+ .filter((price) => price.invoice_id === point.ci_id && price.place_id === point.cii_place_id)
77
+ .map((price) => (0, objectMappers_1.omitKeys)(price, ["invoice_id", "customer_id", "place_id"])),
78
+ },
79
+ ...(porsenna === null ? {} : { porsenna }),
80
+ };
81
+ };
82
+ this.buildPorsennaBlock = (point, aggregate) => {
83
+ const device = aggregate.porsennaDevices.find((candidate) => candidate.identifier === point.place_id && (candidate.level === null || candidate.level === "main"));
84
+ if (device === undefined) {
85
+ return null;
86
+ }
87
+ return {
88
+ device: {
89
+ name: device.name,
90
+ type: device.type,
91
+ level: device.level,
92
+ measurement_target: device.measurement_target,
93
+ meter_number: device.meter_number,
94
+ supply_point_number: device.supply_point_number,
95
+ disabled_at: device.disabled_at,
96
+ tenant: device.source,
97
+ },
98
+ sub_devices: aggregate.porsennaDevices
99
+ .filter((candidate) => candidate.parent_device_id === device.device_id)
100
+ .map((candidate) => ({
101
+ name: candidate.name,
102
+ type: candidate.type,
103
+ meter_number: candidate.meter_number,
104
+ disabled_at: candidate.disabled_at,
105
+ })),
106
+ yearly_consumption: aggregate.porsennaConsumption
107
+ .filter((row) => row.device_id === device.device_id && row.var === "yearly")
108
+ .map((row) => ({
109
+ period: row.period,
110
+ value: row.value,
111
+ unit: row.unit,
112
+ days_covered: row.count,
113
+ })),
114
+ };
115
+ };
116
+ this.transformEnergyManagement = (aggregate) => {
117
+ const devices = aggregate.porsennaDevices;
118
+ if (devices.length === 0) {
119
+ return null;
120
+ }
121
+ const primary = devices[0];
122
+ return {
123
+ source: primary.source,
124
+ building_name: primary.building_name,
125
+ address: this.composeAddress(primary.building_street, primary.building_house_number, primary.building_street_number, primary.building_city, primary.building_postcode),
126
+ devices_total: devices.length,
127
+ devices_active: devices.filter((device) => device.disabled_at === null).length,
128
+ };
129
+ };
130
+ this.resolveAddress = (point) => {
131
+ if (point.md_address !== null) {
132
+ return point.md_address;
133
+ }
134
+ return (this.composeAddress(point.di_installations_address_street, point.di_installations_address_house_number, point.di_installations_address_house_org_number, point.di_installations_address_city, point.di_installations_address_post_code) ??
135
+ this.composeAddress(point.cii_address_street, point.cii_address_house_number, point.cii_address_house_org_number, point.cii_address_city, point.cii_address_post_code));
136
+ };
137
+ this.composeAddress = (street, houseNumber, houseOrgNumber, city, postCode) => {
138
+ const numberPart = [houseNumber, houseOrgNumber].filter((part) => part !== null && part !== "").join("/");
139
+ const streetPart = [street, numberPart].filter((part) => part !== null && part !== "").join(" ");
140
+ const parts = [streetPart, city, postCode].filter((part) => part !== null && part !== "");
141
+ return parts.length > 0 ? parts.join(", ") : null;
142
+ };
143
+ }
144
+ };
145
+ exports.EnoBuildingDetailTransformation = EnoBuildingDetailTransformation;
146
+ exports.EnoBuildingDetailTransformation = EnoBuildingDetailTransformation = __decorate([
147
+ (0, tsyringe_1.injectable)()
148
+ ], EnoBuildingDetailTransformation);
149
+ //# sourceMappingURL=EnoBuildingDetailTransformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnoBuildingDetailTransformation.js","sourceRoot":"","sources":["../../../src/output-gateway/transformations/EnoBuildingDetailTransformation.ts"],"names":[],"mappings":"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"}
@@ -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 { IEnapoGidMapping } from "./interfaces/IEnapoGidMapping";
4
+ export declare class EnapoGidMappingModel extends Model<IEnapoGidMapping> implements IEnapoGidMapping {
5
+ static TABLE_NAME: string;
6
+ static REPOSITORY_NAME: string;
7
+ place_id: string;
8
+ id_type: "ean" | "eic";
9
+ commodity: "electricity" | "gas" | "heat" | "water";
10
+ gid: string;
11
+ is_first_gid: boolean;
12
+ link_source: string;
13
+ valid_from: string | null;
14
+ valid_to: string | null;
15
+ static attributeModel: ModelAttributes<EnapoGidMappingModel, IEnapoGidMapping>;
16
+ static jsonSchema: JSONSchemaType<IEnapoGidMapping[]>;
17
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnapoGidMappingModel = void 0;
4
+ const sequelize_1 = require("@golemio/core/dist/shared/sequelize");
5
+ class EnapoGidMappingModel extends sequelize_1.Model {
6
+ }
7
+ exports.EnapoGidMappingModel = EnapoGidMappingModel;
8
+ EnapoGidMappingModel.TABLE_NAME = "enapo_gid_mapping";
9
+ EnapoGidMappingModel.REPOSITORY_NAME = "EnapoGidMappingRepository";
10
+ EnapoGidMappingModel.attributeModel = {
11
+ place_id: {
12
+ type: sequelize_1.DataTypes.STRING(50),
13
+ allowNull: false,
14
+ primaryKey: true,
15
+ },
16
+ id_type: {
17
+ type: sequelize_1.DataTypes.STRING(10),
18
+ allowNull: false,
19
+ },
20
+ commodity: {
21
+ type: sequelize_1.DataTypes.STRING(20),
22
+ allowNull: false,
23
+ },
24
+ gid: {
25
+ type: sequelize_1.DataTypes.STRING,
26
+ allowNull: false,
27
+ primaryKey: true,
28
+ },
29
+ is_first_gid: {
30
+ type: sequelize_1.DataTypes.BOOLEAN,
31
+ allowNull: false,
32
+ defaultValue: false,
33
+ },
34
+ link_source: {
35
+ type: sequelize_1.DataTypes.STRING(50),
36
+ allowNull: false,
37
+ primaryKey: true,
38
+ },
39
+ valid_from: {
40
+ type: sequelize_1.DataTypes.DATEONLY,
41
+ },
42
+ valid_to: {
43
+ type: sequelize_1.DataTypes.DATEONLY,
44
+ },
45
+ };
46
+ EnapoGidMappingModel.jsonSchema = {
47
+ type: "array",
48
+ items: {
49
+ type: "object",
50
+ properties: {
51
+ place_id: { type: "string" },
52
+ id_type: { type: "string", enum: ["ean", "eic"] },
53
+ commodity: { type: "string", enum: ["electricity", "gas", "heat", "water"] },
54
+ gid: { type: "string" },
55
+ is_first_gid: { type: "boolean" },
56
+ link_source: { type: "string" },
57
+ valid_from: { oneOf: [{ type: "string" }, { type: "null", nullable: true }] },
58
+ valid_to: { oneOf: [{ type: "string" }, { type: "null", nullable: true }] },
59
+ },
60
+ required: ["place_id", "id_type", "commodity", "gid", "is_first_gid", "link_source"],
61
+ },
62
+ };
63
+ //# sourceMappingURL=EnapoGidMappingModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnapoGidMappingModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/enapo/EnapoGidMappingModel.ts"],"names":[],"mappings":";;;AACA,mEAAwF;AAGxF,MAAa,oBAAqB,SAAQ,iBAAuB;;AAAjE,oDAmEC;AAlEiB,+BAAU,GAAG,mBAAmB,CAAC;AACjC,oCAAe,GAAG,2BAA2B,CAAC;AAW9C,mCAAc,GAA4D;IACpF,QAAQ,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,OAAO,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;KACnB;IACD,SAAS,EAAE;QACP,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;KACnB;IACD,GAAG,EAAE;QACD,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,YAAY,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,KAAK;KACtB;IACD,WAAW,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACnB;IACD,UAAU,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,QAAQ;KAC3B;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,QAAQ;KAC3B;CACJ,CAAC;AAEY,+BAAU,GAAuC;IAC3D,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACjD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;YAC5E,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACjC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC7E,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;SAC9E;QACD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC;KACvF;CACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type EnapoCommodity = "electricity" | "gas" | "heat" | "water";
2
+ export interface IEnapoGidMapping {
3
+ place_id: string;
4
+ id_type: "ean" | "eic";
5
+ commodity: EnapoCommodity;
6
+ gid: string;
7
+ is_first_gid: boolean;
8
+ link_source: string;
9
+ valid_from: string | null;
10
+ valid_to: string | null;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IEnapoGidMapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEnapoGidMapping.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/models/enapo/interfaces/IEnapoGidMapping.ts"],"names":[],"mappings":""}
@@ -8,7 +8,7 @@ export declare class AddressModel extends Model<IAddress> implements IAddress {
8
8
  poradi: number;
9
9
  zdroj: string;
10
10
  id: number;
11
- popis: string;
11
+ popis: string | null;
12
12
  hlavni: boolean;
13
13
  static attributeModel: ModelAttributes<AddressModel, IAddress>;
14
14
  static jsonSchema: JSONSchemaType<IAddress[]>;
@@ -39,7 +39,7 @@ AddressModel.jsonSchema = {
39
39
  poradi: { type: "number" },
40
40
  zdroj: { type: "string" },
41
41
  id: { type: "number" },
42
- popis: { type: "string" },
42
+ popis: { oneOf: [{ type: "string" }, { type: "null", nullable: true }] },
43
43
  hlavni: { type: "boolean" },
44
44
  },
45
45
  required: ["gid", "gid_typ", "poradi", "zdroj"],
@@ -1 +1 @@
1
- {"version":3,"file":"AddressModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/eno/AddressModel.ts"],"names":[],"mappings":";;;AACA,mEAAwF;AAGxF,MAAa,YAAa,SAAQ,iBAAe;;AAAjD,oCAmDC;AAlD0B,uBAAU,GAAG,YAAY,CAAC;AAUnC,2BAAc,GAA4C;IACpE,GAAG,EAAE;QACD,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;KACvB;IACD,OAAO,EAAE;QACL,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;KACvB;IACD,MAAM,EAAE;QACJ,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,MAAM;KACzB;IACD,KAAK,EAAE;QACH,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;KACvB;IACD,EAAE,EAAE;QACA,IAAI,EAAE,qBAAS,CAAC,MAAM;KACzB;IACD,KAAK,EAAE,qBAAS,CAAC,IAAI;IACrB,MAAM,EAAE,qBAAS,CAAC,OAAO;CAC5B,CAAC;AAEY,uBAAU,GAA+B;IACnD,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9B;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;KAClD;CACJ,CAAC"}
1
+ {"version":3,"file":"AddressModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/eno/AddressModel.ts"],"names":[],"mappings":";;;AACA,mEAAwF;AAGxF,MAAa,YAAa,SAAQ,iBAAe;;AAAjD,oCAmDC;AAlD0B,uBAAU,GAAG,YAAY,CAAC;AAUnC,2BAAc,GAA4C;IACpE,GAAG,EAAE;QACD,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;KACvB;IACD,OAAO,EAAE;QACL,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;KACvB;IACD,MAAM,EAAE;QACJ,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,MAAM;KACzB;IACD,KAAK,EAAE;QACH,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;KACvB;IACD,EAAE,EAAE;QACA,IAAI,EAAE,qBAAS,CAAC,MAAM;KACzB;IACD,KAAK,EAAE,qBAAS,CAAC,IAAI;IACrB,MAAM,EAAE,qBAAS,CAAC,OAAO;CAC5B,CAAC;AAEY,uBAAU,GAA+B;IACnD,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACxE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9B;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;KAClD;CACJ,CAAC"}
@@ -4,6 +4,6 @@ export interface IAddress {
4
4
  poradi: number;
5
5
  zdroj: string;
6
6
  id: number;
7
- popis: string;
7
+ popis: string | null;
8
8
  hlavni: boolean;
9
9
  }
@@ -512,7 +512,7 @@ Task zpracovává zasílaná data o spotřebě elektřiny. Data jsou nám zasíl
512
512
  - v případě, že se u measurementů vyskytnou dvě hodnoty ve stejném čase, tak se hodnoty sečtou viz [sumDuplicates](../src/integration-engine/commodity-providers/helper/PreMeasurementFilter.ts)
513
513
  - device_serial_number is extracted from raw_data `meter_replaced` value
514
514
  - default time for meter change is set to static value `10:00` Europe/Prague time
515
- - If change occurs e.g. `"meter_replaced": "2025-06-19|54292510|55505332|2025-06-30|55505332|96933662"` measurements before 19.6.2025 will have serial number `54292510` measurements after `2025-06-19 10:00` will have serial number `55505332` and measurements after `2025-06-30 10:00` will have serial number `96933662`
515
+ - If change occurs e.g. `"meter_replaced": "2025-06-19|54292510|55505332|2025-06-30|55505332|96933662"` measurements before 19.6.2025 will have serial number `54292510` measurements after `2025-06-19 10:00` will have serial number `55505332` and measurements after `2025-06-30 10:00` will have serial number `96933662`
516
516
  - [DeviceSerialNumberExtractor](../src/integration-engine/enapo/transformations/pre/helpers/DeviceSerialNumberExtractor.ts)
517
517
  - data modely
518
518
  - [EnapoMeasurementsModel](../src/schema-definitions/models/enapo/EnapoMeasurementsModel.ts) tabulka `enapo_measurements`
@@ -811,12 +811,27 @@ Task stahuje data o měřidlech a spotřebách z Porsenna API (e-Manazer).
811
811
  - zdrojový soubor: [openapi-output.yaml](./openapi-output.yaml)
812
812
  - rabin: https://rabin.golemio.cz/v2/docs/openapi/
813
813
  - golem: https://api.golemio.cz/v2/docs/openapi/
814
- - přístup je řízen pomocí interního parametru `accessLimit`, který musí být vždy nastaven a omezen z permission proxy
814
+ - přístup je řízen pomocí interního parametru `accessLimit`, který nastavuje permission proxy (klient ho neposílá)
815
815
  - 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
816
816
  - pokud je `accessLimit` nastaven na `admin`, tak se vždy dotazuje na všechny organizace
817
+ - `accessLimit` vyžadují všechny endpointy nad původní datovou doménou OICT Energetika (tabulky `organizations*` a `consumption_energy_*`), kde jsou data vázaná na organizace; endpointy projektu ENAPO (aktuální oficiální zkratka **DeD** — v URL se používá `/ded/`, tabulky si ponechávají prefix `enapo_` / `eno_`) parametr nepoužívají vůbec — data nejsou vázaná na organizace a validace `checkErrors` (`checkExact`) parametr odmítne jako nedeklarovaný s HTTP 400
817
818
 
818
819
  ### API
819
820
 
821
+ Přehled endpointů a parametru `accessLimit`:
822
+
823
+ | Endpoint | Datová doména (tabulky) | `accessLimit` |
824
+ | --------------------------------------------- | ---------------------------------------- | ---------------------------------------------- |
825
+ | `/v2/energetics/buildings` | OICT Energetika (`consumption_energy_*`) | povinný |
826
+ | `/v2/energetics/buildings/:id` | OICT Energetika (`consumption_energy_*`) | povinný |
827
+ | `/v2/energetics/organizations` | OICT Energetika (`organizations*`) | povinný |
828
+ | `/v2/energetics/organizations/:id` | OICT Energetika (`organizations*`) | povinný |
829
+ | `/v2/energetics/devices` | OICT Energetika (`consumption_energy_*`) | povinný |
830
+ | `/v2/energetics/devices/:id` | OICT Energetika (`consumption_energy_*`) | povinný |
831
+ | `/v2/energetics/measurements` | OICT Energetika (`consumption_energy_*`) | povinný |
832
+ | `/v2/energetics/measurements/monthly-reading` | OICT Energetika (`consumption_energy_*`) | povinný |
833
+ | `/v2/energetics/ded/buildings/:gid` | DeD / ENAPO (`enapo_*`, `eno_*`) | nepoužívá se — parametr je odmítnut s HTTP 400 |
834
+
820
835
  #### _/v2/energetics/buildings_
821
836
 
822
837
  #### _/v2/energetics/buildings/:id_
@@ -848,3 +863,27 @@ Task stahuje data o měřidlech a spotřebách z Porsenna API (e-Manazer).
848
863
 
849
864
  - zdrojové tabulky
850
865
  - consumption_energy_measurements
866
+
867
+ #### _/v2/energetics/ded/buildings/:gid_
868
+
869
+ - detail budovy (ENO) s odběrnými místy (OM) a technickými parametry pro DeD
870
+ - přístup: bez `accessLimit` — endpoint čte výhradně tabulky ENAPO (`enapo_*`, `eno_*`), které nejsou vázané na organizace z domény OICT Energetika, takže se nefiltruje přes tabulku `access_limit`; parametr `accessLimit` (ani žádný jiný query parametr) endpoint nepřijímá a vrací pro něj 400
871
+ - zdrojové tabulky a pohledy
872
+ - `v_enapo_building_detail` — pohled nad `eno_budova` (dedup přes `zdroj` pomocí `DISTINCT ON (gid)`)
873
+ - `eno_adresa` — všechny adresy budovy (deduplikované podle `popis`)
874
+ - `v_enapo_building_consumption_points` — pohled nad `enapo_gid_mapping` obohacený o:
875
+ - `enapo_pre_metadata_history` — poslední měsíc metadat PRE (jen EAN / elektřina)
876
+ - `enapo_ppas_distribution_invoice` — poslední nestornovaná distribuční faktura (jen EIC / plyn, join přes `eic`)
877
+ - `enapo_ppas_commercial_invoice(_installations)` — poslední nestornovaná obchodní faktura (jen EIC / plyn, join přes `eic`)
878
+ - `UNION ALL` větev pro OM známá pouze z Porsenny (e-manažer): hlavní měřidla (`level = main`) z `enapo_porsenna_devices`, jejichž `identifier` není namapován na daný GID v `enapo_gid_mapping`; `commodity` z typu měřidla (v reálných datech existují pouze `electricity_meter` / `gasometer` / `heat_meter` / `water_meter`), `id_type` odvozen přímo z komodity (elektřina → ean, plyn → eic, teplo a voda → `om` — standardní identifikátor nemají), `link_source = 'porsenna'`, `is_active` z `disabled_at`
879
+ - `v_enapo_building_porsenna_devices` — měřidla Porsenny s budovou (`enapo_porsenna_devices` × `enapo_porsenna_buildings` přes `(source, building_id)`); slouží pro obohacení OM o blok `porsenna` (měřidlo + podružná měřidla + roční spotřeby z `enapo_porsenna_consumption`) a pro blok `energy_management` na úrovni budovy
880
+ - `enapo_ppas_distribution_invoice_device` / `_price`, `enapo_ppas_commercial_invoice_device` / `_price` — dotahované podle id faktury
881
+ - mapovací tabulka `enapo_gid_mapping`
882
+ - vlastní kontrakt modulu; aktuálně plněná mock daty (`link_source = 'mock'`)
883
+ - v budoucnu ji bude plnit synchronizační task z dbt výstupu datového týmu (`tmp.ded_gid_mapping`, `link_source = 'energobroker_kod_eno'`)
884
+ - sloupec `is_active` v pohledu je odvozený z `valid_to` (NULL nebo v budoucnu = aktivní); expirovaná mapování se vracejí s příznakem
885
+ - struktura odpovědi
886
+ - komoditně specifická data jsou vnořená pod klíči `electricity` / `gas` u každého OM; v odpovědi je pouze klíč odpovídající poli `commodity`, ostatní jsou zcela vynechány
887
+ - detail existuje, pokud pro GID máme jakákoli data — zná ho alespoň jeden zdroj (`eno_budova`, `eno_adresa`, `enapo_gid_mapping`, nebo Porsenna): pokud GID není v `eno_budova`, ale má adresy, namapovaná OM či měřidla, vrací se 200 s `building: null` a chybějící části jako `null` / prázdná pole (cca 29 % GIDů z mapování nemá záznam v ENO); 404 pouze pokud GID nezná žádný zdroj
888
+ - OM známé z obou zdrojů (mapování i Porsenna) je v odpovědi jednou — data Porsenny jsou vnořená jako blok `porsenna` v příslušném komoditním klíči; duplicitní záznamy nevznikají
889
+ - budoucí komodity (teplo, voda) se přidají jako nové klíče bez breaking change