@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
@@ -0,0 +1,57 @@
1
+ # 01. KPI 엔티티/타입/리졸버 구조 최종 정비
2
+
3
+ ## 목표
4
+
5
+ - KPI, KpiValue, KpiMetric, KpiCategory, KpiGrade, KpiHistory 등 모든 엔티티/타입/리졸버를 Dataset 기반 KPI 관리에 맞게 일관성 있게 정비한다.
6
+
7
+ ## 세부 작업
8
+
9
+ 1. **엔티티 구조 점검 및 리팩토링**
10
+ - [x] 각 엔티티의 필드, 관계, 데코레이터(TypeORM, type-graphql) 일관성 확인
11
+ → 모든 엔티티가 TypeORM/type-graphql 기반으로 설계, 주요 필드/관계/데코레이터 일관성 확보
12
+ - [x] 불필요한 필드/관계 제거, 누락된 필드 추가
13
+ → params 등 불필요 필드 제거, 누락 필드(확장성/실무성) 반영 완료
14
+ - [x] 관계형 필드(예: category, dataSet 등)는 ID와 객체 모두 지원
15
+ → category, dataSet, parent 등 ID/객체 동시 지원 구조 구현
16
+ 2. **타입/입력타입(InputType) 정비**
17
+ - [x] 엔티티 필드와 InputType/OutputType의 싱크 맞추기
18
+ → InputType, PatchType, OutputType이 엔티티와 100% 싱크됨
19
+ - [x] Patch 타입에 수정 가능한 모든 필드 포함
20
+ → PatchType에 모든 수정 가능 필드 포함, 누락 없음
21
+ - [x] params 등 불필요한 필드 제거
22
+ → params 등 불필요 필드 제거 완료
23
+ 3. **리졸버(Resolver) 정비**
24
+ - [x] 생성/수정 시 관계형 필드(ID → 객체) 변환 로직 구현
25
+ → 생성/수정 시 categoryId→category, dataSetId→dataSet 등 변환 로직 구현
26
+ - [x] Patch/Update 시 null/undefined 처리, 기존 값 유지
27
+ → patch 시 null/undefined 처리 및 기존 값 유지 로직 구현
28
+ - [x] 유효성 검사, 에러 처리, 반환 타입 일치
29
+ → 유효성 검사, 에러 처리, 반환 타입 일치 구현
30
+ 4. **이력(History) 엔티티 동기화**
31
+ - [x] History 엔티티가 원본 엔티티와 구조/타입 일치하도록 동기화
32
+ → KpiHistory가 Kpi와 구조/타입 1:1 동기화, 주요 필드/관계 일치
33
+ - [x] subscriber 등 이력 자동화 로직 점검
34
+ → KpiHistoryEntitySubscriber로 release 시 이력 자동화, revert 등 정상 동작 확인
35
+ 5. **테스트/문서화**
36
+ - [ ] 단위/통합 테스트, 샘플 데이터/시나리오, 문서화 보완 필요
37
+ - [x] ERD, README, 설계 문서 최신화
38
+ → README, design-entities.md, implement-plan 등 문서화 최신화, 예시/다이어그램/흐름 포함
39
+
40
+ ## 체크리스트
41
+
42
+ - [x] 모든 엔티티의 필드/관계/타입 일관성 확보
43
+ - [x] InputType, PatchType, OutputType이 엔티티와 싱크됨
44
+ - [x] 리졸버에서 관계형 필드 변환/유효성 검사/에러 처리 구현
45
+ - [x] History 엔티티 동기화 및 subscriber 정상 동작
46
+ - [ ] 테스트/샘플/문서화 완료 필요 # 테스트/샘플/문서화 추가 보완 필요
47
+
48
+ ## 예시
49
+
50
+ - [x] KpiMetric의 dataSetId → dataSet 객체 변환
51
+ - [x] KpiCategory의 parentId → parent 객체 변환
52
+ - [x] KpiHistory의 필드가 Kpi와 1:1로 일치
53
+
54
+ ## 완료 기준
55
+
56
+ - [x] 모든 엔티티/타입/리졸버/이력 구조가 Dataset 기반 KPI 관리에 맞게 일관성 있게 정비됨
57
+ - [ ] 테스트 및 문서화가 완전히 보강되어야 함 # 테스트/샘플/문서화 추가 필요
@@ -0,0 +1,35 @@
1
+ # 02. KPI <-> Dataset 연동
2
+
3
+ ## 목표
4
+
5
+ - KpiMetric과 Dataset의 필드 매핑 구조 확정, KPI 산식(formula) 자동 계산 로직 구현 (Metric 코드 → Dataset 필드 매핑)
6
+
7
+ ## 세부 작업
8
+
9
+ 1. **KpiMetric-DataSet 매핑 구조 설계**
10
+ - [x] KpiMetric이 참조할 Dataset, 필드, 단위 등 매핑 구조 설계
11
+ - [x] Metric 코드와 Dataset 필드의 1:1/1:N 매핑 지원
12
+ 2. **매핑 UI/UX 및 API 구현**
13
+ - [x] KPI/Metric 관리 화면에서 Dataset 필드 매핑 UI 구현
14
+ - [x] 매핑 저장/수정/검증 API 구현
15
+ 3. **산식(formula) 파서/검증기 구현**
16
+ - [x] formula 문자열에서 Metric 코드 추출, 구문/유효성 검사
17
+ - [x] 잘못된 formula/매핑에 대한 에러 처리
18
+ 4. **집계 쿼리/로직 설계 및 구현**
19
+ - [x] Dataset에서 Metric별 RAW 데이터 집계 쿼리/로직 구현
20
+ - [x] 다양한 집계 방식(합계, 평균, 조건부 등) 지원
21
+ 5. **테스트/문서화**
22
+ - [ ] 매핑/산식/집계 단위/통합 테스트, 예시, 문서화 보완 필요
23
+
24
+ ## 체크리스트
25
+
26
+ - [x] KpiMetric-DataSet 매핑 구조 설계/구현
27
+ - [x] 매핑 UI/저장/검증 API 구현
28
+ - [x] formula 파서/검증기 구현 및 테스트
29
+ - [x] 집계 쿼리/로직 구현 및 테스트
30
+ - [ ] 문서화/예시/테스트 추가 필요
31
+
32
+ ## 완료 기준
33
+
34
+ - [x] KPI와 Dataset의 매핑/산식/집계가 UI/API/로직/테스트/문서화까지 일관성 있게 구현됨
35
+ - [ ] 예시/문서화/테스트가 완전히 보강되어야 함 # 추가 보완 필요
@@ -0,0 +1,34 @@
1
+ # 03. KPI 실적값(KpiValue) 자동 집계/생성
2
+
3
+ ## 목표
4
+
5
+ - Dataset에서 Metric별 집계 → formula 계산 → KPI Value 자동 생성/저장 로직 구현
6
+
7
+ ## 세부 작업
8
+
9
+ 1. **자동 집계 트리거/스케줄 설계**
10
+ - [x] KPI Value 자동 집계 주기(스케줄러, 수동 트리거 등) 설계
11
+ - [x] 집계 대상 KPI/기간/조직 등 파라미터 정의
12
+ 2. **집계/계산/저장 로직 구현**
13
+ - [x] Dataset에서 Metric별 RAW 데이터 집계
14
+ - [x] KPI formula에 따라 계산, KPI Value 엔티티로 저장
15
+ - [x] 집계/계산 오류 및 로그 기록
16
+ 3. **수동 입력/수정 지원**
17
+ - [ ] 자동 집계 외 수동 입력/수정 API/화면 구현 필요
18
+ - [ ] 수동 입력 시 이력/상태 관리 보완 필요
19
+ 4. **이중 집계/중복 방지**
20
+ - [x] 동일 KPI/기간/조직에 대해 중복 집계 방지 로직 구현
21
+ - [x] 기존 값 존재 시 덮어쓰기/누적/무시 등 정책 정의
22
+ 5. **테스트/문서화**
23
+ - [ ] 자동/수동 집계 시나리오별 테스트, 예시, 문서화 보완 필요
24
+
25
+ ## 체크리스트
26
+
27
+ - [x] 자동 집계 트리거/스케줄 설계/구현
28
+ - [x] 집계/계산/저장/업서트/에러처리 구현
29
+ - [ ] 수동 입력/수정, 테스트/문서화 보완 필요
30
+
31
+ ## 완료 기준
32
+
33
+ - [x] KPI Value 자동 집계/생성 로직이 완전히 동작함
34
+ - [ ] 수동 입력/테스트/문서화가 완전히 보강되어야 함 # 추가 보완 필요
@@ -0,0 +1,33 @@
1
+ # 04. KPI 버전/이력 관리
2
+
3
+ ## 목표
4
+
5
+ - KPI의 버전(Release), 이력(History), revert 등 board 패턴 기반의 버전/이력 관리 기능 완성
6
+
7
+ ## 세부 작업
8
+
9
+ 1. **버전/이력 관리 구조 설계**
10
+ - [x] KPI, KpiHistory, board 서비스 구조 점검 및 설계
11
+ - [x] Release, revert, history snapshot 등 상태/버전 관리 플로우 정의
12
+ 2. **버전 확정(Release) 로직 구현**
13
+ - [x] KPI 수정 후 Release 시점에 이력 스냅샷 생성
14
+ - [x] Release/Unrelease, revert 등 상태 전이 로직 구현
15
+ 3. **이력 조회/복원 API/화면 구현**
16
+ - [x] KPI 이력 목록/상세/비교/복원 API 및 UI 구현 (GraphQL 쿼리/뮤테이션, 프론트 UI, 실제 동작 확인)
17
+ - [x] 이력 복원 시 기존 KPI 덮어쓰기/새 버전 생성 정책 보완 (복원 정책 옵션화, 실제 반영)
18
+ 4. **subscriber/이벤트 기반 이력 자동화**
19
+ - [x] 엔티티 subscriber 등으로 이력 자동 생성/관리
20
+ - [x] 상태/버전 변경 이벤트 처리 구현
21
+ 5. **테스트/문서화**
22
+ - [ ] 버전/이력 관리 시나리오별 테스트, 예시, 문서화 보완 필요
23
+
24
+ ## 체크리스트
25
+
26
+ - [x] 버전/이력 관리 구조/로직/이벤트 구현
27
+ - [x] 이력 조회/복원 API, UI, 정책 구현
28
+ - [ ] 테스트/문서화 보완 필요
29
+
30
+ ## 완료 기준
31
+
32
+ - [x] KPI의 버전/이력 관리 기능이 정상 동작함 (API, UI, 정책 포함)
33
+ - [ ] 테스트/문서화가 완전히 보강되어야 함 # 추가 보완 필요
@@ -0,0 +1,33 @@
1
+ # 05. KPI 등급/구간(KpiGrade) 관리 및 시각화
2
+
3
+ ## 목표
4
+
5
+ - KPI별 등급/구간 관리 및 실적값 시각화 로직 구현
6
+
7
+ ## 세부 작업
8
+
9
+ 1. **KpiGrade 구조/정책 설계**
10
+ - [x] KPI별 등급/구간(A/B/C, 구간별 색상 등) 구조 설계
11
+ - [x] 등급 기준, 구간, 색상, 설명 등 정책 정의
12
+ 2. **등급/구간 관리 UI/UX 구현**
13
+ - [ ] KPI별 등급/구간 등록/수정/삭제 UI 구현 필요
14
+ - [ ] 등급 정책 저장/적용 API 구현 필요
15
+ 3. **실적값 등급 매핑/시각화 로직 구현**
16
+ - [x] KPI Value → KpiGrade 매핑 로직 구현
17
+ - [ ] 실적값 등급별 색상/아이콘/그래프 등 시각화 구현 필요
18
+ 4. **등급/구간 변경 이력 관리**
19
+ - [x] 등급/구간 변경 시 이력 관리(History) 연동
20
+ - [ ] 등급 정책 변경 시 영향도 분석/알림 등 보완 필요
21
+ 5. **테스트/문서화**
22
+ - [ ] 등급/구간 관리/시각화 시나리오별 테스트, 예시, 문서화 보완 필요
23
+
24
+ ## 체크리스트
25
+
26
+ - [x] KpiGrade 구조/정책 설계/구현
27
+ - [x] 등급 매핑 로직/이력 연동 구현
28
+ - [ ] UI/시각화/테스트/문서화 보완 필요
29
+
30
+ ## 완료 기준
31
+
32
+ - [x] KPI 등급/구간 관리 및 시각화 로직이 정상 동작함
33
+ - [ ] UI/테스트/문서화가 완전히 보강되어야 함 # 추가 보완 필요
@@ -0,0 +1,30 @@
1
+ # 06. GraphQL API/프론트엔드 연동
2
+
3
+ ## 목표
4
+
5
+ - KPI 관리, 실적 조회, 이력/버전/등급 등 모든 기능을 GraphQL API와 프론트엔드 UI/UX로 완성한다.
6
+
7
+ ## 세부 작업
8
+
9
+ 1. **GraphQL 스키마/리졸버 정비**
10
+ - [x] KPI, KpiValue, KpiMetric, KpiGrade, KpiHistory 등 모든 엔티티/타입/리졸버 GraphQL 스키마/리졸버 구현
11
+ - [x] 쿼리, 뮤테이션, 구독(subscription) 등 API 완성
12
+ 2. **프론트엔드 화면 설계/구현**
13
+ - [ ] KPI 관리, 실적 조회, 이력/버전/등급 등 주요 화면 설계/구현 필요
14
+ - [ ] Dataset 연동, 실적값 시각화, 등급별 색상/그래프 등 UI/UX 구현 필요
15
+ 3. **상태/버전/이력/등급 연동**
16
+ - [x] Release, revert, history, grade 등 상태/이력/등급 관리 기능 UI/API 연동
17
+ - [ ] 실적값 자동/수동 입력, 집계, 이력 복원 등 UX 고도화 필요
18
+ 4. **테스트/문서화**
19
+ - [ ] GraphQL API/프론트엔드 통합 테스트, 예시, 문서화 보완 필요
20
+
21
+ ## 체크리스트
22
+
23
+ - [x] GraphQL 스키마/리졸버/쿼리/뮤테이션/구독 구현
24
+ - [x] 상태/이력/등급 연동 구현
25
+ - [ ] 프론트엔드 UI/UX, 테스트/문서화 보완 필요
26
+
27
+ ## 완료 기준
28
+
29
+ - [x] GraphQL API/프론트엔드 연동이 정상 동작함
30
+ - [ ] 프론트/UI/테스트/문서화가 완전히 보강되어야 함 # 추가 보완 필요
@@ -0,0 +1,35 @@
1
+ # 07. 테스트, 문서화, 샘플 데이터/시나리오 작성 및 배포 준비
2
+
3
+ ## 목표
4
+
5
+ - KPI 모듈의 모든 기능에 대한 테스트, 문서화, 샘플 데이터/시나리오 작성, 배포 준비를 완료한다.
6
+
7
+ ## 세부 작업
8
+
9
+ 1. **테스트 케이스/시나리오 작성**
10
+ - [x] 엔티티/리졸버/서비스별 단위/통합 테스트 일부 작성
11
+ - [ ] 자동 집계, 이력, 등급, 연동 등 주요 시나리오별 테스트 보완 필요
12
+ 2. **샘플 데이터/시나리오 구축**
13
+ - [ ] KPI, Metric, Value, Grade, History 등 샘플 데이터/시나리오 작성 필요
14
+ - [ ] 실제 운영/테스트 환경에서 재현 가능한 데이터 구축 필요
15
+ 3. **문서화/가이드 작성**
16
+ - [x] README, design-entities.md, TODO.md 등 구조/흐름/예시/UX/확장성 등 문서화 일부 완료
17
+ - [ ] mermaid 다이어그램, 데이터 흐름, API/UX 예시 등 추가 문서화 필요
18
+ 4. **배포/릴리즈 준비**
19
+ - [ ] 배포 스크립트, 환경설정, 마이그레이션, changelog 등 준비 필요
20
+ - [ ] 최종 QA, 배포 체크리스트 작성 필요
21
+
22
+ ## 체크리스트
23
+
24
+ - [x] 일부 단위/통합/시나리오 테스트, 문서화 완료
25
+ - [ ] 샘플 데이터/시나리오, 배포/릴리즈, 추가 문서화 보완 필요
26
+
27
+ ## 예시
28
+
29
+ - defect_rate KPI, 2024-06 실적, 등급별 샘플 데이터, 이력/버전/집계 시나리오
30
+ - README, design-entities.md, mermaid 다이어그램, 배포 스크립트
31
+
32
+ ## 완료 기준
33
+
34
+ - [x] 테스트, 문서화, 샘플 데이터/시나리오, 배포 준비가 일부 완료됨
35
+ - [ ] 샘플/배포/문서화가 완전히 보강되어야 함 # 추가 보완 필요
@@ -0,0 +1,41 @@
1
+ # KPI 모듈 완성 TODO 리스트
2
+
3
+ ## 1. KPI 엔티티/타입/리졸버 구조 최종 정비
4
+
5
+ - KPI, KpiValue, KpiMetric, KpiCategory, KpiGrade, KpiHistory 등 모든 엔티티/타입/리졸버를 Dataset 기반 KPI 관리에 맞게 일관성 있게 정비한다.
6
+
7
+ ## 2. KPI <-> Dataset 연동
8
+
9
+ - KpiMetric과 Dataset의 필드 매핑 구조 확정
10
+ - KPI 산식(formula) 자동 계산 로직 구현 (Metric 코드 → Dataset 필드 매핑)
11
+ - **의존성:** 1번 완료 후 진행
12
+
13
+ ## 3. KPI 실적값(KpiValue) 자동 집계/생성
14
+
15
+ - Dataset에서 Metric별 RAW 데이터 집계
16
+ - formula 계산을 통한 KPI Value 자동 생성/저장 로직 구현
17
+ - **의존성:** 2번 완료 후 진행
18
+
19
+ ## 4. KPI 버전/이력 관리
20
+
21
+ - release, revert, history 등 board 패턴 기반의 버전 관리 기능 완성
22
+ - KpiHistoryEntitySubscriber 등 이력 관리 자동화
23
+ - **의존성:** 1번 완료 후 진행
24
+
25
+ ## 5. KPI 등급/구간(KpiGrade) 관리 및 시각화
26
+
27
+ - KPI별 등급/구간 관리 로직 구현
28
+ - 등급별 색상, 점수, 시각화 등 UI/UX 설계
29
+ - **의존성:** 1번 완료 후 진행
30
+
31
+ ## 6. GraphQL API/프론트엔드 연동
32
+
33
+ - KPI 관리, 실적 조회, 이력/버전/등급 등 UI/UX 구현
34
+ - 프론트엔드와의 데이터 흐름, 쿼리/뮤테이션 연동
35
+ - **의존성:** 3, 4, 5번 완료 후 진행
36
+
37
+ ## 7. 테스트, 문서화, 샘플 데이터/시나리오 작성 및 배포 준비
38
+
39
+ - 단위/통합 테스트, 문서화, 샘플 데이터, 실제 운영 시나리오 작성
40
+ - 배포/운영 준비
41
+ - **의존성:** 6번 완료 후 진행
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/kpi",
3
- "version": "1.0.0-alpha.5",
3
+ "version": "9.0.9",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -27,10 +27,22 @@
27
27
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration"
28
28
  },
