@things-factory/kpi 1.0.0-alpha.5 → 9.0.9

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 (309) hide show
  1. package/README.md +74 -0
  2. package/client/pages/kpi/kpi-list-page.ts +97 -47
  3. package/client/pages/kpi/kpi-overview-sample.ts +260 -0
  4. package/client/pages/kpi/kpi-overview.ts +271 -0
  5. package/client/pages/kpi-category/kpi-category-list-page.ts +39 -50
  6. package/client/pages/kpi-dashboard/kpi-alert-panel.ts +114 -0
  7. package/client/pages/kpi-dashboard/kpi-dashboard.ts +285 -0
  8. package/client/pages/kpi-dashboard/kpi-grade-visualization.ts +75 -0
  9. package/client/pages/kpi-dashboard/kpi-history-viewer.ts +58 -0
  10. package/client/pages/kpi-dashboard/kpi-list-summary.ts +100 -0
  11. package/client/pages/kpi-dashboard/kpi-performance-summary.ts +124 -0
  12. package/client/pages/kpi-dashboard/kpi-value-entry.ts +78 -0
  13. package/client/pages/kpi-grade/kpi-grade-list-page.ts +58 -68
  14. package/client/pages/kpi-history/kpi-history-list-page.ts +146 -0
  15. package/client/pages/kpi-metric/kpi-metric-list-page.ts +67 -63
  16. package/client/pages/kpi-value/kpi-value-list-page.ts +73 -72
  17. package/client/pages/kpi-value/kpi-value-manual-entry-form.ts +168 -0
  18. package/client/pages/kpi-value/kpi-value-manual-entry-page.ts +173 -0
  19. package/client/route.ts +35 -0
  20. package/dist-client/pages/kpi/kpi-importer.js +16 -17
  21. package/dist-client/pages/kpi/kpi-importer.js.map +1 -1
  22. package/dist-client/pages/kpi/kpi-list-page.js +128 -68
  23. package/dist-client/pages/kpi/kpi-list-page.js.map +1 -1
  24. package/dist-client/pages/kpi/kpi-overview-sample.d.ts +36 -0
  25. package/dist-client/pages/kpi/kpi-overview-sample.js +264 -0
  26. package/dist-client/pages/kpi/kpi-overview-sample.js.map +1 -0
  27. package/dist-client/pages/kpi/kpi-overview.d.ts +14 -0
  28. package/dist-client/pages/kpi/kpi-overview.js +290 -0
  29. package/dist-client/pages/kpi/kpi-overview.js.map +1 -0
  30. package/dist-client/pages/kpi-category/kpi-category-importer.js +16 -17
  31. package/dist-client/pages/kpi-category/kpi-category-importer.js.map +1 -1
  32. package/dist-client/pages/kpi-category/kpi-category-list-page.js +70 -71
  33. package/dist-client/pages/kpi-category/kpi-category-list-page.js.map +1 -1
  34. package/dist-client/pages/kpi-dashboard/kpi-alert-panel.d.ts +18 -0
  35. package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js +128 -0
  36. package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js.map +1 -0
  37. package/dist-client/pages/kpi-dashboard/kpi-dashboard.d.ts +24 -0
  38. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +305 -0
  39. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -0
  40. package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.d.ts +12 -0
  41. package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js +82 -0
  42. package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js.map +1 -0
  43. package/dist-client/pages/kpi-dashboard/kpi-history-viewer.d.ts +11 -0
  44. package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js +65 -0
  45. package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js.map +1 -0
  46. package/dist-client/pages/kpi-dashboard/kpi-list-summary.d.ts +13 -0
  47. package/dist-client/pages/kpi-dashboard/kpi-list-summary.js +115 -0
  48. package/dist-client/pages/kpi-dashboard/kpi-list-summary.js.map +1 -0
  49. package/dist-client/pages/kpi-dashboard/kpi-performance-summary.d.ts +15 -0
  50. package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js +139 -0
  51. package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js.map +1 -0
  52. package/dist-client/pages/kpi-dashboard/kpi-value-entry.d.ts +7 -0
  53. package/dist-client/pages/kpi-dashboard/kpi-value-entry.js +86 -0
  54. package/dist-client/pages/kpi-dashboard/kpi-value-entry.js.map +1 -0
  55. package/dist-client/pages/kpi-grade/kpi-grade-importer.js +16 -17
  56. package/dist-client/pages/kpi-grade/kpi-grade-importer.js.map +1 -1
  57. package/dist-client/pages/kpi-grade/kpi-grade-list-page.js +89 -89
  58. package/dist-client/pages/kpi-grade/kpi-grade-list-page.js.map +1 -1
  59. package/dist-client/pages/kpi-history/kpi-history-list-page.d.ts +16 -0
  60. package/dist-client/pages/kpi-history/kpi-history-list-page.js +155 -0
  61. package/dist-client/pages/kpi-history/kpi-history-list-page.js.map +1 -0
  62. package/dist-client/pages/kpi-metric/kpi-metric-importer.js +16 -17
  63. package/dist-client/pages/kpi-metric/kpi-metric-importer.js.map +1 -1
  64. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js +98 -84
  65. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js.map +1 -1
  66. package/dist-client/pages/kpi-value/kpi-value-importer.js +16 -17
  67. package/dist-client/pages/kpi-value/kpi-value-importer.js.map +1 -1
  68. package/dist-client/pages/kpi-value/kpi-value-list-page.js +104 -93
  69. package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -1
  70. package/dist-client/pages/kpi-value/kpi-value-manual-entry-form.d.ts +14 -0
  71. package/dist-client/pages/kpi-value/kpi-value-manual-entry-form.js +201 -0
  72. package/dist-client/pages/kpi-value/kpi-value-manual-entry-form.js.map +1 -0
  73. package/dist-client/pages/kpi-value/kpi-value-manual-entry-page.d.ts +41 -0
  74. package/dist-client/pages/kpi-value/kpi-value-manual-entry-page.js +180 -0
  75. package/dist-client/pages/kpi-value/kpi-value-manual-entry-page.js.map +1 -0
  76. package/dist-client/route.d.ts +1 -1
  77. package/dist-client/route.js +27 -0
  78. package/dist-client/route.js.map +1 -1
  79. package/dist-client/tsconfig.tsbuildinfo +1 -1
  80. package/dist-server/index.d.ts +2 -1
  81. package/dist-server/index.js +2 -1
  82. package/dist-server/index.js.map +1 -1
  83. package/dist-server/migrations/1752188906708-SeedKpiCategory.d.ts +5 -0
  84. package/dist-server/migrations/1752188906708-SeedKpiCategory.js +56 -0
  85. package/dist-server/migrations/1752188906708-SeedKpiCategory.js.map +1 -0
  86. package/dist-server/migrations/1752190849681-SeedKpi.d.ts +5 -0
  87. package/dist-server/migrations/1752190849681-SeedKpi.js +107 -0
  88. package/dist-server/migrations/1752190849681-SeedKpi.js.map +1 -0
  89. package/dist-server/migrations/1752191090459-SeedKpiGrade.d.ts +5 -0
  90. package/dist-server/migrations/1752191090459-SeedKpiGrade.js +271 -0
  91. package/dist-server/migrations/1752191090459-SeedKpiGrade.js.map +1 -0
  92. package/dist-server/migrations/index.d.ts +1 -0
  93. package/dist-server/migrations/index.js +12 -0
  94. package/dist-server/migrations/index.js.map +1 -0
  95. package/dist-server/routes.d.ts +1 -0
  96. package/dist-server/routes.js +48 -0
  97. package/dist-server/routes.js.map +1 -1
  98. package/dist-server/service/index.d.ts +3 -4
  99. package/dist-server/service/index.js +4 -6
  100. package/dist-server/service/index.js.map +1 -1
  101. package/dist-server/service/kpi/aggregate-kpi.d.ts +8 -0
  102. package/dist-server/service/kpi/aggregate-kpi.js +88 -0
  103. package/dist-server/service/kpi/aggregate-kpi.js.map +1 -0
  104. package/dist-server/service/kpi/event-subscriber.d.ts +2 -0
  105. package/dist-server/service/kpi/event-subscriber.js +10 -0
  106. package/dist-server/service/kpi/event-subscriber.js.map +1 -1
  107. package/dist-server/service/kpi/index.d.ts +2 -1
  108. package/dist-server/service/kpi/kpi-formula.service.d.ts +24 -0
  109. package/dist-server/service/kpi/kpi-formula.service.js +64 -0
  110. package/dist-server/service/kpi/kpi-formula.service.js.map +1 -0
  111. package/dist-server/service/kpi/kpi-history.d.ts +6 -2
  112. package/dist-server/service/kpi/kpi-history.js +29 -11
  113. package/dist-server/service/kpi/kpi-history.js.map +1 -1
  114. package/dist-server/service/kpi/kpi-mutation.d.ts +2 -0
  115. package/dist-server/service/kpi/kpi-mutation.js +215 -10
  116. package/dist-server/service/kpi/kpi-mutation.js.map +1 -1
  117. package/dist-server/service/kpi/kpi-query.d.ts +10 -0
  118. package/dist-server/service/kpi/kpi-query.js +87 -3
  119. package/dist-server/service/kpi/kpi-query.js.map +1 -1
  120. package/dist-server/service/kpi/kpi-type.d.ts +14 -3
  121. package/dist-server/service/kpi/kpi-type.js +81 -18
  122. package/dist-server/service/kpi/kpi-type.js.map +1 -1
  123. package/dist-server/service/kpi/kpi.d.ts +14 -3
  124. package/dist-server/service/kpi/kpi.js +96 -19
  125. package/dist-server/service/kpi/kpi.js.map +1 -1
  126. package/dist-server/service/kpi-alert/index.d.ts +2 -0
  127. package/dist-server/service/kpi-alert/index.js +6 -0
  128. package/dist-server/service/kpi-alert/index.js.map +1 -0
  129. package/dist-server/service/kpi-alert/kpi-alert-query.d.ts +4 -0
  130. package/dist-server/service/kpi-alert/kpi-alert-query.js +71 -0
  131. package/dist-server/service/kpi-alert/kpi-alert-query.js.map +1 -0
  132. package/dist-server/service/kpi-alert/kpi-alert-type.d.ts +8 -0
  133. package/dist-server/service/kpi-alert/kpi-alert-type.js +33 -0
  134. package/dist-server/service/kpi-alert/kpi-alert-type.js.map +1 -0
  135. package/dist-server/service/kpi-category/kpi-category-mutation.d.ts +1 -1
  136. package/dist-server/service/kpi-category/kpi-category-mutation.js +36 -10
  137. package/dist-server/service/kpi-category/kpi-category-mutation.js.map +1 -1
  138. package/dist-server/service/kpi-category/kpi-category-query.d.ts +2 -0
  139. package/dist-server/service/kpi-category/kpi-category-query.js +18 -2
  140. package/dist-server/service/kpi-category/kpi-category-query.js.map +1 -1
  141. package/dist-server/service/kpi-category/kpi-category-type.d.ts +3 -5
  142. package/dist-server/service/kpi-category/kpi-category-type.js +16 -20
  143. package/dist-server/service/kpi-category/kpi-category-type.js.map +1 -1
  144. package/dist-server/service/kpi-category/kpi-category.d.ts +7 -9
  145. package/dist-server/service/kpi-category/kpi-category.js +40 -38
  146. package/dist-server/service/kpi-category/kpi-category.js.map +1 -1
  147. package/dist-server/service/kpi-grade/index.d.ts +1 -2
  148. package/dist-server/service/kpi-grade/index.js +2 -4
  149. package/dist-server/service/kpi-grade/index.js.map +1 -1
  150. package/dist-server/service/kpi-grade/kpi-grade-mutation.d.ts +1 -1
  151. package/dist-server/service/kpi-grade/kpi-grade-mutation.js +33 -10
  152. package/dist-server/service/kpi-grade/kpi-grade-mutation.js.map +1 -1
  153. package/dist-server/service/kpi-grade/kpi-grade-query.js +2 -2
  154. package/dist-server/service/kpi-grade/kpi-grade-query.js.map +1 -1
  155. package/dist-server/service/kpi-grade/kpi-grade-type.d.ts +13 -4
  156. package/dist-server/service/kpi-grade/kpi-grade-type.js +54 -18
  157. package/dist-server/service/kpi-grade/kpi-grade-type.js.map +1 -1
  158. package/dist-server/service/kpi-grade/kpi-grade.d.ts +8 -8
  159. package/dist-server/service/kpi-grade/kpi-grade.js +48 -40
  160. package/dist-server/service/kpi-grade/kpi-grade.js.map +1 -1
  161. package/dist-server/service/kpi-metric/aggregate-kpi-metric.d.ts +8 -0
  162. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js +134 -0
  163. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js.map +1 -0
  164. package/dist-server/service/kpi-metric/index.d.ts +1 -2
  165. package/dist-server/service/kpi-metric/index.js +2 -4
  166. package/dist-server/service/kpi-metric/index.js.map +1 -1
  167. package/dist-server/service/kpi-metric/kpi-metric-mutation.d.ts +1 -1
  168. package/dist-server/service/kpi-metric/kpi-metric-mutation.js +139 -13
  169. package/dist-server/service/kpi-metric/kpi-metric-mutation.js.map +1 -1
  170. package/dist-server/service/kpi-metric/kpi-metric-query.js +3 -3
  171. package/dist-server/service/kpi-metric/kpi-metric-query.js.map +1 -1
  172. package/dist-server/service/kpi-metric/kpi-metric-type.d.ts +17 -4
  173. package/dist-server/service/kpi-metric/kpi-metric-type.js +69 -11
  174. package/dist-server/service/kpi-metric/kpi-metric-type.js.map +1 -1
  175. package/dist-server/service/kpi-metric/kpi-metric.d.ts +11 -8
  176. package/dist-server/service/kpi-metric/kpi-metric.js +62 -37
  177. package/dist-server/service/kpi-metric/kpi-metric.js.map +1 -1
  178. package/dist-server/service/kpi-value/kpi-value-mutation.js +66 -11
  179. package/dist-server/service/kpi-value/kpi-value-mutation.js.map +1 -1
  180. package/dist-server/service/kpi-value/kpi-value-query.d.ts +2 -0
  181. package/dist-server/service/kpi-value/kpi-value-query.js +15 -2
  182. package/dist-server/service/kpi-value/kpi-value-query.js.map +1 -1
  183. package/dist-server/service/kpi-value/kpi-value-type.d.ts +19 -10
  184. package/dist-server/service/kpi-value/kpi-value-type.js +87 -24
  185. package/dist-server/service/kpi-value/kpi-value-type.js.map +1 -1
  186. package/dist-server/service/kpi-value/kpi-value.d.ts +15 -9
  187. package/dist-server/service/kpi-value/kpi-value.js +86 -32
  188. package/dist-server/service/kpi-value/kpi-value.js.map +1 -1
  189. package/dist-server/tsconfig.tsbuildinfo +1 -1
  190. package/implement-plan/01-entity-type-resolver.md +57 -0
  191. package/implement-plan/02-dataset-integration.md +35 -0
  192. package/implement-plan/03-kpivalue-automation.md +34 -0
  193. package/implement-plan/04-version-history.md +33 -0
  194. package/implement-plan/05-grade-visualization.md +33 -0
  195. package/implement-plan/06-graphql-frontend.md +30 -0
  196. package/implement-plan/07-test-docs.md +35 -0
  197. package/implement-plan/TODO.md +41 -0
  198. package/package.json +18 -6
  199. package/server/index.ts +2 -1
  200. package/server/migrations/1752188906708-SeedKpiCategory.ts +61 -0
  201. package/server/migrations/1752190849681-SeedKpi.ts +112 -0
  202. package/server/migrations/1752191090459-SeedKpiGrade.ts +270 -0
  203. package/server/migrations/index.ts +9 -0
  204. package/server/routes.ts +55 -0
  205. package/server/service/index.ts +4 -6
  206. package/server/service/kpi/aggregate-kpi.ts +82 -0
  207. package/server/service/kpi/event-subscriber.ts +12 -0
  208. package/server/service/kpi/kpi-formula.service.ts +63 -0
  209. package/server/service/kpi/kpi-history.ts +29 -21
  210. package/server/service/kpi/kpi-mutation.ts +194 -12
  211. package/server/service/kpi/kpi-query.ts +57 -2
  212. package/server/service/kpi/kpi-type.ts +72 -19
  213. package/server/service/kpi/kpi.ts +96 -20
  214. package/server/service/kpi-alert/index.ts +3 -0
  215. package/server/service/kpi-alert/kpi-alert-query.ts +59 -0
  216. package/server/service/kpi-alert/kpi-alert-type.ts +20 -0
  217. package/server/service/kpi-category/kpi-category-mutation.ts +17 -4
  218. package/server/service/kpi-category/kpi-category-query.ts +20 -3
  219. package/server/service/kpi-category/kpi-category-type.ts +17 -19
  220. package/server/service/kpi-category/kpi-category.ts +39 -37
  221. package/server/service/kpi-grade/index.ts +2 -4
  222. package/server/service/kpi-grade/kpi-grade-mutation.ts +13 -4
  223. package/server/service/kpi-grade/kpi-grade-query.ts +5 -2
  224. package/server/service/kpi-grade/kpi-grade-type.ts +46 -19
  225. package/server/service/kpi-grade/kpi-grade.ts +44 -38
  226. package/server/service/kpi-metric/aggregate-kpi-metric.ts +128 -0
  227. package/server/service/kpi-metric/index.ts +2 -4
  228. package/server/service/kpi-metric/kpi-metric-mutation.ts +123 -7
  229. package/server/service/kpi-metric/kpi-metric-query.ts +9 -3
  230. package/server/service/kpi-metric/kpi-metric-type.ts +56 -13
  231. package/server/service/kpi-metric/kpi-metric.ts +55 -35
  232. package/server/service/kpi-value/kpi-value-mutation.ts +52 -14
  233. package/server/service/kpi-value/kpi-value-query.ts +12 -2
  234. package/server/service/kpi-value/kpi-value-type.ts +80 -25
  235. package/server/service/kpi-value/kpi-value.ts +81 -29
  236. package/things-factory.config.js +12 -4
  237. package/translations/en.json +12 -1
  238. package/translations/ja.json +12 -1
  239. package/translations/ko.json +12 -1
  240. package/translations/ms.json +12 -1
  241. package/translations/zh.json +12 -1
  242. package/client/pages/kpe-metric/kpe-metric-importer.ts +0 -90
  243. package/client/pages/kpe-metric/kpe-metric-list-page.ts +0 -398
  244. package/client/pages/kpi-formula/kpi-formula-importer.ts +0 -90
  245. package/client/pages/kpi-formula/kpi-formula-list-page.ts +0 -398
  246. package/client/pages/metric/metric-importer.ts +0 -90
  247. package/client/pages/metric/metric-list-page.ts +0 -398
  248. package/dist-client/pages/kpe-metric/kpe-metric-importer.d.ts +0 -23
  249. package/dist-client/pages/kpe-metric/kpe-metric-importer.js +0 -93
  250. package/dist-client/pages/kpe-metric/kpe-metric-importer.js.map +0 -1
  251. package/dist-client/pages/kpe-metric/kpe-metric-list-page.d.ts +0 -66
  252. package/dist-client/pages/kpe-metric/kpe-metric-list-page.js +0 -370
  253. package/dist-client/pages/kpe-metric/kpe-metric-list-page.js.map +0 -1
  254. package/dist-client/pages/kpi-formula/kpi-formula-importer.d.ts +0 -23
  255. package/dist-client/pages/kpi-formula/kpi-formula-importer.js +0 -93
  256. package/dist-client/pages/kpi-formula/kpi-formula-importer.js.map +0 -1
  257. package/dist-client/pages/kpi-formula/kpi-formula-list-page.d.ts +0 -66
  258. package/dist-client/pages/kpi-formula/kpi-formula-list-page.js +0 -370
  259. package/dist-client/pages/kpi-formula/kpi-formula-list-page.js.map +0 -1
  260. package/dist-client/pages/metric/metric-importer.d.ts +0 -23
  261. package/dist-client/pages/metric/metric-importer.js +0 -93
  262. package/dist-client/pages/metric/metric-importer.js.map +0 -1
  263. package/dist-client/pages/metric/metric-list-page.d.ts +0 -66
  264. package/dist-client/pages/metric/metric-list-page.js +0 -370
  265. package/dist-client/pages/metric/metric-list-page.js.map +0 -1
  266. package/dist-server/service/kpi-formula/event-subscriber.d.ts +0 -7
  267. package/dist-server/service/kpi-formula/event-subscriber.js +0 -21
  268. package/dist-server/service/kpi-formula/event-subscriber.js.map +0 -1
  269. package/dist-server/service/kpi-formula/index.d.ts +0 -7
  270. package/dist-server/service/kpi-formula/index.js +0 -12
  271. package/dist-server/service/kpi-formula/index.js.map +0 -1
  272. package/dist-server/service/kpi-formula/kpi-formula-history.d.ts +0 -25
  273. package/dist-server/service/kpi-formula/kpi-formula-history.js +0 -128
  274. package/dist-server/service/kpi-formula/kpi-formula-history.js.map +0 -1
  275. package/dist-server/service/kpi-formula/kpi-formula-mutation.d.ts +0 -10
  276. package/dist-server/service/kpi-formula/kpi-formula-mutation.js +0 -128
  277. package/dist-server/service/kpi-formula/kpi-formula-mutation.js.map +0 -1
  278. package/dist-server/service/kpi-formula/kpi-formula-query.d.ts +0 -11
  279. package/dist-server/service/kpi-formula/kpi-formula-query.js +0 -79
  280. package/dist-server/service/kpi-formula/kpi-formula-query.js.map +0 -1
  281. package/dist-server/service/kpi-formula/kpi-formula-type.d.ts +0 -20
  282. package/dist-server/service/kpi-formula/kpi-formula-type.js +0 -77
  283. package/dist-server/service/kpi-formula/kpi-formula-type.js.map +0 -1
  284. package/dist-server/service/kpi-formula/kpi-formula.d.ts +0 -24
  285. package/dist-server/service/kpi-formula/kpi-formula.js +0 -109
  286. package/dist-server/service/kpi-formula/kpi-formula.js.map +0 -1
  287. package/dist-server/service/kpi-grade/event-subscriber.d.ts +0 -7
  288. package/dist-server/service/kpi-grade/event-subscriber.js +0 -21
  289. package/dist-server/service/kpi-grade/event-subscriber.js.map +0 -1
  290. package/dist-server/service/kpi-grade/kpi-grade-history.d.ts +0 -25
  291. package/dist-server/service/kpi-grade/kpi-grade-history.js +0 -128
  292. package/dist-server/service/kpi-grade/kpi-grade-history.js.map +0 -1
  293. package/dist-server/service/kpi-metric/event-subscriber.d.ts +0 -7
  294. package/dist-server/service/kpi-metric/event-subscriber.js +0 -21
  295. package/dist-server/service/kpi-metric/event-subscriber.js.map +0 -1
  296. package/dist-server/service/kpi-metric/kpi-metric-history.d.ts +0 -25
  297. package/dist-server/service/kpi-metric/kpi-metric-history.js +0 -128
  298. package/dist-server/service/kpi-metric/kpi-metric-history.js.map +0 -1
  299. package/server/service/kpi-formula/event-subscriber.ts +0 -17
  300. package/server/service/kpi-formula/index.ts +0 -9
  301. package/server/service/kpi-formula/kpi-formula-history.ts +0 -116
  302. package/server/service/kpi-formula/kpi-formula-mutation.ts +0 -137
  303. package/server/service/kpi-formula/kpi-formula-query.ts +0 -48
  304. package/server/service/kpi-formula/kpi-formula-type.ts +0 -55
  305. package/server/service/kpi-formula/kpi-formula.ts +0 -95
  306. package/server/service/kpi-grade/event-subscriber.ts +0 -17
  307. package/server/service/kpi-grade/kpi-grade-history.ts +0 -116
  308. package/server/service/kpi-metric/event-subscriber.ts +0 -17
  309. package/server/service/kpi-metric/kpi-metric-history.ts +0 -116
