@things-factory/kpi 9.0.31 → 9.0.32

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 (324) hide show
  1. package/README.md +1 -2
  2. package/client/charts/kpi-boxplot-chart.ts +182 -42
  3. package/client/charts/kpi-radar-chart.ts +9 -9
  4. package/client/pages/kpi/kpi-list-page.ts +196 -32
  5. package/client/pages/kpi/kpi-overview.ts +9 -11
  6. package/client/pages/kpi/kpi-tree-page.ts +409 -0
  7. package/client/pages/kpi/kpi-view.ts +187 -0
  8. package/client/pages/kpi-dashboard/cards/kpi-level1-card.ts +1 -1
  9. package/client/pages/kpi-dashboard/cards/kpi-level2-comparison.ts +1 -1
  10. package/client/pages/kpi-dashboard/cards/kpi-level3-comparison.ts +1 -1
  11. package/client/pages/kpi-dashboard/components/kpi-left-panel.ts +198 -160
  12. package/client/pages/kpi-dashboard/components/kpi-map-panel.ts +133 -0
  13. package/client/pages/kpi-dashboard/components/kpi-region-popup.ts +3 -2
  14. package/client/pages/kpi-dashboard/kpi-dashboard-map.ts +4 -3
  15. package/client/pages/kpi-dashboard/kpi-dashboard.ts +28 -30
  16. package/client/pages/kpi-history/kpi-history-list-page.ts +11 -11
  17. package/client/pages/kpi-metric/kpi-metric-list-page.ts +10 -2
  18. package/client/pages/kpi-metric-value/kpi-metric-value-editor-page.ts +7 -7
  19. package/client/pages/kpi-metric-value/kpi-metric-value-importer.ts +2 -2
  20. package/client/pages/kpi-metric-value/kpi-metric-value-list-page.ts +16 -8
  21. package/client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.ts +5 -5
  22. package/client/pages/kpi-statistic/kpi-statistic-editor-page.ts +1 -2
  23. package/client/pages/kpi-statistic/kpi-statistic-list-page.ts +10 -2
  24. package/client/pages/kpi-value/kpi-value-editor-page.ts +11 -7
  25. package/client/pages/kpi-value/kpi-value-list-page.ts +31 -7
  26. package/client/route.ts +2 -9
  27. package/design-entities.md +8 -12
  28. package/dist-client/charts/kpi-boxplot-chart.d.ts +2 -0
  29. package/dist-client/charts/kpi-boxplot-chart.js +168 -42
  30. package/dist-client/charts/kpi-boxplot-chart.js.map +1 -1
  31. package/dist-client/charts/kpi-radar-chart.js +9 -9
  32. package/dist-client/charts/kpi-radar-chart.js.map +1 -1
  33. package/dist-client/pages/kpi/kpi-list-page.d.ts +19 -3
  34. package/dist-client/pages/kpi/kpi-list-page.js +188 -32
  35. package/dist-client/pages/kpi/kpi-list-page.js.map +1 -1
  36. package/dist-client/pages/kpi/kpi-overview.js +9 -11
  37. package/dist-client/pages/kpi/kpi-overview.js.map +1 -1
  38. package/dist-client/pages/kpi/kpi-tree-page.d.ts +59 -0
  39. package/dist-client/pages/kpi/kpi-tree-page.js +403 -0
  40. package/dist-client/pages/kpi/kpi-tree-page.js.map +1 -0
  41. package/dist-client/pages/kpi/kpi-view.d.ts +12 -0
  42. package/dist-client/pages/kpi/kpi-view.js +191 -0
  43. package/dist-client/pages/kpi/kpi-view.js.map +1 -0
  44. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js +1 -1
  45. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js.map +1 -1
  46. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js +1 -1
  47. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js.map +1 -1
  48. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js +1 -1
  49. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js.map +1 -1
  50. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.d.ts +3 -1
  51. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js +197 -161
  52. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js.map +1 -1
  53. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.d.ts +5 -0
  54. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js +146 -0
  55. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js.map +1 -1
  56. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js +3 -2
  57. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js.map +1 -1
  58. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js +4 -3
  59. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js.map +1 -1
  60. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +28 -30
  61. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -1
  62. package/dist-client/pages/kpi-history/kpi-history-list-page.d.ts +6 -1
  63. package/dist-client/pages/kpi-history/kpi-history-list-page.js +11 -11
  64. package/dist-client/pages/kpi-history/kpi-history-list-page.js.map +1 -1
  65. package/dist-client/pages/kpi-metric/kpi-metric-list-page.d.ts +5 -0
  66. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js +10 -2
  67. package/dist-client/pages/kpi-metric/kpi-metric-list-page.js.map +1 -1
  68. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +1 -1
  69. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +8 -8
  70. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +1 -1
  71. package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js +2 -2
  72. package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js.map +1 -1
  73. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +5 -0
  74. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +16 -8
  75. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +1 -1
  76. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.d.ts +1 -1
  77. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js +6 -6
  78. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js.map +1 -1
  79. package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js +1 -2
  80. package/dist-client/pages/kpi-statistic/kpi-statistic-editor-page.js.map +1 -1
  81. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.d.ts +5 -0
  82. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js +10 -2
  83. package/dist-client/pages/kpi-statistic/kpi-statistic-list-page.js.map +1 -1
  84. package/dist-client/pages/kpi-value/kpi-value-editor-page.d.ts +2 -1
  85. package/dist-client/pages/kpi-value/kpi-value-editor-page.js +16 -8
  86. package/dist-client/pages/kpi-value/kpi-value-editor-page.js.map +1 -1
  87. package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +5 -0
  88. package/dist-client/pages/kpi-value/kpi-value-list-page.js +31 -7
  89. package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -1
  90. package/dist-client/route.d.ts +1 -1
  91. package/dist-client/route.js +2 -8
  92. package/dist-client/route.js.map +1 -1
  93. package/dist-client/tsconfig.tsbuildinfo +1 -1
  94. package/dist-server/controllers/kpi-metric-value-provider.d.ts +1 -1
  95. package/dist-server/controllers/kpi-metric-value-provider.js +4 -4
  96. package/dist-server/controllers/kpi-metric-value-provider.js.map +1 -1
  97. package/dist-server/controllers/kpi-value-provider.d.ts +1 -1
  98. package/dist-server/controllers/kpi-value-provider.js +3 -3
  99. package/dist-server/controllers/kpi-value-provider.js.map +1 -1
  100. package/dist-server/migrations/1752190849680-seed-kpi-metrics.d.ts +6 -0
  101. package/dist-server/migrations/1752190849680-seed-kpi-metrics.js +101 -0
  102. package/dist-server/migrations/1752190849680-seed-kpi-metrics.js.map +1 -0
  103. package/dist-server/migrations/1752190849681-seed-kpi.d.ts +5 -0
  104. package/dist-server/migrations/1752190849681-seed-kpi.js +315 -0
  105. package/dist-server/migrations/1752190849681-seed-kpi.js.map +1 -0
  106. package/dist-server/migrations/1752192090123-add-grades-to-kpi.d.ts +7 -0
  107. package/dist-server/migrations/1752192090123-add-grades-to-kpi.js +51 -0
  108. package/dist-server/migrations/1752192090123-add-grades-to-kpi.js.map +1 -0
  109. package/dist-server/migrations/1752192090124-add-kpi-statistics.d.ts +5 -0
  110. package/dist-server/migrations/1752192090124-add-kpi-statistics.js +710 -0
  111. package/dist-server/migrations/1752192090124-add-kpi-statistics.js.map +1 -0
  112. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.d.ts +6 -0
  113. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js +111 -0
  114. package/dist-server/migrations/1752192090128-seed-kpi-org-scope.js.map +1 -0
  115. package/dist-server/migrations/1752192090129-seed-kpi-values.d.ts +6 -0
  116. package/dist-server/migrations/1752192090129-seed-kpi-values.js +187 -0
  117. package/dist-server/migrations/1752192090129-seed-kpi-values.js.map +1 -0
  118. package/dist-server/migrations/grade-data/x11-performance-table.json +962 -0
  119. package/dist-server/migrations/grade-data/x12-performance-table.json +611 -0
  120. package/dist-server/migrations/grade-data/x14-performance-table.json +42 -0
  121. package/dist-server/migrations/grade-data/x21-performance-table.json +889 -0
  122. package/dist-server/migrations/grade-data/x22-performance-table.json +1064 -0
  123. package/dist-server/migrations/grade-data/x23-performance-table.json +42 -0
  124. package/dist-server/migrations/grade-data/x31-performance-table.json +644 -0
  125. package/dist-server/migrations/grade-data/x32-performance-table.json +993 -0
  126. package/dist-server/migrations/grade-data/x33-performance-table.json +195 -0
  127. package/dist-server/migrations/grade-data/x34-performance-table.json +12 -0
  128. package/dist-server/migrations/grade-data/x35-performance-table.json +42 -0
  129. package/dist-server/migrations/grade-data/x41-performance-table.json +825 -0
  130. package/dist-server/migrations/grade-data/x42-performance-table.json +786 -0
  131. package/dist-server/migrations/grade-data/x43-performance-table.json +12 -0
  132. package/dist-server/migrations/grade-data/x44-performance-table.json +42 -0
  133. package/dist-server/migrations/grade-data/x51-performance-table.json +924 -0
  134. package/dist-server/migrations/grade-data/x52-performance-table.json +42 -0
  135. package/dist-server/migrations/grade-data/x61-performance-table.json +261 -0
  136. package/dist-server/migrations/grade-data/x62-performance-table.json +42 -0
  137. package/dist-server/migrations/seed-data/kpi-metrics-seed.json +454 -0
  138. package/dist-server/migrations/seed-data/kpi-org-scope-seed.json +1676 -0
  139. package/dist-server/migrations/seed-data/kpi-values-seed.json +402 -0
  140. package/dist-server/migrations/seed-data/kpis-seed.json +488 -0
  141. package/dist-server/service/index.d.ts +3 -7
  142. package/dist-server/service/index.js +5 -12
  143. package/dist-server/service/index.js.map +1 -1
  144. package/dist-server/service/kpi/aggregate-kpi.js +30 -13
  145. package/dist-server/service/kpi/aggregate-kpi.js.map +1 -1
  146. package/dist-server/service/kpi/kpi-formula.service.d.ts +15 -0
  147. package/dist-server/service/kpi/kpi-formula.service.js +90 -0
  148. package/dist-server/service/kpi/kpi-formula.service.js.map +1 -1
  149. package/dist-server/service/kpi/kpi-history.d.ts +0 -3
  150. package/dist-server/service/kpi/kpi-history.js +0 -10
  151. package/dist-server/service/kpi/kpi-history.js.map +1 -1
  152. package/dist-server/service/kpi/kpi-mutation.d.ts +1 -1
  153. package/dist-server/service/kpi/kpi-mutation.js +57 -20
  154. package/dist-server/service/kpi/kpi-mutation.js.map +1 -1
  155. package/dist-server/service/kpi/kpi-query.d.ts +7 -3
  156. package/dist-server/service/kpi/kpi-query.js +126 -10
  157. package/dist-server/service/kpi/kpi-query.js.map +1 -1
  158. package/dist-server/service/kpi/kpi-type.d.ts +4 -2
  159. package/dist-server/service/kpi/kpi-type.js +12 -4
  160. package/dist-server/service/kpi/kpi-type.js.map +1 -1
  161. package/dist-server/service/kpi/kpi.d.ts +4 -3
  162. package/dist-server/service/kpi/kpi.js +20 -8
  163. package/dist-server/service/kpi/kpi.js.map +1 -1
  164. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js +46 -11
  165. package/dist-server/service/kpi-metric/aggregate-kpi-metric.js.map +1 -1
  166. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +1 -1
  167. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +6 -6
  168. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +1 -1
  169. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.d.ts +2 -2
  170. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js +4 -4
  171. package/dist-server/service/kpi-metric-value/kpi-metric-value-type.js.map +1 -1
  172. package/dist-server/service/kpi-metric-value/kpi-metric-value.d.ts +1 -1
  173. package/dist-server/service/kpi-metric-value/kpi-metric-value.js +3 -3
  174. package/dist-server/service/kpi-metric-value/kpi-metric-value.js.map +1 -1
  175. package/dist-server/service/kpi-org-scope/index.d.ts +9 -0
  176. package/dist-server/service/kpi-org-scope/index.js +14 -0
  177. package/dist-server/service/kpi-org-scope/index.js.map +1 -0
  178. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.d.ts +8 -0
  179. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js +170 -0
  180. package/dist-server/service/kpi-org-scope/kpi-org-scope-mutation.js.map +1 -0
  181. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.d.ts +14 -0
  182. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js +152 -0
  183. package/dist-server/service/kpi-org-scope/kpi-org-scope-query.js.map +1 -0
  184. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.d.ts +26 -0
  185. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js +101 -0
  186. package/dist-server/service/kpi-org-scope/kpi-org-scope-type.js.map +1 -0
  187. package/dist-server/service/kpi-org-scope/kpi-org-scope.d.ts +26 -0
  188. package/dist-server/service/kpi-org-scope/kpi-org-scope.js +135 -0
  189. package/dist-server/service/kpi-org-scope/kpi-org-scope.js.map +1 -0
  190. package/dist-server/service/kpi-statistic/kpi-statistic.d.ts +1 -0
  191. package/dist-server/service/kpi-statistic/kpi-statistic.js +11 -0
  192. package/dist-server/service/kpi-statistic/kpi-statistic.js.map +1 -1
  193. package/dist-server/service/kpi-value/kpi-value-mutation.js +71 -7
  194. package/dist-server/service/kpi-value/kpi-value-mutation.js.map +1 -1
  195. package/dist-server/service/kpi-value/kpi-value-type.d.ts +4 -2
  196. package/dist-server/service/kpi-value/kpi-value-type.js +12 -4
  197. package/dist-server/service/kpi-value/kpi-value-type.js.map +1 -1
  198. package/dist-server/service/kpi-value/kpi-value.d.ts +3 -1
  199. package/dist-server/service/kpi-value/kpi-value.js +11 -5
  200. package/dist-server/service/kpi-value/kpi-value.js.map +1 -1
  201. package/dist-server/service/utils/value-date-util.d.ts +1 -0
  202. package/dist-server/service/utils/value-date-util.js +41 -0
  203. package/dist-server/service/utils/value-date-util.js.map +1 -1
  204. package/dist-server/tsconfig.json +10 -0
  205. package/dist-server/tsconfig.tsbuildinfo +1 -1
  206. package/package.json +7 -6
  207. package/server/@types/index.d.ts +11 -0
  208. package/server/controllers/kpi-metric-value-provider.ts +5 -5
  209. package/server/controllers/kpi-value-provider.ts +4 -4
  210. package/server/migrations/1752190849680-seed-kpi-metrics.ts +124 -0
  211. package/server/migrations/1752190849681-seed-kpi.ts +356 -0
  212. package/server/migrations/1752192090123-add-grades-to-kpi.ts +67 -0
  213. package/server/migrations/1752192090124-add-kpi-statistics.ts +719 -0
  214. package/server/migrations/1752192090128-seed-kpi-org-scope.ts +132 -0
  215. package/server/migrations/1752192090129-seed-kpi-values.ts +207 -0
  216. package/server/migrations/grade-data/x11-performance-table.json +962 -0
  217. package/server/migrations/grade-data/x12-performance-table.json +611 -0
  218. package/server/migrations/grade-data/x14-performance-table.json +42 -0
  219. package/server/migrations/grade-data/x21-performance-table.json +889 -0
  220. package/server/migrations/grade-data/x22-performance-table.json +1064 -0
  221. package/server/migrations/grade-data/x23-performance-table.json +42 -0
  222. package/server/migrations/grade-data/x31-performance-table.json +644 -0
  223. package/server/migrations/grade-data/x32-performance-table.json +993 -0
  224. package/server/migrations/grade-data/x33-performance-table.json +195 -0
  225. package/server/migrations/grade-data/x34-performance-table.json +12 -0
  226. package/server/migrations/grade-data/x35-performance-table.json +42 -0
  227. package/server/migrations/grade-data/x41-performance-table.json +825 -0
  228. package/server/migrations/grade-data/x42-performance-table.json +786 -0
  229. package/server/migrations/grade-data/x43-performance-table.json +12 -0
  230. package/server/migrations/grade-data/x44-performance-table.json +42 -0
  231. package/server/migrations/grade-data/x51-performance-table.json +924 -0
  232. package/server/migrations/grade-data/x52-performance-table.json +42 -0
  233. package/server/migrations/grade-data/x61-performance-table.json +261 -0
  234. package/server/migrations/grade-data/x62-performance-table.json +42 -0
  235. package/server/migrations/seed-data/kpi-metrics-seed.json +454 -0
  236. package/server/migrations/seed-data/kpi-org-scope-seed.json +1676 -0
  237. package/server/migrations/seed-data/kpi-values-seed.json +402 -0
  238. package/server/migrations/seed-data/kpis-seed.json +488 -0
  239. package/server/service/index.ts +5 -12
  240. package/server/service/kpi/aggregate-kpi.ts +31 -13
  241. package/server/service/kpi/kpi-formula.service.ts +101 -0
  242. package/server/service/kpi/kpi-history.ts +0 -8
  243. package/server/service/kpi/kpi-mutation.ts +59 -19
  244. package/server/service/kpi/kpi-query.ts +118 -8
  245. package/server/service/kpi/kpi-type.ts +10 -4
  246. package/server/service/kpi/kpi.ts +17 -7
  247. package/server/service/kpi-metric/aggregate-kpi-metric.ts +55 -11
  248. package/server/service/kpi-metric-value/kpi-metric-value-mutation.ts +6 -6
  249. package/server/service/kpi-metric-value/kpi-metric-value-type.ts +4 -4
  250. package/server/service/kpi-metric-value/kpi-metric-value.ts +3 -3
  251. package/server/service/kpi-org-scope/index.ts +11 -0
  252. package/server/service/kpi-org-scope/kpi-org-scope-mutation.ts +173 -0
  253. package/server/service/kpi-org-scope/kpi-org-scope-query.ts +127 -0
  254. package/server/service/kpi-org-scope/kpi-org-scope-type.ts +68 -0
  255. package/server/service/kpi-org-scope/kpi-org-scope.ts +123 -0
  256. package/server/service/kpi-statistic/kpi-statistic.ts +10 -0
  257. package/server/service/kpi-value/kpi-value-mutation.ts +73 -7
  258. package/server/service/kpi-value/kpi-value-type.ts +10 -4
  259. package/server/service/kpi-value/kpi-value.ts +10 -5
  260. package/server/service/utils/value-date-util.ts +47 -0
  261. package/server/types/global.d.ts +8 -0
  262. package/things-factory.config.js +1 -0
  263. package/translations/en.json +15 -3
  264. package/translations/ja.json +13 -3
  265. package/translations/ko.json +15 -3
  266. package/translations/ms.json +13 -3
  267. package/translations/zh.json +13 -3
  268. package/client/pages/kpi-category/kpi-category-importer.ts +0 -90
  269. package/client/pages/kpi-category/kpi-category-list-page.ts +0 -537
  270. package/client/pages/kpi-category/kpi-category-value-calculator.ts +0 -233
  271. package/client/pages/kpi-category-value/kpi-category-value-list-page.ts +0 -404
  272. package/dist-client/pages/kpi-category/kpi-category-importer.d.ts +0 -23
  273. package/dist-client/pages/kpi-category/kpi-category-importer.js +0 -92
  274. package/dist-client/pages/kpi-category/kpi-category-importer.js.map +0 -1
  275. package/dist-client/pages/kpi-category/kpi-category-list-page.d.ts +0 -74
  276. package/dist-client/pages/kpi-category/kpi-category-list-page.js +0 -517
  277. package/dist-client/pages/kpi-category/kpi-category-list-page.js.map +0 -1
  278. package/dist-client/pages/kpi-category/kpi-category-value-calculator.d.ts +0 -13
  279. package/dist-client/pages/kpi-category/kpi-category-value-calculator.js +0 -256
  280. package/dist-client/pages/kpi-category/kpi-category-value-calculator.js.map +0 -1
  281. package/dist-client/pages/kpi-category-value/kpi-category-value-list-page.d.ts +0 -63
  282. package/dist-client/pages/kpi-category-value/kpi-category-value-list-page.js +0 -393
  283. package/dist-client/pages/kpi-category-value/kpi-category-value-list-page.js.map +0 -1
  284. package/dist-server/service/kpi-category/index.d.ts +0 -6
  285. package/dist-server/service/kpi-category/index.js +0 -10
  286. package/dist-server/service/kpi-category/index.js.map +0 -1
  287. package/dist-server/service/kpi-category/kpi-category-mutation.d.ts +0 -9
  288. package/dist-server/service/kpi-category/kpi-category-mutation.js +0 -221
  289. package/dist-server/service/kpi-category/kpi-category-mutation.js.map +0 -1
  290. package/dist-server/service/kpi-category/kpi-category-query.d.ts +0 -18
  291. package/dist-server/service/kpi-category/kpi-category-query.js +0 -115
  292. package/dist-server/service/kpi-category/kpi-category-query.js.map +0 -1
  293. package/dist-server/service/kpi-category/kpi-category-type.d.ts +0 -24
  294. package/dist-server/service/kpi-category/kpi-category-type.js +0 -100
  295. package/dist-server/service/kpi-category/kpi-category-type.js.map +0 -1
  296. package/dist-server/service/kpi-category/kpi-category.d.ts +0 -22
  297. package/dist-server/service/kpi-category/kpi-category.js +0 -106
  298. package/dist-server/service/kpi-category/kpi-category.js.map +0 -1
  299. package/dist-server/service/kpi-category-value/index.d.ts +0 -6
  300. package/dist-server/service/kpi-category-value/index.js +0 -10
  301. package/dist-server/service/kpi-category-value/index.js.map +0 -1
  302. package/dist-server/service/kpi-category-value/kpi-category-value-mutation.d.ts +0 -8
  303. package/dist-server/service/kpi-category-value/kpi-category-value-mutation.js +0 -102
  304. package/dist-server/service/kpi-category-value/kpi-category-value-mutation.js.map +0 -1
  305. package/dist-server/service/kpi-category-value/kpi-category-value-query.d.ts +0 -13
  306. package/dist-server/service/kpi-category-value/kpi-category-value-query.js +0 -91
  307. package/dist-server/service/kpi-category-value/kpi-category-value-query.js.map +0 -1
  308. package/dist-server/service/kpi-category-value/kpi-category-value-type.d.ts +0 -19
  309. package/dist-server/service/kpi-category-value/kpi-category-value-type.js +0 -73
  310. package/dist-server/service/kpi-category-value/kpi-category-value-type.js.map +0 -1
  311. package/dist-server/service/kpi-category-value/kpi-category-value.d.ts +0 -19
  312. package/dist-server/service/kpi-category-value/kpi-category-value.js +0 -91
  313. package/dist-server/service/kpi-category-value/kpi-category-value.js.map +0 -1
  314. package/helps/kpi/kpi-category.md +0 -160
  315. package/server/service/kpi-category/index.ts +0 -7
  316. package/server/service/kpi-category/kpi-category-mutation.ts +0 -217
  317. package/server/service/kpi-category/kpi-category-query.ts +0 -87
  318. package/server/service/kpi-category/kpi-category-type.ts +0 -73
  319. package/server/service/kpi-category/kpi-category.ts +0 -95
  320. package/server/service/kpi-category-value/index.ts +0 -7
  321. package/server/service/kpi-category-value/kpi-category-value-mutation.ts +0 -88
  322. package/server/service/kpi-category-value/kpi-category-value-query.ts +0 -62
  323. package/server/service/kpi-category-value/kpi-category-value-type.ts +0 -48
  324. package/server/service/kpi-category-value/kpi-category-value.ts +0 -79