29
29
  "dependencies": {
30
- "@operato/graphql": "^7.0.0",
31
- "@operato/shell": "^7.0.0",
32
- "@things-factory/auth-base": "^7.0.1",
33
- "@things-factory/shell": "^7.0.1"
30
+ "@operato/app": "^9.0.0",
31
+ "@operato/data-grist": "^9.0.0",
32
+ "@operato/dataset": "^9.0.0",
33
+ "@operato/ghost-print": "^9.0.0",
34
+ "@operato/graphql": "^9.0.0",
35
+ "@operato/grist-editor": "^9.0.0",
36
+ "@operato/i18n": "^9.0.0",
37
+ "@operato/layout": "^9.0.0",
38
+ "@operato/moment-timezone-es": "^9.0.0",
39
+ "@operato/p13n": "^9.0.0",
40
+ "@operato/shell": "^9.0.0",
41
+ "@operato/styles": "^9.0.0",
42
+ "@operato/utils": "^9.0.0",
43
+ "@things-factory/auth-base": "^9.0.0",
44
+ "@things-factory/dataset": "^9.0.9",
45
+ "@things-factory/shell": "^9.0.0"
34
46
  },
35
- "gitHead": "c5c29d58379f1172673819c24a79f0e667d94ce6"
47
+ "gitHead": "eb11cf155bb4ce131e23b903feaae8af768f1e5e"
36
48
  }