@@ -7,10 +7,18 @@ const typeorm_1 = require("typeorm");
7
7
  const shell_1 = require("@things-factory/shell");
8
8
  const kpi_grade_1 = require("./kpi-grade");
9
9
  const kpi_grade_type_1 = require("./kpi-grade-type");
10
+ const kpi_1 = require("../kpi/kpi");
10
11
  let KpiGradeMutation = class KpiGradeMutation {
11
- async createKpiGrade(kpiGrade, context) {
12
+ async createKpiGrade(grade, context) {
12
13
  const { domain, user, tx } = context.state;
13
- const result = await (0, shell_1.getRepository)(kpi_grade_1.KpiGrade, tx).save(Object.assign(Object.assign({}, kpiGrade), { domain, creator: user, updater: user }));
14
+ let kpi = grade.kpiId ? await (0, shell_1.getRepository)(kpi_1.Kpi).findOne({ where: { id: grade.kpiId } }) : undefined;
15
+ const result = await (0, shell_1.getRepository)(kpi_grade_1.KpiGrade, tx).save({
16
+ ...grade,
17
+ kpi,
18
+ domain,
19
+ creator: user,
20
+ updater: user
21
+ });
14
22
  return result;
15
23
  }
16
24
  async updateKpiGrade(id, patch, context) {
@@ -19,7 +27,13 @@ let KpiGradeMutation = class KpiGradeMutation {
19
27
  const kpiGrade = await repository.findOne({
20
28
  where: { domain: { id: domain.id }, id }
21
29
  });
22
- const result = await repository.save(Object.assign(Object.assign(Object.assign({}, kpiGrade), patch), { updater: user }));
30
+ let kpi = patch.kpiId ? await (0, shell_1.getRepository)(kpi_1.Kpi).findOne({ where: { id: patch.kpiId } }) : kpiGrade.kpi;
31
+ const result = await repository.save({
32
+ ...kpiGrade,
33
+ ...patch,
34
+ kpi,
35
+ updater: user
36
+ });
23
37
  return result;
24
38
  }
25
39
  async updateMultipleKpiGrade(patches, context) {
@@ -31,16 +45,25 @@ let KpiGradeMutation = class KpiGradeMutation {
31
45
  if (_createRecords.length > 0) {
32
46
  for (let i = 0; i < _createRecords.length; i++) {
33
47
  const newRecord = _createRecords[i];
34
- const result = await kpiGradeRepo.save(Object.assign(Object.assign({}, newRecord), { domain, creator: user, updater: user }));
35
- results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
48
+ const result = await kpiGradeRepo.save({
49
+ ...newRecord,
50
+ domain,
51
+ creator: user,
52
+ updater: user
53
+ });
54
+ results.push({ ...result, cuFlag: '+' });
36
55
  }
37
56
  }
38
57
  if (_updateRecords.length > 0) {
39
58
  for (let i = 0; i < _updateRecords.length; i++) {
40
59
  const updateRecord = _updateRecords[i];
41
60
  const kpiGrade = await kpiGradeRepo.findOneBy({ id: updateRecord.id });
42
- const result = await kpiGradeRepo.save(Object.assign(Object.assign(Object.assign({}, kpiGrade), updateRecord), { updater: user }));
43
- results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
61
+ const result = await kpiGradeRepo.save({
62
+ ...kpiGrade,
63
+ ...updateRecord,
64
+ updater: user
65
+ });
66
+ results.push({ ...result, cuFlag: 'M' });
44
67
  }
45
68
  }
46
69
  return results;
@@ -61,7 +84,7 @@ let KpiGradeMutation = class KpiGradeMutation {
61
84
  async importKpiGrades(kpiGrades, context) {
62
85
  const { domain, tx } = context.state;
63
86
  await Promise.all(kpiGrades.map(async (kpiGrade) => {
64
- const createdKpiGrade = await (0, shell_1.getRepository)(kpi_grade_1.KpiGrade, tx).save(Object.assign({ domain }, kpiGrade));
87
+ const createdKpiGrade = await (0, shell_1.getRepository)(kpi_grade_1.KpiGrade, tx).save({ domain, ...kpiGrade });
65
88
  }));
66
89
  return true;
67
90
  }
@@ -69,8 +92,8 @@ let KpiGradeMutation = class KpiGradeMutation {
69
92
  exports.KpiGradeMutation = KpiGradeMutation;
70
93
  tslib_1.__decorate([
71
94
  (0, type_graphql_1.Directive)('@transaction'),
72
- (0, type_graphql_1.Mutation)(returns => kpi_grade_1.KpiGrade, { description: 'To create new KpiGrade' }),
73
- tslib_1.__param(0, (0, type_graphql_1.Arg)('kpiGrade')),
95
+ (0, type_graphql_1.Mutation)(returns => kpi_grade_1.KpiGrade, { description: 'Create a new KPI grade with the provided details.' }),
96
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('grade', { description: 'Input object containing details for the new KPI grade.' })),
74
97
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
75
98
  tslib_1.__metadata("design:type", Function),
76
99
  tslib_1.__metadata("design:paramtypes", [kpi_grade_type_1.NewKpiGrade, Object]),
@@ -1 +1 @@
1
- {"version":3,"file":"kpi-grade-mutation.js","sourceRoot":"","sources":["../../../server/service/kpi-grade/kpi-grade-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { getRepository } from '@things-factory/shell'\n\nimport { KpiGrade } from './kpi-grade'\nimport { NewKpiGrade, KpiGradePatch } from './kpi-grade-type'\n\n@Resolver(KpiGrade)\nexport class KpiGradeMutation {\n @Directive('@transaction')\n @Mutation(returns => KpiGrade, { description: 'To create new KpiGrade' })\n async createKpiGrade(@Arg('kpiGrade') kpiGrade: NewKpiGrade, @Ctx() context: ResolverContext): Promise<KpiGrade> {\n const { domain, user, tx } = context.state\n\n const result = await getRepository(KpiGrade, tx).save({\n ...kpiGrade,\n domain,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => KpiGrade, { description: 'To modify KpiGrade information' })\n async updateKpiGrade(\n @Arg('id') id: string,\n @Arg('patch') patch: KpiGradePatch,\n @Ctx() context: ResolverContext\n ): Promise<KpiGrade> {\n const { domain, user, tx } = context.state\n\n const repository = getRepository(KpiGrade, tx)\n const kpiGrade = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n const result = await repository.save({\n ...kpiGrade,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => [KpiGrade], { description: \"To modify multiple KpiGrades' information\" })\n async updateMultipleKpiGrade(\n @Arg('patches', type => [KpiGradePatch]) patches: KpiGradePatch[],\n @Ctx() context: ResolverContext\n ): Promise<KpiGrade[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const kpiGradeRepo = getRepository(KpiGrade, tx)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await kpiGradeRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const kpiGrade = await kpiGradeRepo.findOneBy({ id: updateRecord.id })\n\n const result = await kpiGradeRepo.save({\n ...kpiGrade,\n ...updateRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete KpiGrade' })\n async deleteKpiGrade(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(KpiGrade, tx).delete({ domain: { id: domain.id }, id })\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple KpiGrades' })\n async deleteKpiGrades(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(KpiGrade, tx).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To import multiple KpiGrades' })\n async importKpiGrades(\n @Arg('kpiGrades', type => [KpiGradePatch]) kpiGrades: KpiGradePatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n kpiGrades.map(async (kpiGrade: KpiGradePatch) => {\n const createdKpiGrade: KpiGrade = await getRepository(KpiGrade, tx).save({ domain, ...kpiGrade })\n })\n )\n\n return true\n }\n}\n"]}
1
+ {"version":3,"file":"kpi-grade-mutation.js","sourceRoot":"","sources":["../../../server/service/kpi-grade/kpi-grade-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { getRepository } from '@things-factory/shell'\n\nimport { KpiGrade } from './kpi-grade'\nimport { NewKpiGrade, KpiGradePatch } from './kpi-grade-type'\nimport { Kpi } from '../kpi/kpi'\n\n@Resolver(KpiGrade)\nexport class KpiGradeMutation {\n @Directive('@transaction')\n @Mutation(returns => KpiGrade, { description: 'Create a new KPI grade with the provided details.' })\n async createKpiGrade(\n @Arg('grade', { description: 'Input object containing details for the new KPI grade.' }) grade: NewKpiGrade,\n @Ctx() context: ResolverContext\n ): Promise<KpiGrade> {\n const { domain, user, tx } = context.state\n\n let kpi = grade.kpiId ? await getRepository(Kpi).findOne({ where: { id: grade.kpiId } }) : undefined\n\n const result = await getRepository(KpiGrade, tx).save({\n ...grade,\n kpi,\n domain,\n creator: user,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => KpiGrade, { description: 'To modify KpiGrade information' })\n async updateKpiGrade(\n @Arg('id') id: string,\n @Arg('patch') patch: KpiGradePatch,\n @Ctx() context: ResolverContext\n ): Promise<KpiGrade> {\n const { domain, user, tx } = context.state\n\n const repository = getRepository(KpiGrade, tx)\n const kpiGrade = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n let kpi = patch.kpiId ? await getRepository(Kpi).findOne({ where: { id: patch.kpiId } }) : kpiGrade.kpi\n\n const result = await repository.save({\n ...kpiGrade,\n ...patch,\n kpi,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => [KpiGrade], { description: \"To modify multiple KpiGrades' information\" })\n async updateMultipleKpiGrade(\n @Arg('patches', type => [KpiGradePatch]) patches: KpiGradePatch[],\n @Ctx() context: ResolverContext\n ): Promise<KpiGrade[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const kpiGradeRepo = getRepository(KpiGrade, tx)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await kpiGradeRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const kpiGrade = await kpiGradeRepo.findOneBy({ id: updateRecord.id })\n\n const result = await kpiGradeRepo.save({\n ...kpiGrade,\n ...updateRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete KpiGrade' })\n async deleteKpiGrade(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(KpiGrade, tx).delete({ domain: { id: domain.id }, id })\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple KpiGrades' })\n async deleteKpiGrades(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(KpiGrade, tx).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To import multiple KpiGrades' })\n async importKpiGrades(\n @Arg('kpiGrades', type => [KpiGradePatch]) kpiGrades: KpiGradePatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n kpiGrades.map(async (kpiGrade: KpiGradePatch) => {\n const createdKpiGrade: KpiGrade = await getRepository(KpiGrade, tx).save({ domain, ...kpiGrade })\n })\n )\n\n return true\n }\n}\n"]}
@@ -37,8 +37,8 @@ let KpiGradeQuery = class KpiGradeQuery {
37
37
  };
38
38
  exports.KpiGradeQuery = KpiGradeQuery;
39
39
  tslib_1.__decorate([
40
- (0, type_graphql_1.Query)(returns => kpi_grade_1.KpiGrade, { nullable: true, description: 'To fetch a KpiGrade' }),
41
- tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
40
+ (0, type_graphql_1.Query)(returns => kpi_grade_1.KpiGrade, { nullable: true, description: 'Fetch a single KPI grade by its unique identifier.' }),
41
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('id', { description: 'Unique identifier of the KPI grade to fetch.' })),
42
42
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
43
43
  tslib_1.__metadata("design:type", Function),
44
44
  tslib_1.__metadata("design:paramtypes", [String, Object]),
@@ -1 +1 @@
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'\n\n@Resolver(KpiGrade)\nexport class KpiGradeQuery {\n @Query(returns => KpiGrade!, { nullable: true, description: 'To fetch a KpiGrade' })\n async kpiGrade(@Arg('id') id: string, @Ctx() context: ResolverContext): 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"]}
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'\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"]}
@@ -1,16 +1,25 @@
1
- import { KpiGrade, KpiGradeStatus } from './kpi-grade';
1
+ import { KpiGrade } from './kpi-grade';
2
2
  export declare class NewKpiGrade {
3
3
  name: string;
4
4
  description?: string;
5
- state?: KpiGradeStatus;
5
+ kpiId: string;
6
+ version: number;
7
+ minValue: number;
8
+ maxValue: number;
9
+ score?: number;
10
+ color?: string;
6
11
  active?: boolean;
7
- params?: string;
8
12
  }
9
13
  export declare class KpiGradePatch {
10
14
  id?: string;
11
15
  name?: string;
12
16
  description?: string;
13
- state?: KpiGradeStatus;
17
+ kpiId?: string;
18
+ version?: number;
19
+ minValue?: number;
20
+ maxValue?: number;
21
+ score?: number;
22
+ color?: string;
14
23
  active?: boolean;
15
24
  cuFlag?: string;
16
25
  }
@@ -8,57 +8,93 @@ let NewKpiGrade = class NewKpiGrade {
8
8
  };
9
9
  exports.NewKpiGrade = NewKpiGrade;
10
10
  tslib_1.__decorate([
11
- (0, type_graphql_1.Field)(),
11
+ (0, type_graphql_1.Field)({ description: 'Name of the grade or section for this KPI.' }),
12
12
  tslib_1.__metadata("design:type", String)
13
13
  ], NewKpiGrade.prototype, "name", void 0);
14
14
  tslib_1.__decorate([
15
- (0, type_graphql_1.Field)({ nullable: true }),
15
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Detailed description of this KPI grade.' }),
16
16
  tslib_1.__metadata("design:type", String)
17
17
  ], NewKpiGrade.prototype, "description", void 0);
18
18
  tslib_1.__decorate([
19
- (0, type_graphql_1.Field)(type => kpi_grade_1.KpiGradeStatus, { nullable: true }),
19
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'ID of the KPI to which this grade belongs.' }),
20
20
  tslib_1.__metadata("design:type", String)
21
- ], NewKpiGrade.prototype, "state", void 0);
21
+ ], NewKpiGrade.prototype, "kpiId", void 0);
22
22
  tslib_1.__decorate([
23
- (0, type_graphql_1.Field)({ nullable: true }),
24
- tslib_1.__metadata("design:type", Boolean)
25
- ], NewKpiGrade.prototype, "active", void 0);
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
26
  tslib_1.__decorate([
27
- (0, type_graphql_1.Field)({ nullable: true }),
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).' }),
28
40
  tslib_1.__metadata("design:type", String)
29
- ], NewKpiGrade.prototype, "params", void 0);
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);
30
46
  exports.NewKpiGrade = NewKpiGrade = tslib_1.__decorate([
31
- (0, type_graphql_1.InputType)()
47
+ (0, type_graphql_1.InputType)({ description: 'Input type for creating a new KPI grade. Used in mutations to provide grade details.' })
32
48
  ], NewKpiGrade);
33
49
  let KpiGradePatch = class KpiGradePatch {
34
50
  };
35
51
  exports.KpiGradePatch = KpiGradePatch;
36
52
  tslib_1.__decorate([
37
- (0, type_graphql_1.Field)(type => type_graphql_1.ID, { nullable: true }),
53
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID, { nullable: true, description: 'ID of the KPI grade to update.' }),
38
54
  tslib_1.__metadata("design:type", String)
39
55
  ], KpiGradePatch.prototype, "id", void 0);
40
56
  tslib_1.__decorate([
41
- (0, type_graphql_1.Field)({ nullable: true }),
57
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Name of the grade or section for this KPI.' }),
42
58
  tslib_1.__metadata("design:type", String)
43
59
  ], KpiGradePatch.prototype, "name", void 0);
44
60
  tslib_1.__decorate([
45
- (0, type_graphql_1.Field)({ nullable: true }),
61
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Detailed description of this KPI grade.' }),
46
62
  tslib_1.__metadata("design:type", String)
47
63
  ], KpiGradePatch.prototype, "description", void 0);
48
64
  tslib_1.__decorate([
49
- (0, type_graphql_1.Field)(type => kpi_grade_1.KpiGradeStatus, { nullable: true }),
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).' }),
50
86
  tslib_1.__metadata("design:type", String)
51
- ], KpiGradePatch.prototype, "state", void 0);
87
+ ], KpiGradePatch.prototype, "color", void 0);
52
88
  tslib_1.__decorate([
53
- (0, type_graphql_1.Field)({ nullable: true }),
89
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' }),
54
90
  tslib_1.__metadata("design:type", Boolean)
55
91
  ], KpiGradePatch.prototype, "active", void 0);