@@ -0,0 +1,132 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm'
2
+ import { Domain, getRepository } from '@things-factory/shell'
3
+ import { KpiOrgScope } from '../service/kpi-org-scope/kpi-org-scope'
4
+ import * as fs from 'fs'
5
+ import * as path from 'path'
6
+
7
+ interface KpiOrgScopeSeedData {
8
+ org: string
9
+ scope01?: string
10
+ scope02?: string
11
+ scope03?: string
12
+ scope04?: string
13
+ scope05?: string
14
+ name?: string
15
+ entityType?: string
16
+ entityId?: string
17
+ entityName?: string
18
+ }
19
+
20
+ export class SeedKpiOrgScope1752192090128 implements MigrationInterface {
21
+ name = 'SeedKpiOrgScope1752192090128'
22
+
23
+ public async up(queryRunner: QueryRunner): Promise<void> {
24
+ try {
25
+ const repository = getRepository(KpiOrgScope)
26
+ const domainRepository = getRepository(Domain)
27
+
28
+ // SYSTEM 도메인 확인
29
+ const domain: Domain = await domainRepository.findOneBy({ name: 'SYSTEM' })
30
+ if (!domain) {
31
+ console.log('❌ SYSTEM domain not found')
32
+ return
33
+ }
34
+
35
+ // JSON 파일 읽기
36
+ const seedFilePath = path.join(__dirname, 'seed-data', 'kpi-org-scope-seed.json')
37
+ const seedData: KpiOrgScopeSeedData[] = JSON.parse(fs.readFileSync(seedFilePath, 'utf8'))
38
+
39
+ console.log(`🏗️ Processing ${seedData.length} KPI org-scope mappings from JSON seed`)
40
+
41
+ for (const orgScopeData of seedData) {
42
+ try {
43
+ // entityType과 entityId가 있으면 사용, 없으면 기본값 설정
44
+ const entityType = orgScopeData.entityType || 'Project'
45
+ const entityId = orgScopeData.entityId || `project-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
46
+ const entityName = orgScopeData.entityName || orgScopeData.name || orgScopeData.org
47
+
48
+ const existingOrgScope = await repository.findOne({
49
+ where: {
50
+ entityType,
51
+ entityId,
52
+ domain: { id: domain.id }
53
+ }
54
+ })
55
+
56
+ if (existingOrgScope) {
57
+ console.log(`⚠️ KPI Org-Scope already exists: ${orgScopeData.org}`)
58
+ continue
59
+ }
60
+
61
+ const orgScope = await repository.save({
62
+ entityType,
63
+ entityId,
64
+ entityName,
65
+ org: orgScopeData.org, // legacy field
66
+ scope01: orgScopeData.scope01,
67
+ scope02: orgScopeData.scope02,
68
+ scope03: orgScopeData.scope03,
69
+ scope04: orgScopeData.scope04,
70
+ scope05: orgScopeData.scope05,
71
+ domain
72
+ })
73
+
74
+ console.log(`✅ Created KPI Org-Scope: ${orgScope.entityName} [${orgScope.entityType}:${orgScope.entityId}] (${orgScope.scope01})`)
75
+ } catch (error) {
76
+ console.error(`❌ Error creating KPI Org-Scope "${orgScopeData.org}":`, error)
77
+ }
78
+ }
79
+
80
+ console.log(`🎉 Successfully processed KPI org-scope mappings from JSON seed`)
81
+ } catch (error) {
82
+ console.error('❌ Error seeding KPI org-scope mappings from JSON:', error)
83
+ throw error
84
+ }
85
+ }
86
+
87
+ public async down(queryRunner: QueryRunner): Promise<void> {
88
+ try {
89
+ const repository = getRepository(KpiOrgScope)
90
+ const domainRepository = getRepository(Domain)
91
+
92
+ const domain: Domain = await domainRepository.findOneBy({ name: 'SYSTEM' })
93
+ if (!domain) {
94
+ console.log('⚠️ SYSTEM domain not found. Nothing to delete.')
95
+ return
96
+ }
97
+
98
+ // JSON 파일 읽기
99
+ const seedFilePath = path.join(__dirname, 'seed-data', 'kpi-org-scope-seed.json')
100
+ const seedData: KpiOrgScopeSeedData[] = JSON.parse(fs.readFileSync(seedFilePath, 'utf8'))
101
+
102
+ console.log(`🗑️ Cleaning up ${seedData.length} KPI org-scope mappings`)
103
+
104
+ for (const orgScopeData of seedData.reverse()) {
105
+ try {
106
+ const entityType = orgScopeData.entityType || 'Project'
107
+ const entityId = orgScopeData.entityId || `project-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
108
+
109
+ const orgScope = await repository.findOne({
110
+ where: {
111
+ entityType,
112
+ entityId,
113
+ domain: { id: domain.id }
114
+ }
115
+ })
116
+
117
+ if (orgScope) {
118
+ await repository.delete(orgScope.id)
119
+ console.log(`✅ Deleted KPI Org-Scope: ${orgScopeData.org}`)
120
+ }
121
+ } catch (error) {
122
+ console.error(`❌ Error deleting KPI Org-Scope "${orgScopeData.org}":`, error)
123
+ }
124
+ }
125
+
126
+ console.log(`🎉 Successfully cleaned up KPI org-scope mappings`)
127
+ } catch (error) {
128
+ console.error('❌ Error cleaning up KPI org-scope mappings:', error)
129
+ throw error
130
+ }
131
+ }
132
+ }
@@ -0,0 +1,207 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm'
2
+ import { Domain, getRepository } from '@things-factory/shell'
3
+ import { KpiValue, KpiValueInputType } from '../service/kpi-value/kpi-value'
4
+ import { Kpi, KpiPeriodType } from '../service/kpi/kpi'
5
+ import { KpiOrgScope } from '../service/kpi-org-scope/kpi-org-scope'
6
+ import * as fs from 'fs'
7
+ import * as path from 'path'
8
+
9
+ interface KpiValueSeedData {
10
+ kpi_name: string
11
+ org: string
12
+ value_date: string
13
+ value: number
14
+ score?: number
15
+ period_type: string
16
+ input_type?: string
17
+ source?: string
18
+ }
19
+
20
+ export class SeedKpiValues1752192090129 implements MigrationInterface {
21
+ name = 'SeedKpiValues1752192090129'
22
+
23
+ public async up(queryRunner: QueryRunner): Promise<void> {
24
+ try {
25
+ const repository = getRepository(KpiValue)
26
+ const domainRepository = getRepository(Domain)
27
+ const kpiRepository = getRepository(Kpi)
28
+ const kpiOrgScopeRepository = getRepository(KpiOrgScope)
29
+
30
+ // SYSTEM 도메인 확인
31
+ const domain: Domain = await domainRepository.findOneBy({ name: 'SYSTEM' })
32
+ if (!domain) {
33
+ console.log('❌ SYSTEM domain not found')
34
+ return
35
+ }
36
+
37
+ // JSON 파일 읽기
38
+ const seedFilePath = path.join(__dirname, 'seed-data', 'kpi-values-seed.json')
39
+ const seedData: KpiValueSeedData[] = JSON.parse(fs.readFileSync(seedFilePath, 'utf8'))
40
+
41
+ console.log(`📊 Processing ${seedData.length} KPI values from JSON seed`)
42
+
43
+ // 모든 KPI 미리 로드 (성능 최적화)
44
+ const kpis = await kpiRepository.find({
45
+ where: { domain: { id: domain.id } }
46
+ })
47
+ const kpiMap = new Map<string, Kpi>()
48
+ kpis.forEach(kpi => kpiMap.set(kpi.name, kpi))
49
+
50
+ // 모든 KpiOrgScope 미리 로드 (성능 최적화)
51
+ const kpiOrgScopes = await kpiOrgScopeRepository.find({
52
+ where: { domain: { id: domain.id } }
53
+ })
54
+ const kpiOrgScopeMap = new Map<string, KpiOrgScope>()
55
+ kpiOrgScopes.forEach(scope => {
56
+ // org 필드(legacy)와 entityName 둘 다 키로 사용
57
+ if (scope.org) kpiOrgScopeMap.set(scope.org, scope)
58
+ if (scope.entityName) kpiOrgScopeMap.set(scope.entityName, scope)
59
+ })
60
+
61
+ for (const valueData of seedData) {
62
+ try {
63
+ const kpi = kpiMap.get(valueData.kpi_name)
64
+ if (!kpi) {
65
+ console.log(`⚠️ KPI not found: ${valueData.kpi_name}`)
66
+ continue
67
+ }
68
+
69
+ const kpiOrgScope = kpiOrgScopeMap.get(valueData.org)
70
+ if (!kpiOrgScope) {
71
+ console.log(`⚠️ KpiOrgScope not found: ${valueData.org}`)
72
+ continue
73
+ }
74
+
75
+ // 기존 값 확인
76
+ const existingValue = await repository.findOne({
77
+ where: {
78
+ kpi: { id: kpi.id },
79
+ kpiOrgScope: { id: kpiOrgScope.id },
80
+ valueDate: valueData.value_date,
81
+ domain: { id: domain.id }
82
+ }
83
+ })
84
+
85
+ if (existingValue) {
86
+ console.log(`⚠️ KPI Value already exists: ${valueData.kpi_name} - ${valueData.org}`)
87
+ continue
88
+ }
89
+
90
+ // KpiValueInputType 변환
91
+ let inputType: KpiValueInputType | undefined
92
+ if (valueData.input_type === 'MANUAL') {
93
+ inputType = KpiValueInputType.MANUAL
94
+ } else if (valueData.input_type === 'AUTO') {
95
+ inputType = KpiValueInputType.AUTO
96
+ }
97
+
98
+ // KpiPeriodType 변환
99
+ let periodType: KpiPeriodType = KpiPeriodType.DAY
100
+ if (valueData.period_type === 'MONTH') {
101
+ periodType = KpiPeriodType.MONTH
102
+ } else if (valueData.period_type === 'QUARTER') {
103
+ periodType = KpiPeriodType.QUARTER
104
+ } else if (valueData.period_type === 'YEAR') {
105
+ periodType = KpiPeriodType.YEAR
106
+ }
107
+
108
+ const kpiValue = await repository.save({
109
+ kpi,
110
+ kpiOrgScope,
111
+ valueDate: valueData.value_date,
112
+ value: valueData.value,
113
+ score: valueData.score,
114
+ periodType,
115
+ inputType,
116
+ source: valueData.source,
117
+ version: kpi.version || 1,
118
+ domain
119
+ })
120
+
121
+ console.log(`✅ Created KPI Value: ${valueData.kpi_name} - ${valueData.org} = ${valueData.value}`)
122
+ } catch (error) {
123
+ console.error(`❌ Error creating KPI Value "${valueData.kpi_name} - ${valueData.org}":`, error)
124
+ }
125
+ }
126
+
127
+ console.log(`🎉 Successfully processed KPI values from JSON seed`)
128
+ } catch (error) {
129
+ console.error('❌ Error seeding KPI values from JSON:', error)
130
+ throw error
131
+ }
132
+ }
133
+
134
+ public async down(queryRunner: QueryRunner): Promise<void> {
135
+ try {
136
+ const repository = getRepository(KpiValue)
137
+ const domainRepository = getRepository(Domain)
138
+ const kpiRepository = getRepository(Kpi)
139
+ const kpiOrgScopeRepository = getRepository(KpiOrgScope)
140
+
141
+ const domain: Domain = await domainRepository.findOneBy({ name: 'SYSTEM' })
142
+ if (!domain) {
143
+ console.log('⚠️ SYSTEM domain not found. Nothing to delete.')
144
+ return
145
+ }
146
+
147
+ // JSON 파일 읽기
148
+ const seedFilePath = path.join(__dirname, 'seed-data', 'kpi-values-seed.json')
149
+ const seedData: KpiValueSeedData[] = JSON.parse(fs.readFileSync(seedFilePath, 'utf8'))
150
+
151
+ console.log(`🗑️ Cleaning up ${seedData.length} KPI values`)
152
+
153
+ // 모든 KPI 미리 로드
154
+ const kpis = await kpiRepository.find({
155
+ where: { domain: { id: domain.id } }
156
+ })
157
+ const kpiMap = new Map<string, Kpi>()
158
+ kpis.forEach(kpi => kpiMap.set(kpi.name, kpi))
159
+
160
+ // 모든 KpiOrgScope 미리 로드
161
+ const kpiOrgScopes = await kpiOrgScopeRepository.find({
162
+ where: { domain: { id: domain.id } }
163
+ })
164
+ const kpiOrgScopeMap = new Map<string, KpiOrgScope>()
165
+ kpiOrgScopes.forEach(scope => {
166
+ // org 필드(legacy)와 entityName 둘 다 키로 사용
167
+ if (scope.org) kpiOrgScopeMap.set(scope.org, scope)
168
+ if (scope.entityName) kpiOrgScopeMap.set(scope.entityName, scope)
169
+ })
170
+
171
+ for (const valueData of seedData.reverse()) {
172
+ try {
173
+ const kpi = kpiMap.get(valueData.kpi_name)
174
+ if (!kpi) {
175
+ continue
176
+ }
177
+
178
+ const kpiOrgScope = kpiOrgScopeMap.get(valueData.org)
179
+ if (!kpiOrgScope) {
180
+ continue
181
+ }
182
+
183
+ const kpiValue = await repository.findOne({
184
+ where: {
185
+ kpi: { id: kpi.id },
186
+ kpiOrgScope: { id: kpiOrgScope.id },
187
+ valueDate: valueData.value_date,
188
+ domain: { id: domain.id }
189
+ }
190
+ })
191
+
192
+ if (kpiValue) {
193
+ await repository.delete(kpiValue.id)
194
+ console.log(`✅ Deleted KPI Value: ${valueData.kpi_name} - ${valueData.org}`)
195
+ }
196
+ } catch (error) {
197
+ console.error(`❌ Error deleting KPI Value "${valueData.kpi_name} - ${valueData.org}":`, error)
198
+ }
199
+ }
200
+
201
+ console.log(`🎉 Successfully cleaned up KPI values`)
202
+ } catch (error) {
203
+ console.error('❌ Error cleaning up KPI values:', error)
204
+ throw error
205
+ }
206
+ }
207
+ }