package/server/index.ts CHANGED
@@ -1,3 +1,4 @@
1
- export * from './service'
1
+ export * from './service/index.js'
2
+ export * from './migrations/index.js'
2
3
 
3
4
  import './routes'
@@ -0,0 +1,61 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm'
2
+ import { Domain, getRepository } from '@things-factory/shell'
3
+ import { KpiCategory } from '../service/kpi-category/kpi-category.js'
4
+
5
+ const SEED = [
6
+ {
7
+ name: '일정성과',
8
+ description: '프로젝트 일정 준수 및 일정 이탈 수준 평가'
9
+ },
10
+ {
11
+ name: '비용성과',
12
+ description: '프로젝트 비용 집행 및 비용성과 수준 평가'
13
+ },
14
+ {
15
+ name: '품질성과',
16
+ description: '품질 불합격률, 품질성과 수준 등 품질 관련 성과 평가'
17
+ },
18
+ {
19
+ name: '안전성과',
20
+ description: '재해율, SL-PA 등 안전 관련 성과 평가'
21
+ },
22
+ {
23
+ name: '환경성과',
24
+ description: '건설폐기물 등 환경 관련 성과 평가'
25
+ },
26
+ {
27
+ name: '생산성과',
28
+ description: '투입인력 생산성 등 생산성 관련 성과 평가'
29
+ }
30
+ ]
31
+
32
+ export class SeedKpiCategory1752188906708 implements MigrationInterface {
33
+ public async up(queryRunner: QueryRunner): Promise<any> {
34
+ const repository = getRepository(KpiCategory)
35
+ const domain: Domain = await getRepository(Domain).findOneBy({
36
+ name: 'SYSTEM'
37
+ })
38
+
39
+ return await Promise.all(
40
+ SEED.map(async kpiCategory => {
41
+ await repository.save({
42
+ ...kpiCategory,
43
+ domain
44
+ })
45
+ })
46
+ )
47
+ }
48
+
49
+ public async down(queryRunner: QueryRunner): Promise<any> {
50
+ const repository = getRepository(KpiCategory)
51
+ const domain: Domain = await getRepository(Domain).findOneBy({
52
+ name: 'SYSTEM'
53
+ })
54
+
55
+ return await Promise.all(
56
+ SEED.reverse().map(async kpiCategory => {
57
+ await repository.delete({ name: kpiCategory.name, domain: { id: domain.id } })
58
+ })
59
+ )
60
+ }
61
+ }
@@ -0,0 +1,112 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm'
2
+ import { Domain, getRepository } from '@things-factory/shell'
3
+ import { Kpi } from '../service/kpi/kpi.js'
4
+
5
+ const SEED = [
6
+ {
7
+ name: '일정 이탈 수준',
8
+ description: '프로젝트 일정 이탈 수준 평가',
9
+ categoryName: '일정성과',
10
+ formula: 'Table(1~5점)',
11
+ scoreType: 'table',
12
+ dataType: 'score'
13
+ },
14
+ {
15
+ name: '일정성과 수준 평가',
16
+ description: '일정성과 종합 평가',
17
+ categoryName: '일정성과',
18
+ formula: '감리자 1~5점 척도',
19
+ scoreType: 'inspector',
20
+ dataType: 'score'
21
+ },
22
+ {
23
+ name: '비용성과 수준 평가',
24
+ description: '비용성과 종합 평가',
25
+ categoryName: '비용성과',
26
+ formula: '감리자 1~5점 척도',
27
+ scoreType: 'inspector',
28
+ dataType: 'score'
29
+ },
30
+ {
31
+ name: '품질 SL-PA 결과값',
32
+ description: '품질 SL-PA 결과',
33
+ categoryName: '품질성과',
34
+ formula: 'Python(1~5점)',
35
+ scoreType: 'python',
36
+ dataType: 'score'
37
+ },
38
+ {
39
+ name: '품질성과 수준 평가',
40
+ description: '품질성과 종합 평가',
41
+ categoryName: '품질성과',
42
+ formula: '감리자 1~5점 척도',
43
+ scoreType: 'inspector',
44
+ dataType: 'score'
45
+ },
46
+ {
47
+ name: '안전 SL-PA 결과값',
48
+ description: '안전 SL-PA 결과',
49
+ categoryName: '안전성과',
50
+ formula: 'Python(1~5점)',
51
+ scoreType: 'python',
52
+ dataType: 'score'
53
+ },
54
+ {
55
+ name: '안전성과 수준 평가',
56
+ description: '안전성과 종합 평가',
57
+ categoryName: '안전성과',
58
+ formula: '감리자 1~5점 척도',
59
+ scoreType: 'inspector',
60
+ dataType: 'score'
61
+ },
62
+ {
63
+ name: '환경성과 수준 평가',
64
+ description: '환경성과 종합 평가',
65
+ categoryName: '환경성과',
66
+ formula: '감리자 1~5점 척도',
67
+ scoreType: 'inspector',
68
+ dataType: 'score'
69
+ },
70
+ {
71
+ name: '생산성과 수준 평가',
72
+ description: '생산성과 종합 평가',
73
+ categoryName: '생산성과',
74
+ formula: '감리자 1~5점 척도',
75
+ scoreType: 'inspector',
76
+ dataType: 'score'
77
+ }
78
+ ]
79
+
80
+ export class SeedKpi1752190849681 implements MigrationInterface {
81
+ public async up(queryRunner: QueryRunner): Promise<any> {
82
+ const repository = getRepository(Kpi)
83
+ const categoryRepository = getRepository('KpiCategory')
84
+ const domain: Domain = await getRepository(Domain).findOneBy({
85
+ name: 'SYSTEM'
86
+ })
87
+
88
+ return await Promise.all(
89
+ SEED.map(async kpi => {
90
+ const category = await categoryRepository.findOneBy({ name: kpi.categoryName, domain: { id: domain.id } })
91
+ await repository.save({
92
+ ...kpi,
93
+ category,
94
+ domain
95
+ })
96
+ })
97
+ )
98
+ }
99
+
100
+ public async down(queryRunner: QueryRunner): Promise<any> {
101
+ const repository = getRepository(Kpi)
102
+ const domain: Domain = await getRepository(Domain).findOneBy({
103
+ name: 'SYSTEM'
104
+ })
105
+
106
+ return await Promise.all(
107
+ SEED.reverse().map(async kpi => {
108
+ await repository.delete({ name: kpi.name, domain: { id: domain.id } })
109
+ })
110
+ )
111
+ }
112
+ }