@things-factory/kpi 9.0.13 → 9.0.15
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/client/pages/kpi/kpi-grade-editor.ts +294 -0
- package/client/pages/kpi/kpi-list-page.ts +69 -1
- package/client/pages/kpi/kpi-overview.ts +5 -11
- package/client/pages/kpi-dashboard/kpi-dashboard.ts +43 -15
- package/client/pages/kpi-dashboard/kpi-performance-summary.ts +17 -10
- package/client/pages/kpi-value/kpi-value-manual-entry-form.ts +1 -0
- package/client/route.ts +0 -4
- package/dist-client/pages/kpi/kpi-grade-editor.d.ts +35 -0
- package/dist-client/pages/kpi/kpi-grade-editor.js +278 -0
- package/dist-client/pages/kpi/kpi-grade-editor.js.map +1 -0
- package/dist-client/pages/kpi/kpi-list-page.d.ts +4 -0
- package/dist-client/pages/kpi/kpi-list-page.js +64 -1
- package/dist-client/pages/kpi/kpi-list-page.js.map +1 -1
- package/dist-client/pages/kpi/kpi-overview.js +3 -11
- package/dist-client/pages/kpi/kpi-overview.js.map +1 -1
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +44 -12
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -1
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js +17 -10
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js.map +1 -1
- package/dist-client/pages/kpi-value/kpi-value-manual-entry-form.js +1 -0
- package/dist-client/pages/kpi-value/kpi-value-manual-entry-form.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +0 -3
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/index.d.ts +0 -1
- package/dist-server/index.js +0 -1
- package/dist-server/index.js.map +1 -1
- package/dist-server/service/index.d.ts +2 -4
- package/dist-server/service/index.js +0 -5
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/kpi/aggregate-kpi.js +4 -0
- package/dist-server/service/kpi/aggregate-kpi.js.map +1 -1
- package/dist-server/service/kpi/kpi-grade.types.d.ts +21 -0
- package/dist-server/service/kpi/kpi-grade.types.js +3 -0
- package/dist-server/service/kpi/kpi-grade.types.js.map +1 -0
- package/dist-server/service/kpi/kpi-history.d.ts +2 -0
- package/dist-server/service/kpi/kpi-history.js +8 -0
- package/dist-server/service/kpi/kpi-history.js.map +1 -1
- package/dist-server/service/kpi/kpi-query.d.ts +0 -2
- package/dist-server/service/kpi/kpi-query.js +0 -11
- package/dist-server/service/kpi/kpi-query.js.map +1 -1
- package/dist-server/service/kpi/kpi-type.d.ts +3 -0
- package/dist-server/service/kpi/kpi-type.js +14 -0
- package/dist-server/service/kpi/kpi-type.js.map +1 -1
- package/dist-server/service/kpi/kpi.d.ts +2 -2
- package/dist-server/service/kpi/kpi.js +5 -3
- package/dist-server/service/kpi/kpi.js.map +1 -1
- package/dist-server/service/kpi-alert/kpi-alert-query.js +13 -13
- package/dist-server/service/kpi-alert/kpi-alert-query.js.map +1 -1
- package/dist-server/service/kpi-category/kpi-category-type.d.ts +1 -0
- package/dist-server/service/kpi-category/kpi-category-type.js +5 -1
- package/dist-server/service/kpi-category/kpi-category-type.js.map +1 -1
- package/dist-server/service/kpi-value/kpi-value-grade.service.d.ts +34 -0
- package/dist-server/service/kpi-value/kpi-value-grade.service.js +117 -0
- package/dist-server/service/kpi-value/kpi-value-grade.service.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value-mutation.d.ts +1 -0
- package/dist-server/service/kpi-value/kpi-value-mutation.js +15 -0
- package/dist-server/service/kpi-value/kpi-value-mutation.js.map +1 -1
- package/dist-server/service/kpi-value/kpi-value-query.d.ts +2 -0
- package/dist-server/service/kpi-value/kpi-value-query.js +12 -0
- package/dist-server/service/kpi-value/kpi-value-query.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/server/index.ts +0 -1
- package/server/service/index.ts +0 -5
- package/server/service/kpi/aggregate-kpi.ts +6 -0
- package/server/service/kpi/kpi-grade.types.ts +27 -0
- package/server/service/kpi/kpi-history.ts +9 -1
- package/server/service/kpi/kpi-query.ts +0 -6
- package/server/service/kpi/kpi-type.ts +13 -0
- package/server/service/kpi/kpi.ts +8 -4
- package/server/service/kpi-alert/kpi-alert-query.ts +13 -14
- package/server/service/kpi-category/kpi-category-type.ts +4 -1
- package/server/service/kpi-value/kpi-value-grade.service.ts +127 -0
- package/server/service/kpi-value/kpi-value-mutation.ts +9 -0
- package/server/service/kpi-value/kpi-value-query.ts +7 -0
- package/things-factory.config.js +0 -1
- package/client/pages/kpi-grade/kpi-grade-importer.ts +0 -90
- package/client/pages/kpi-grade/kpi-grade-list-page.ts +0 -405
- package/dist-client/pages/kpi-grade/kpi-grade-importer.d.ts +0 -23
- package/dist-client/pages/kpi-grade/kpi-grade-importer.js +0 -92
- package/dist-client/pages/kpi-grade/kpi-grade-importer.js.map +0 -1
- package/dist-client/pages/kpi-grade/kpi-grade-list-page.d.ts +0 -66
- package/dist-client/pages/kpi-grade/kpi-grade-list-page.js +0 -387
- package/dist-client/pages/kpi-grade/kpi-grade-list-page.js.map +0 -1
- package/dist-server/migrations/1752188906708-SeedKpiCategory.d.ts +0 -5
- package/dist-server/migrations/1752188906708-SeedKpiCategory.js +0 -56
- package/dist-server/migrations/1752188906708-SeedKpiCategory.js.map +0 -1
- package/dist-server/migrations/1752190849681-SeedKpi.d.ts +0 -5
- package/dist-server/migrations/1752190849681-SeedKpi.js +0 -107
- package/dist-server/migrations/1752190849681-SeedKpi.js.map +0 -1
- package/dist-server/migrations/1752191090459-SeedKpiGrade.d.ts +0 -5
- package/dist-server/migrations/1752191090459-SeedKpiGrade.js +0 -271
- package/dist-server/migrations/1752191090459-SeedKpiGrade.js.map +0 -1
- package/dist-server/migrations/index.d.ts +0 -1
- package/dist-server/migrations/index.js +0 -12
- package/dist-server/migrations/index.js.map +0 -1
- package/dist-server/service/kpi-grade/index.d.ts +0 -6
- package/dist-server/service/kpi-grade/index.js +0 -10
- package/dist-server/service/kpi-grade/index.js.map +0 -1
- package/dist-server/service/kpi-grade/kpi-grade-mutation.d.ts +0 -10
- package/dist-server/service/kpi-grade/kpi-grade-mutation.js +0 -151
- package/dist-server/service/kpi-grade/kpi-grade-mutation.js.map +0 -1
- package/dist-server/service/kpi-grade/kpi-grade-query.d.ts +0 -13
- package/dist-server/service/kpi-grade/kpi-grade-query.js +0 -92
- package/dist-server/service/kpi-grade/kpi-grade-query.js.map +0 -1
- package/dist-server/service/kpi-grade/kpi-grade-type.d.ts +0 -29
- package/dist-server/service/kpi-grade/kpi-grade-type.js +0 -113
- package/dist-server/service/kpi-grade/kpi-grade-type.js.map +0 -1
- package/dist-server/service/kpi-grade/kpi-grade.d.ts +0 -24
- package/dist-server/service/kpi-grade/kpi-grade.js +0 -117
- package/dist-server/service/kpi-grade/kpi-grade.js.map +0 -1
- package/server/migrations/1752188906708-SeedKpiCategory.ts +0 -61
- package/server/migrations/1752190849681-SeedKpi.ts +0 -112
- package/server/migrations/1752191090459-SeedKpiGrade.ts +0 -270
- package/server/migrations/index.ts +0 -9
- package/server/service/kpi-grade/index.ts +0 -7
- package/server/service/kpi-grade/kpi-grade-mutation.ts +0 -146
- package/server/service/kpi-grade/kpi-grade-query.ts +0 -58
- package/server/service/kpi-grade/kpi-grade-type.ts +0 -82
- package/server/service/kpi-grade/kpi-grade.ts +0 -101
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-grade-query.js","sourceRoot":"","sources":["../../../server/service/kpi-grade/kpi-grade-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { KpiGrade } from './kpi-grade'\nimport { KpiGradeList } from './kpi-grade-type'\nimport { Kpi } from '../kpi/kpi'\n\n@Resolver(KpiGrade)\nexport class KpiGradeQuery {\n @Query(returns => KpiGrade!, { nullable: true, description: 'Fetch a single KPI grade by its unique identifier.' })\n async kpiGrade(\n @Arg('id', { description: 'Unique identifier of the KPI grade to fetch.' }) id: string,\n @Ctx() context: ResolverContext\n ): Promise<KpiGrade> {\n const { domain } = context.state\n\n return await getRepository(KpiGrade).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => KpiGradeList, { description: 'To fetch multiple KpiGrades' })\n async kpiGrades(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<KpiGradeList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(KpiGrade),\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() kpiGrade: KpiGrade): Promise<Domain> {\n return kpiGrade.domainId && (await getRepository(Domain).findOneBy({ id: kpiGrade.domainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() kpiGrade: KpiGrade): Promise<User> {\n return kpiGrade.updaterId && (await getRepository(User).findOneBy({ id: kpiGrade.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() kpiGrade: KpiGrade): Promise<User> {\n return kpiGrade.creatorId && (await getRepository(User).findOneBy({ id: kpiGrade.creatorId }))\n }\n\n @FieldResolver(type => Kpi, { nullable: true })\n async kpi(@Root() kpiGrade: KpiGrade): Promise<Kpi | null> {\n if (!kpiGrade.kpiId) return null\n return await getRepository(Kpi).findOneBy({ id: kpiGrade.kpiId })\n }\n}\n"]}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { KpiGrade } from './kpi-grade';
|
|
2
|
-
export declare class NewKpiGrade {
|
|
3
|
-
name: string;
|
|
4
|
-
description?: string;
|
|
5
|
-
kpiId: string;
|
|
6
|
-
version: number;
|
|
7
|
-
minValue: number;
|
|
8
|
-
maxValue: number;
|
|
9
|
-
score?: number;
|
|
10
|
-
color?: string;
|
|
11
|
-
active?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare class KpiGradePatch {
|
|
14
|
-
id?: string;
|
|
15
|
-
name?: string;
|
|
16
|
-
description?: string;
|
|
17
|
-
kpiId?: string;
|
|
18
|
-
version?: number;
|
|
19
|
-
minValue?: number;
|
|
20
|
-
maxValue?: number;
|
|
21
|
-
score?: number;
|
|
22
|
-
color?: string;
|
|
23
|
-
active?: boolean;
|
|
24
|
-
cuFlag?: string;
|
|
25
|
-
}
|
|
26
|
-
export declare class KpiGradeList {
|
|
27
|
-
items: KpiGrade[];
|
|
28
|
-
total: number;
|
|
29
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.KpiGradeList = exports.KpiGradePatch = exports.NewKpiGrade = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const kpi_grade_1 = require("./kpi-grade");
|
|
7
|
-
let NewKpiGrade = class NewKpiGrade {
|
|
8
|
-
};
|
|
9
|
-
exports.NewKpiGrade = NewKpiGrade;
|
|
10
|
-
tslib_1.__decorate([
|
|
11
|
-
(0, type_graphql_1.Field)({ description: 'Name of the grade or section for this KPI.' }),
|
|
12
|
-
tslib_1.__metadata("design:type", String)
|
|
13
|
-
], NewKpiGrade.prototype, "name", void 0);
|
|
14
|
-
tslib_1.__decorate([
|
|
15
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Detailed description of this KPI grade.' }),
|
|
16
|
-
tslib_1.__metadata("design:type", String)
|
|
17
|
-
], NewKpiGrade.prototype, "description", void 0);
|
|
18
|
-
tslib_1.__decorate([
|
|
19
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'ID of the KPI to which this grade belongs.' }),
|
|
20
|
-
tslib_1.__metadata("design:type", String)
|
|
21
|
-
], NewKpiGrade.prototype, "kpiId", void 0);
|
|
22
|
-
tslib_1.__decorate([
|
|
23
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'Version of the KPI definition to which this grade belongs.' }),
|
|
24
|
-
tslib_1.__metadata("design:type", Number)
|
|
25
|
-
], NewKpiGrade.prototype, "version", void 0);
|
|
26
|
-
tslib_1.__decorate([
|
|
27
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'Minimum value for this grade section.' }),
|
|
28
|
-
tslib_1.__metadata("design:type", Number)
|
|
29
|
-
], NewKpiGrade.prototype, "minValue", void 0);
|
|
30
|
-
tslib_1.__decorate([
|
|
31
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'Maximum value for this grade section.' }),
|
|
32
|
-
tslib_1.__metadata("design:type", Number)
|
|
33
|
-
], NewKpiGrade.prototype, "maxValue", void 0);
|
|
34
|
-
tslib_1.__decorate([
|
|
35
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true, description: 'Score or weight for this grade (optional).' }),
|
|
36
|
-
tslib_1.__metadata("design:type", Number)
|
|
37
|
-
], NewKpiGrade.prototype, "score", void 0);
|
|
38
|
-
tslib_1.__decorate([
|
|
39
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Color code for this grade (for visualization purposes).' }),
|
|
40
|
-
tslib_1.__metadata("design:type", String)
|
|
41
|
-
], NewKpiGrade.prototype, "color", void 0);
|
|
42
|
-
tslib_1.__decorate([
|
|
43
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' }),
|
|
44
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
45
|
-
], NewKpiGrade.prototype, "active", void 0);
|
|
46
|
-
exports.NewKpiGrade = NewKpiGrade = tslib_1.__decorate([
|
|
47
|
-
(0, type_graphql_1.InputType)({ description: 'Input type for creating a new KPI grade. Used in mutations to provide grade details.' })
|
|
48
|
-
], NewKpiGrade);
|
|
49
|
-
let KpiGradePatch = class KpiGradePatch {
|
|
50
|
-
};
|
|
51
|
-
exports.KpiGradePatch = KpiGradePatch;
|
|
52
|
-
tslib_1.__decorate([
|
|
53
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { nullable: true, description: 'ID of the KPI grade to update.' }),
|
|
54
|
-
tslib_1.__metadata("design:type", String)
|
|
55
|
-
], KpiGradePatch.prototype, "id", void 0);
|
|
56
|
-
tslib_1.__decorate([
|
|
57
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Name of the grade or section for this KPI.' }),
|
|
58
|
-
tslib_1.__metadata("design:type", String)
|
|
59
|
-
], KpiGradePatch.prototype, "name", void 0);
|
|
60
|
-
tslib_1.__decorate([
|
|
61
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Detailed description of this KPI grade.' }),
|
|
62
|
-
tslib_1.__metadata("design:type", String)
|
|
63
|
-
], KpiGradePatch.prototype, "description", void 0);
|
|
64
|
-
tslib_1.__decorate([
|
|
65
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { nullable: true, description: 'ID of the KPI to which this grade belongs.' }),
|
|
66
|
-
tslib_1.__metadata("design:type", String)
|
|
67
|
-
], KpiGradePatch.prototype, "kpiId", void 0);
|
|
68
|
-
tslib_1.__decorate([
|
|
69
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true, description: 'Version of the KPI definition to which this grade belongs.' }),
|
|
70
|
-
tslib_1.__metadata("design:type", Number)
|
|
71
|
-
], KpiGradePatch.prototype, "version", void 0);
|
|
72
|
-
tslib_1.__decorate([
|
|
73
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true, description: 'Minimum value for this grade section.' }),
|
|
74
|
-
tslib_1.__metadata("design:type", Number)
|
|
75
|
-
], KpiGradePatch.prototype, "minValue", void 0);
|
|
76
|
-
tslib_1.__decorate([
|
|
77
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true, description: 'Maximum value for this grade section.' }),
|
|
78
|
-
tslib_1.__metadata("design:type", Number)
|
|
79
|
-
], KpiGradePatch.prototype, "maxValue", void 0);
|
|
80
|
-
tslib_1.__decorate([
|
|
81
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true, description: 'Score or weight for this grade (optional).' }),
|
|
82
|
-
tslib_1.__metadata("design:type", Number)
|
|
83
|
-
], KpiGradePatch.prototype, "score", void 0);
|
|
84
|
-
tslib_1.__decorate([
|
|
85
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Color code for this grade (for visualization purposes).' }),
|
|
86
|
-
tslib_1.__metadata("design:type", String)
|
|
87
|
-
], KpiGradePatch.prototype, "color", void 0);
|
|
88
|
-
tslib_1.__decorate([
|
|
89
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' }),
|
|
90
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
91
|
-
], KpiGradePatch.prototype, "active", void 0);
|
|
92
|
-
tslib_1.__decorate([
|
|
93
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Custom flag for update operations (internal use).' }),
|
|
94
|
-
tslib_1.__metadata("design:type", String)
|
|
95
|
-
], KpiGradePatch.prototype, "cuFlag", void 0);
|
|
96
|
-
exports.KpiGradePatch = KpiGradePatch = tslib_1.__decorate([
|
|
97
|
-
(0, type_graphql_1.InputType)({ description: 'Input type for updating an existing KPI grade. Used in mutations to patch grade details.' })
|
|
98
|
-
], KpiGradePatch);
|
|
99
|
-
let KpiGradeList = class KpiGradeList {
|
|
100
|
-
};
|
|
101
|
-
exports.KpiGradeList = KpiGradeList;
|
|
102
|
-
tslib_1.__decorate([
|
|
103
|
-
(0, type_graphql_1.Field)(type => [kpi_grade_1.KpiGrade]),
|
|
104
|
-
tslib_1.__metadata("design:type", Array)
|
|
105
|
-
], KpiGradeList.prototype, "items", void 0);
|
|
106
|
-
tslib_1.__decorate([
|
|
107
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
|
108
|
-
tslib_1.__metadata("design:type", Number)
|
|
109
|
-
], KpiGradeList.prototype, "total", void 0);
|
|
110
|
-
exports.KpiGradeList = KpiGradeList = tslib_1.__decorate([
|
|
111
|
-
(0, type_graphql_1.ObjectType)()
|
|
112
|
-
], KpiGradeList);
|
|
113
|
-
//# sourceMappingURL=kpi-grade-type.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-grade-type.js","sourceRoot":"","sources":["../../../server/service/kpi-grade/kpi-grade-type.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { ObjectRef, ScalarObject } from '@things-factory/shell'\n\nimport { KpiGrade } from './kpi-grade'\n\n@InputType({ description: 'Input type for creating a new KPI grade. Used in mutations to provide grade details.' })\nexport class NewKpiGrade {\n @Field({ description: 'Name of the grade or section for this KPI.' })\n name: string\n\n @Field({ nullable: true, description: 'Detailed description of this KPI grade.' })\n description?: string\n\n @Field(type => ID, { description: 'ID of the KPI to which this grade belongs.' })\n kpiId: string\n\n @Field(type => Int, { description: 'Version of the KPI definition to which this grade belongs.' })\n version: number\n\n @Field(type => Int, { description: 'Minimum value for this grade section.' })\n minValue: number\n\n @Field(type => Int, { description: 'Maximum value for this grade section.' })\n maxValue: number\n\n @Field(type => Int, { nullable: true, description: 'Score or weight for this grade (optional).' })\n score?: number\n\n @Field({ nullable: true, description: 'Color code for this grade (for visualization purposes).' })\n color?: string\n\n @Field({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' })\n active?: boolean\n}\n\n@InputType({ description: 'Input type for updating an existing KPI grade. Used in mutations to patch grade details.' })\nexport class KpiGradePatch {\n @Field(type => ID, { nullable: true, description: 'ID of the KPI grade to update.' })\n id?: string\n\n @Field({ nullable: true, description: 'Name of the grade or section for this KPI.' })\n name?: string\n\n @Field({ nullable: true, description: 'Detailed description of this KPI grade.' })\n description?: string\n\n @Field(type => ID, { nullable: true, description: 'ID of the KPI to which this grade belongs.' })\n kpiId?: string\n\n @Field(type => Int, { nullable: true, description: 'Version of the KPI definition to which this grade belongs.' })\n version?: number\n\n @Field(type => Int, { nullable: true, description: 'Minimum value for this grade section.' })\n minValue?: number\n\n @Field(type => Int, { nullable: true, description: 'Maximum value for this grade section.' })\n maxValue?: number\n\n @Field(type => Int, { nullable: true, description: 'Score or weight for this grade (optional).' })\n score?: number\n\n @Field({ nullable: true, description: 'Color code for this grade (for visualization purposes).' })\n color?: string\n\n @Field({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' })\n active?: boolean\n\n @Field({ nullable: true, description: 'Custom flag for update operations (internal use).' })\n cuFlag?: string\n}\n\n@ObjectType()\nexport class KpiGradeList {\n @Field(type => [KpiGrade])\n items: KpiGrade[]\n\n @Field(type => Int)\n total: number\n}\n"]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Domain } from '@things-factory/shell';
|
|
2
|
-
import { User } from '@things-factory/auth-base';
|
|
3
|
-
import { Kpi } from '../kpi/kpi';
|
|
4
|
-
export declare class KpiGrade {
|
|
5
|
-
readonly id: string;
|
|
6
|
-
domain?: Domain;
|
|
7
|
-
domainId?: string;
|
|
8
|
-
name?: string;
|
|
9
|
-
description?: string;
|
|
10
|
-
active?: boolean;
|
|
11
|
-
kpi: Kpi;
|
|
12
|
-
kpiId: string;
|
|
13
|
-
version: number;
|
|
14
|
-
minValue: number;
|
|
15
|
-
maxValue: number;
|
|
16
|
-
score?: number;
|
|
17
|
-
color?: string;
|
|
18
|
-
createdAt?: Date;
|
|
19
|
-
updatedAt?: Date;
|
|
20
|
-
creator?: User;
|
|
21
|
-
creatorId?: string;
|
|
22
|
-
updater?: User;
|
|
23
|
-
updaterId?: string;
|
|
24
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.KpiGrade = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const typeorm_1 = require("typeorm");
|
|
6
|
-
const type_graphql_1 = require("type-graphql");
|
|
7
|
-
const shell_1 = require("@things-factory/shell");
|
|
8
|
-
const auth_base_1 = require("@things-factory/auth-base");
|
|
9
|
-
const kpi_1 = require("../kpi/kpi");
|
|
10
|
-
let KpiGrade = class KpiGrade {
|
|
11
|
-
};
|
|
12
|
-
exports.KpiGrade = KpiGrade;
|
|
13
|
-
tslib_1.__decorate([
|
|
14
|
-
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
15
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'Unique identifier for this KPI grade.' }),
|
|
16
|
-
tslib_1.__metadata("design:type", String)
|
|
17
|
-
], KpiGrade.prototype, "id", void 0);
|
|
18
|
-
tslib_1.__decorate([
|
|
19
|
-
(0, typeorm_1.ManyToOne)(type => shell_1.Domain),
|
|
20
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Domain (tenant) to which this KPI grade belongs.' }),
|
|
21
|
-
tslib_1.__metadata("design:type", shell_1.Domain)
|
|
22
|
-
], KpiGrade.prototype, "domain", void 0);
|
|
23
|
-
tslib_1.__decorate([
|
|
24
|
-
(0, typeorm_1.RelationId)((kpiGrade) => kpiGrade.domain),
|
|
25
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'ID of the domain (tenant) for this KPI grade.' }),
|
|
26
|
-
tslib_1.__metadata("design:type", String)
|
|
27
|
-
], KpiGrade.prototype, "domainId", void 0);
|
|
28
|
-
tslib_1.__decorate([
|
|
29
|
-
(0, typeorm_1.Column)(),
|
|
30
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Name of the grade or section for this KPI.' }),
|
|
31
|
-
tslib_1.__metadata("design:type", String)
|
|
32
|
-
], KpiGrade.prototype, "name", void 0);
|
|
33
|
-
tslib_1.__decorate([
|
|
34
|
-
(0, typeorm_1.Column)({ nullable: true }),
|
|
35
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Detailed description of this KPI grade.' }),
|
|
36
|
-
tslib_1.__metadata("design:type", String)
|
|
37
|
-
], KpiGrade.prototype, "description", void 0);
|
|
38
|
-
tslib_1.__decorate([
|
|
39
|
-
(0, typeorm_1.Column)({ nullable: false, default: false }),
|
|
40
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' }),
|
|
41
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
42
|
-
], KpiGrade.prototype, "active", void 0);
|
|
43
|
-
tslib_1.__decorate([
|
|
44
|
-
(0, typeorm_1.ManyToOne)(() => kpi_1.Kpi),
|
|
45
|
-
(0, type_graphql_1.Field)(type => kpi_1.Kpi, { description: 'Reference to the KPI to which this grade belongs.' }),
|
|
46
|
-
tslib_1.__metadata("design:type", kpi_1.Kpi)
|
|
47
|
-
], KpiGrade.prototype, "kpi", void 0);
|
|
48
|
-
tslib_1.__decorate([
|
|
49
|
-
(0, typeorm_1.RelationId)((kpiGrade) => kpiGrade.kpi),
|
|
50
|
-
(0, type_graphql_1.Field)({ description: 'ID of the referenced KPI.' }),
|
|
51
|
-
tslib_1.__metadata("design:type", String)
|
|
52
|
-
], KpiGrade.prototype, "kpiId", void 0);
|
|
53
|
-
tslib_1.__decorate([
|
|
54
|
-
(0, typeorm_1.Column)('int'),
|
|
55
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'Version of the KPI definition to which this grade belongs.' }),
|
|
56
|
-
tslib_1.__metadata("design:type", Number)
|
|
57
|
-
], KpiGrade.prototype, "version", void 0);
|
|
58
|
-
tslib_1.__decorate([
|
|
59
|
-
(0, typeorm_1.Column)('float'),
|
|
60
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Float, { description: 'Minimum value for this grade section.' }),
|
|
61
|
-
tslib_1.__metadata("design:type", Number)
|
|
62
|
-
], KpiGrade.prototype, "minValue", void 0);
|
|
63
|
-
tslib_1.__decorate([
|
|
64
|
-
(0, typeorm_1.Column)('float'),
|
|
65
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Float, { description: 'Maximum value for this grade section.' }),
|
|
66
|
-
tslib_1.__metadata("design:type", Number)
|
|
67
|
-
], KpiGrade.prototype, "maxValue", void 0);
|
|
68
|
-
tslib_1.__decorate([
|
|
69
|
-
(0, typeorm_1.Column)({ nullable: true, type: 'float' }),
|
|
70
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Float, { nullable: true, description: 'Score or weight for this grade (optional).' }),
|
|
71
|
-
tslib_1.__metadata("design:type", Number)
|
|
72
|
-
], KpiGrade.prototype, "score", void 0);
|
|
73
|
-
tslib_1.__decorate([
|
|
74
|
-
(0, typeorm_1.Column)({ nullable: true }),
|
|
75
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Color code for this grade (for visualization purposes).' }),
|
|
76
|
-
tslib_1.__metadata("design:type", String)
|
|
77
|
-
], KpiGrade.prototype, "color", void 0);
|
|
78
|
-
tslib_1.__decorate([
|
|
79
|
-
(0, typeorm_1.CreateDateColumn)(),
|
|
80
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Timestamp when this KPI grade was created.' }),
|
|
81
|
-
tslib_1.__metadata("design:type", Date)
|
|
82
|
-
], KpiGrade.prototype, "createdAt", void 0);
|
|
83
|
-
tslib_1.__decorate([
|
|
84
|
-
(0, typeorm_1.UpdateDateColumn)(),
|
|
85
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'Timestamp when this KPI grade was last updated.' }),
|
|
86
|
-
tslib_1.__metadata("design:type", Date)
|
|
87
|
-
], KpiGrade.prototype, "updatedAt", void 0);
|
|
88
|
-
tslib_1.__decorate([
|
|
89
|
-
(0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
|
|
90
|
-
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'User who created this KPI grade.' }),
|
|
91
|
-
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
92
|
-
], KpiGrade.prototype, "creator", void 0);
|
|
93
|
-
tslib_1.__decorate([
|
|
94
|
-
(0, typeorm_1.RelationId)((kpiGrade) => kpiGrade.creator),
|
|
95
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'ID of the user who created this KPI grade.' }),
|
|
96
|
-
tslib_1.__metadata("design:type", String)
|
|
97
|
-
], KpiGrade.prototype, "creatorId", void 0);
|
|
98
|
-
tslib_1.__decorate([
|
|
99
|
-
(0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
|
|
100
|
-
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'User who last updated this KPI grade.' }),
|
|
101
|
-
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
102
|
-
], KpiGrade.prototype, "updater", void 0);
|
|
103
|
-
tslib_1.__decorate([
|
|
104
|
-
(0, typeorm_1.RelationId)((kpiGrade) => kpiGrade.updater),
|
|
105
|
-
(0, type_graphql_1.Field)({ nullable: true, description: 'ID of the user who last updated this KPI grade.' }),
|
|
106
|
-
tslib_1.__metadata("design:type", String)
|
|
107
|
-
], KpiGrade.prototype, "updaterId", void 0);
|
|
108
|
-
exports.KpiGrade = KpiGrade = tslib_1.__decorate([
|
|
109
|
-
(0, typeorm_1.Entity)(),
|
|
110
|
-
(0, typeorm_1.Index)('ix_kpi_grade_0', (kpiGrade) => [kpiGrade.domain, kpiGrade.kpi, kpiGrade.version, kpiGrade.name], {
|
|
111
|
-
unique: true
|
|
112
|
-
}),
|
|
113
|
-
(0, type_graphql_1.ObjectType)({
|
|
114
|
-
description: 'KPI grade entity. Represents a grade/section for a KPI version, with value range, score, color, and description.'
|
|
115
|
-
})
|
|
116
|
-
], KpiGrade);
|
|
117
|
-
//# sourceMappingURL=kpi-grade.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-grade.js","sourceRoot":"","sources":["../../../server/service/kpi-grade/kpi-grade.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, registerEnumType, Float } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Kpi } from '../kpi/kpi'\n\n@Entity()\n@Index('ix_kpi_grade_0', (kpiGrade: KpiGrade) => [kpiGrade.domain, kpiGrade.kpi, kpiGrade.version, kpiGrade.name], {\n unique: true\n})\n@ObjectType({\n description:\n 'KPI grade entity. Represents a grade/section for a KPI version, with value range, score, color, and description.'\n})\nexport class KpiGrade {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Unique identifier for this KPI grade.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field({ nullable: true, description: 'Domain (tenant) to which this KPI grade belongs.' })\n domain?: Domain\n\n @RelationId((kpiGrade: KpiGrade) => kpiGrade.domain)\n @Field({ nullable: true, description: 'ID of the domain (tenant) for this KPI grade.' })\n domainId?: string\n\n @Column()\n @Field({ nullable: true, description: 'Name of the grade or section for this KPI.' })\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Detailed description of this KPI grade.' })\n description?: string\n\n @Column({ nullable: false, default: false })\n @Field({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' })\n active?: boolean\n\n @ManyToOne(() => Kpi)\n @Field(type => Kpi, { description: 'Reference to the KPI to which this grade belongs.' })\n kpi: Kpi\n\n @RelationId((kpiGrade: KpiGrade) => kpiGrade.kpi)\n @Field({ description: 'ID of the referenced KPI.' })\n kpiId: string\n\n @Column('int')\n @Field(type => Int, { description: 'Version of the KPI definition to which this grade belongs.' })\n version: number\n\n @Column('float')\n @Field(type => Float, { description: 'Minimum value for this grade section.' })\n minValue: number\n\n @Column('float')\n @Field(type => Float, { description: 'Maximum value for this grade section.' })\n maxValue: number\n\n @Column({ nullable: true, type: 'float' })\n @Field(type => Float, { nullable: true, description: 'Score or weight for this grade (optional).' })\n score?: number\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Color code for this grade (for visualization purposes).' })\n color?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Timestamp when this KPI grade was created.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Timestamp when this KPI grade was last updated.' })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'User who created this KPI grade.' })\n creator?: User\n\n @RelationId((kpiGrade: KpiGrade) => kpiGrade.creator)\n @Field({ nullable: true, description: 'ID of the user who created this KPI grade.' })\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'User who last updated this KPI grade.' })\n updater?: User\n\n @RelationId((kpiGrade: KpiGrade) => kpiGrade.updater)\n @Field({ nullable: true, description: 'ID of the user who last updated this KPI grade.' })\n updaterId?: string\n}\n"]}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { MigrationInterface, QueryRunner } from 'typeorm'
|
|
2
|
-
import { Domain, getRepository } from '@things-factory/shell'
|
|
3
|
-
import { KpiCategory } from '../service/kpi-category/kpi-category.js'
|
|
4
|
-
|
|
5
|
-
const SEED = [
|
|
6
|
-
{
|
|
7
|
-
name: '일정성과',
|
|
8
|
-
description: '프로젝트 일정 준수 및 일정 이탈 수준 평가'
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
name: '비용성과',
|
|
12
|
-
description: '프로젝트 비용 집행 및 비용성과 수준 평가'
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
name: '품질성과',
|
|
16
|
-
description: '품질 불합격률, 품질성과 수준 등 품질 관련 성과 평가'
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
name: '안전성과',
|
|
20
|
-
description: '재해율, SL-PA 등 안전 관련 성과 평가'
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: '환경성과',
|
|
24
|
-
description: '건설폐기물 등 환경 관련 성과 평가'
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: '생산성과',
|
|
28
|
-
description: '투입인력 생산성 등 생산성 관련 성과 평가'
|
|
29
|
-
}
|
|
30
|
-
]
|
|
31
|
-
|
|
32
|
-
export class SeedKpiCategory1752188906708 implements MigrationInterface {
|
|
33
|
-
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
34
|
-
const repository = getRepository(KpiCategory)
|
|
35
|
-
const domain: Domain = await getRepository(Domain).findOneBy({
|
|
36
|
-
name: 'SYSTEM'
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
return await Promise.all(
|
|
40
|
-
SEED.map(async kpiCategory => {
|
|
41
|
-
await repository.save({
|
|
42
|
-
...kpiCategory,
|
|
43
|
-
domain
|
|
44
|
-
})
|
|
45
|
-
})
|
|
46
|
-
)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
50
|
-
const repository = getRepository(KpiCategory)
|
|
51
|
-
const domain: Domain = await getRepository(Domain).findOneBy({
|
|
52
|
-
name: 'SYSTEM'
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
return await Promise.all(
|
|
56
|
-
SEED.reverse().map(async kpiCategory => {
|
|
57
|
-
await repository.delete({ name: kpiCategory.name, domain: { id: domain.id } })
|
|
58
|
-
})
|
|
59
|
-
)
|
|
60
|
-
}
|
|
61
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { MigrationInterface, QueryRunner } from 'typeorm'
|
|
2
|
-
import { Domain, getRepository } from '@things-factory/shell'
|
|
3
|
-
import { Kpi } from '../service/kpi/kpi.js'
|
|
4
|
-
|
|
5
|
-
const SEED = [
|
|
6
|
-
{
|
|
7
|
-
name: '일정 이탈 수준',
|
|
8
|
-
description: '프로젝트 일정 이탈 수준 평가',
|
|
9
|
-
categoryName: '일정성과',
|
|
10
|
-
formula: 'Table(1~5점)',
|
|
11
|
-
scoreType: 'table',
|
|
12
|
-
dataType: 'score'
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
name: '일정성과 수준 평가',
|
|
16
|
-
description: '일정성과 종합 평가',
|
|
17
|
-
categoryName: '일정성과',
|
|
18
|
-
formula: '감리자 1~5점 척도',
|
|
19
|
-
scoreType: 'inspector',
|
|
20
|
-
dataType: 'score'
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: '비용성과 수준 평가',
|
|
24
|
-
description: '비용성과 종합 평가',
|
|
25
|
-
categoryName: '비용성과',
|
|
26
|
-
formula: '감리자 1~5점 척도',
|
|
27
|
-
scoreType: 'inspector',
|
|
28
|
-
dataType: 'score'
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
name: '품질 SL-PA 결과값',
|
|
32
|
-
description: '품질 SL-PA 결과',
|
|
33
|
-
categoryName: '품질성과',
|
|
34
|
-
formula: 'Python(1~5점)',
|
|
35
|
-
scoreType: 'python',
|
|
36
|
-
dataType: 'score'
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: '품질성과 수준 평가',
|
|
40
|
-
description: '품질성과 종합 평가',
|
|
41
|
-
categoryName: '품질성과',
|
|
42
|
-
formula: '감리자 1~5점 척도',
|
|
43
|
-
scoreType: 'inspector',
|
|
44
|
-
dataType: 'score'
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
name: '안전 SL-PA 결과값',
|
|
48
|
-
description: '안전 SL-PA 결과',
|
|
49
|
-
categoryName: '안전성과',
|
|
50
|
-
formula: 'Python(1~5점)',
|
|
51
|
-
scoreType: 'python',
|
|
52
|
-
dataType: 'score'
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: '안전성과 수준 평가',
|
|
56
|
-
description: '안전성과 종합 평가',
|
|
57
|
-
categoryName: '안전성과',
|
|
58
|
-
formula: '감리자 1~5점 척도',
|
|
59
|
-
scoreType: 'inspector',
|
|
60
|
-
dataType: 'score'
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: '환경성과 수준 평가',
|
|
64
|
-
description: '환경성과 종합 평가',
|
|
65
|
-
categoryName: '환경성과',
|
|
66
|
-
formula: '감리자 1~5점 척도',
|
|
67
|
-
scoreType: 'inspector',
|
|
68
|
-
dataType: 'score'
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
name: '생산성과 수준 평가',
|
|
72
|
-
description: '생산성과 종합 평가',
|
|
73
|
-
categoryName: '생산성과',
|
|
74
|
-
formula: '감리자 1~5점 척도',
|
|
75
|
-
scoreType: 'inspector',
|
|
76
|
-
dataType: 'score'
|
|
77
|
-
}
|
|
78
|
-
]
|
|
79
|
-
|
|
80
|
-
export class SeedKpi1752190849681 implements MigrationInterface {
|
|
81
|
-
public async up(queryRunner: QueryRunner): Promise<any> {
|
|
82
|
-
const repository = getRepository(Kpi)
|
|
83
|
-
const categoryRepository = getRepository('KpiCategory')
|
|
84
|
-
const domain: Domain = await getRepository(Domain).findOneBy({
|
|
85
|
-
name: 'SYSTEM'
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
return await Promise.all(
|
|
89
|
-
SEED.map(async kpi => {
|
|
90
|
-
const category = await categoryRepository.findOneBy({ name: kpi.categoryName, domain: { id: domain.id } })
|
|
91
|
-
await repository.save({
|
|
92
|
-
...kpi,
|
|
93
|
-
category,
|
|
94
|
-
domain
|
|
95
|
-
})
|
|
96
|
-
})
|
|
97
|
-
)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
public async down(queryRunner: QueryRunner): Promise<any> {
|
|
101
|
-
const repository = getRepository(Kpi)
|
|
102
|
-
const domain: Domain = await getRepository(Domain).findOneBy({
|
|
103
|
-
name: 'SYSTEM'
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
return await Promise.all(
|
|
107
|
-
SEED.reverse().map(async kpi => {
|
|
108
|
-
await repository.delete({ name: kpi.name, domain: { id: domain.id } })
|
|
109
|
-
})
|
|
110
|
-
)
|
|
111
|
-
}
|
|
112
|
-
}
|