56
92
  tslib_1.__decorate([
57
- (0, type_graphql_1.Field)({ nullable: true }),
93
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Custom flag for update operations (internal use).' }),
58
94
  tslib_1.__metadata("design:type", String)
59
95
  ], KpiGradePatch.prototype, "cuFlag", void 0);
60
96
  exports.KpiGradePatch = KpiGradePatch = tslib_1.__decorate([
61
- (0, type_graphql_1.InputType)()
97
+ (0, type_graphql_1.InputType)({ description: 'Input type for updating an existing KPI grade. Used in mutations to patch grade details.' })
62
98
  ], KpiGradePatch);
63
99
  let KpiGradeList = class KpiGradeList {
64
100
  };
@@ -1 +1 @@
1
- {"version":3,"file":"kpi-grade-type.js","sourceRoot":"","sources":["../../../server/service/kpi-grade/kpi-grade-type.ts"],"names":[],"mappings":";;;;AAEA,+CAAsF;AAItF,2CAAsD;AAG/C,IAAM,WAAW,GAAjB,MAAM,WAAW;CAevB,CAAA;AAfY,kCAAW;AAEtB;IADC,IAAA,oBAAK,GAAE;;yCACI;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,0BAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CAC5B;AAGtB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACX;sBAdJ,WAAW;IADvB,IAAA,wBAAS,GAAE;GACC,WAAW,CAevB;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;CAkBzB,CAAA;AAlBY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCAC3B;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,0BAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAC5B;AAGtB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACX;wBAjBJ,aAAa;IADzB,IAAA,wBAAS,GAAE;GACC,aAAa,CAkBzB;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAY;CAMxB,CAAA;AANY,oCAAY;AAEvB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAQ,CAAC,CAAC;;2CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;2CACN;uBALF,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAMxB","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, KpiGradeStatus } from './kpi-grade'\n\n@InputType()\nexport class NewKpiGrade {\n @Field()\n name: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field(type => KpiGradeStatus, { nullable: true })\n state?: KpiGradeStatus\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n params?: string\n}\n\n@InputType()\nexport class KpiGradePatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n name?: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field(type => KpiGradeStatus, { nullable: true })\n state?: KpiGradeStatus\n\n @Field({ nullable: true })\n active?: boolean\n \n @Field({ nullable: true })\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
+ {"version":3,"file":"kpi-grade-type.js","sourceRoot":"","sources":["../../../server/service/kpi-grade/kpi-grade-type.ts"],"names":[],"mappings":";;;;AAEA,+CAAsF;AAItF,2CAAsC;AAG/B,IAAM,WAAW,GAAjB,MAAM,WAAW;CA2BvB,CAAA;AA3BY,kCAAW;AAEtB;IADC,IAAA,oBAAK,EAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;yCACzD;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;;gDAC9D;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;0CACpE;AAGb;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,WAAW,EAAE,4DAA4D,EAAE,CAAC;;4CACnF;AAGf;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;;6CAC7D;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;;6CAC7D;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;0CACpF;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC;;0CACpF;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC;;2CACjF;sBA1BL,WAAW;IADvB,IAAA,wBAAS,EAAC,EAAE,WAAW,EAAE,sFAAsF,EAAE,CAAC;GACtG,WAAW,CA2BvB;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;CAiCzB,CAAA;AAjCY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;;yCAC1E;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;2CACxE;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;;kDAC9D;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;4CACnF;AAGd;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4DAA4D,EAAE,CAAC;;8CAClG;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;;+CAC5E;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;;+CAC5E;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;4CACpF;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC;;4CACpF;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC;;6CACjF;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,mDAAmD,EAAE,CAAC;;6CAC7E;wBAhCJ,aAAa;IADzB,IAAA,wBAAS,EAAC,EAAE,WAAW,EAAE,0FAA0F,EAAE,CAAC;GAC1G,aAAa,CAiCzB;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAY;CAMxB,CAAA;AANY,oCAAY;AAEvB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAQ,CAAC,CAAC;;2CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;2CACN;uBALF,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAMxB","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,22 +1,22 @@
1
1
  import { Domain } from '@things-factory/shell';
2
2
  import { User } from '@things-factory/auth-base';
3
- export declare enum KpiGradeStatus {
4
- STATUS_A = "STATUS_A",
5
- STATUS_B = "STATUS_B"
6
- }
3
+ import { Kpi } from '../kpi/kpi';
7
4
  export declare class KpiGrade {
8
5
  readonly id: string;
9
- version?: number;
10
6
  domain?: Domain;
11
7
  domainId?: string;
12
8
  name?: string;
13
9
  description?: string;
14
10
  active?: boolean;
15
- state?: KpiGradeStatus;
16
- params?: string;
11
+ kpi: Kpi;
12
+ kpiId: string;
13
+ version: number;
14
+ minValue: number;
15
+ maxValue: number;
16
+ score?: number;
17
+ color?: string;
17
18
  createdAt?: Date;
18
19
  updatedAt?: Date;
19
- deletedAt?: Date;
20
20
  creator?: User;
21
21
  creatorId?: string;
22
22
  updater?: User;
@@ -1,109 +1,117 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KpiGrade = exports.KpiGradeStatus = void 0;
3
+ exports.KpiGrade = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const typeorm_1 = require("typeorm");
6
6
  const type_graphql_1 = require("type-graphql");
7
7
  const shell_1 = require("@things-factory/shell");
8
8
  const auth_base_1 = require("@things-factory/auth-base");
9
- var KpiGradeStatus;
10
- (function (KpiGradeStatus) {
11
- KpiGradeStatus["STATUS_A"] = "STATUS_A";
12
- KpiGradeStatus["STATUS_B"] = "STATUS_B";
13
- })(KpiGradeStatus || (exports.KpiGradeStatus = KpiGradeStatus = {}));
14
- (0, type_graphql_1.registerEnumType)(KpiGradeStatus, {
15
- name: 'KpiGradeStatus',
16
- description: 'state enumeration of a kpiGrade'
17
- });
9
+ const kpi_1 = require("../kpi/kpi");
18
10
  let KpiGrade = class KpiGrade {
19
- constructor() {
20
- this.version = 1;
21
- }
22
11
  };
23
12
  exports.KpiGrade = KpiGrade;
24
13
  tslib_1.__decorate([
25
14
  (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
26
- (0, type_graphql_1.Field)(type => type_graphql_1.ID),
15
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'Unique identifier for this KPI grade.' }),
27
16
  tslib_1.__metadata("design:type", String)
28
17
  ], KpiGrade.prototype, "id", void 0);
29
- tslib_1.__decorate([
30
- (0, typeorm_1.VersionColumn)(),
31
- (0, type_graphql_1.Field)({ nullable: true }),
32
- tslib_1.__metadata("design:type", Number)
33
- ], KpiGrade.prototype, "version", void 0);
34
18
  tslib_1.__decorate([
35
19
  (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
36
- (0, type_graphql_1.Field)({ nullable: true }),
20
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Domain (tenant) to which this KPI grade belongs.' }),
37
21
  tslib_1.__metadata("design:type", shell_1.Domain)
38
22
  ], KpiGrade.prototype, "domain", void 0);
39
23
  tslib_1.__decorate([
40
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.' }),
41
26
  tslib_1.__metadata("design:type", String)
42
27
  ], KpiGrade.prototype, "domainId", void 0);
43
28
  tslib_1.__decorate([
44
29
  (0, typeorm_1.Column)(),
45
- (0, type_graphql_1.Field)({ nullable: true }),
30
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Name of the grade or section for this KPI.' }),
46
31
  tslib_1.__metadata("design:type", String)
47
32
  ], KpiGrade.prototype, "name", void 0);
48
33
  tslib_1.__decorate([
49
34
  (0, typeorm_1.Column)({ nullable: true }),
50
- (0, type_graphql_1.Field)({ nullable: true }),
35
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Detailed description of this KPI grade.' }),
51
36
  tslib_1.__metadata("design:type", String)
52
37
  ], KpiGrade.prototype, "description", void 0);
53
38
  tslib_1.__decorate([
54
39
  (0, typeorm_1.Column)({ nullable: false, default: false }),
55
- (0, type_graphql_1.Field)({ nullable: true }),
40
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Indicates whether this KPI grade is active and usable.' }),
56
41
  tslib_1.__metadata("design:type", Boolean)
57
42
  ], KpiGrade.prototype, "active", void 0);
58
43
  tslib_1.__decorate([
59
- (0, typeorm_1.Column)({ nullable: true }),
60
- (0, type_graphql_1.Field)({ nullable: true }),
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.' }),
61
51
  tslib_1.__metadata("design:type", String)
62
- ], KpiGrade.prototype, "state", void 0);
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);
63
73
  tslib_1.__decorate([
64
74
  (0, typeorm_1.Column)({ nullable: true }),
65
- (0, type_graphql_1.Field)({ nullable: true }),
75
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Color code for this grade (for visualization purposes).' }),
66
76
  tslib_1.__metadata("design:type", String)
67
- ], KpiGrade.prototype, "params", void 0);
77
+ ], KpiGrade.prototype, "color", void 0);
68
78
  tslib_1.__decorate([
69
79
  (0, typeorm_1.CreateDateColumn)(),
70
- (0, type_graphql_1.Field)({ nullable: true }),
80
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Timestamp when this KPI grade was created.' }),
71
81
  tslib_1.__metadata("design:type", Date)
72
82
  ], KpiGrade.prototype, "createdAt", void 0);
73
83
  tslib_1.__decorate([
74
84
  (0, typeorm_1.UpdateDateColumn)(),
75
- (0, type_graphql_1.Field)({ nullable: true }),
85
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Timestamp when this KPI grade was last updated.' }),
76
86
  tslib_1.__metadata("design:type", Date)
77
87
  ], KpiGrade.prototype, "updatedAt", void 0);
78
- tslib_1.__decorate([
79
- (0, typeorm_1.DeleteDateColumn)(),
80
- (0, type_graphql_1.Field)({ nullable: true }),
81
- tslib_1.__metadata("design:type", Date)
82
- ], KpiGrade.prototype, "deletedAt", void 0);
83
88
  tslib_1.__decorate([
84
89
  (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
85
- (0, type_graphql_1.Field)(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.' }),
86
91
  tslib_1.__metadata("design:type", auth_base_1.User)
87
92
  ], KpiGrade.prototype, "creator", void 0);
88
93
  tslib_1.__decorate([
89
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.' }),
90
96
  tslib_1.__metadata("design:type", String)
91
97
  ], KpiGrade.prototype, "creatorId", void 0);
92
98
  tslib_1.__decorate([
93
99
  (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
94
- (0, type_graphql_1.Field)(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.' }),
95
101
  tslib_1.__metadata("design:type", auth_base_1.User)
96
102
  ], KpiGrade.prototype, "updater", void 0);
97
103
  tslib_1.__decorate([
98
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.' }),
99
106
  tslib_1.__metadata("design:type", String)
100
107
  ], KpiGrade.prototype, "updaterId", void 0);
101
108
  exports.KpiGrade = KpiGrade = tslib_1.__decorate([
102
109
  (0, typeorm_1.Entity)(),
103
- (0, typeorm_1.Index)('ix_kpi_grade_0', (kpiGrade) => [kpiGrade.domain, kpiGrade.name], {
104
- where: '"deleted_at" IS NULL',
110
+ (0, typeorm_1.Index)('ix_kpi_grade_0', (kpiGrade) => [kpiGrade.domain, kpiGrade.kpi, kpiGrade.version, kpiGrade.name], {
105
111
  unique: true
106
112
  }),
107
- (0, type_graphql_1.ObjectType)({ description: 'Entity for KpiGrade' })
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
+ })
108
116
  ], KpiGrade);
109
117
  //# sourceMappingURL=kpi-grade.js.map
@@ -1 +1 @@
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 DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n VersionColumn,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nexport enum KpiGradeStatus {\n STATUS_A = 'STATUS_A',\n STATUS_B = 'STATUS_B'\n}\n\nregisterEnumType(KpiGradeStatus, {\n name: 'KpiGradeStatus',\n description: 'state enumeration of a kpiGrade'\n})\n\n@Entity()\n@Index('ix_kpi_grade_0', (kpiGrade: KpiGrade) => [kpiGrade.domain, kpiGrade.name], {\n where: '\"deleted_at\" IS NULL',\n unique: true\n})\n@ObjectType({ description: 'Entity for KpiGrade' })\nexport class KpiGrade {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n \n @VersionColumn()\n @Field({ nullable: true })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field({ nullable: true })\n domain?: Domain\n\n @RelationId((kpiGrade: KpiGrade) => kpiGrade.domain)\n domainId?: string\n\n @Column()\n @Field({ nullable: true })\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n @Column({ nullable: false, default: false })\n @Field({ nullable: true })\n active?: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n state?: KpiGradeStatus\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n params?: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true })\n deletedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((kpiGrade: KpiGrade) => kpiGrade.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((kpiGrade: KpiGrade) => kpiGrade.updater)\n updaterId?: string\n}\n"]}
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"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * KPI-Metric 집계/자동화 서비스 함수 (formula 지원, KPI Value 저장)
3
+ * @param metricId KPI-Metric ID
4
+ * @param domainId 도메인 ID
5
+ * @param context ResolverContext (state에 domain, user, tx 등 포함)
6
+ * @returns 저장된 KPI Value 배열
7
+ */
8
+ export declare function aggregateKpiMetricValue(metricId: string, domainId: string, context: ResolverContext): Promise<any[]>;