@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
@@ -1,2 +1,3 @@
1
- export * from './service';
1
+ export * from './service/index.js';
2
+ export * from './migrations/index.js';
2
3
  import './routes';
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./service"), exports);
4
+ tslib_1.__exportStar(require("./service/index.js"), exports);
5
+ tslib_1.__exportStar(require("./migrations/index.js"), exports);
5
6
  require("./routes");
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AAEzB,oBAAiB","sourcesContent":["export * from './service'\n\nimport './routes'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,6DAAkC;AAClC,gEAAqC;AAErC,oBAAiB","sourcesContent":["export * from './service/index.js'\nexport * from './migrations/index.js'\n\nimport './routes'\n"]}
@@ -0,0 +1,5 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class SeedKpiCategory1752188906708 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<any>;
4
+ down(queryRunner: QueryRunner): Promise<any>;
5
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SeedKpiCategory1752188906708 = void 0;
4
+ const shell_1 = require("@things-factory/shell");
5
+ const kpi_category_js_1 = require("../service/kpi-category/kpi-category.js");
6
+ const SEED = [
7
+ {
8
+ name: '일정성과',
9
+ description: '프로젝트 일정 준수 및 일정 이탈 수준 평가'
10
+ },
11
+ {
12
+ name: '비용성과',
13
+ description: '프로젝트 비용 집행 및 비용성과 수준 평가'
14
+ },
15
+ {
16
+ name: '품질성과',
17
+ description: '품질 불합격률, 품질성과 수준 등 품질 관련 성과 평가'
18
+ },
19
+ {
20
+ name: '안전성과',
21
+ description: '재해율, SL-PA 등 안전 관련 성과 평가'
22
+ },
23
+ {
24
+ name: '환경성과',
25
+ description: '건설폐기물 등 환경 관련 성과 평가'
26
+ },
27
+ {
28
+ name: '생산성과',
29
+ description: '투입인력 생산성 등 생산성 관련 성과 평가'
30
+ }
31
+ ];
32
+ class SeedKpiCategory1752188906708 {
33
+ async up(queryRunner) {
34
+ const repository = (0, shell_1.getRepository)(kpi_category_js_1.KpiCategory);
35
+ const domain = await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({
36
+ name: 'SYSTEM'
37
+ });
38
+ return await Promise.all(SEED.map(async (kpiCategory) => {
39
+ await repository.save({
40
+ ...kpiCategory,
41
+ domain
42
+ });
43
+ }));
44
+ }
45
+ async down(queryRunner) {
46
+ const repository = (0, shell_1.getRepository)(kpi_category_js_1.KpiCategory);
47
+ const domain = await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({
48
+ name: 'SYSTEM'
49
+ });
50
+ return await Promise.all(SEED.reverse().map(async (kpiCategory) => {
51
+ await repository.delete({ name: kpiCategory.name, domain: { id: domain.id } });
52
+ }));
53
+ }
54
+ }
55
+ exports.SeedKpiCategory1752188906708 = SeedKpiCategory1752188906708;
56
+ //# sourceMappingURL=1752188906708-SeedKpiCategory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1752188906708-SeedKpiCategory.js","sourceRoot":"","sources":["../../server/migrations/1752188906708-SeedKpiCategory.ts"],"names":[],"mappings":";;;AACA,iDAA6D;AAC7D,6EAAqE;AAErE,MAAM,IAAI,GAAG;IACX;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,0BAA0B;KACxC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,yBAAyB;KACvC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,0BAA0B;KACxC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,qBAAqB;KACnC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,yBAAyB;KACvC;CACF,CAAA;AAED,MAAa,4BAA4B;IAChC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,6BAAW,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAW,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC;YAC3D,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;YAC3B,MAAM,UAAU,CAAC,IAAI,CAAC;gBACpB,GAAG,WAAW;gBACd,MAAM;aACP,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,6BAAW,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAW,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC;YAC3D,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;YACrC,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAChF,CAAC,CAAC,CACH,CAAA;IACH,CAAC;CACF;AA7BD,oEA6BC","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { KpiCategory } from '../service/kpi-category/kpi-category.js'\n\nconst SEED = [\n {\n name: '일정성과',\n description: '프로젝트 일정 준수 및 일정 이탈 수준 평가'\n },\n {\n name: '비용성과',\n description: '프로젝트 비용 집행 및 비용성과 수준 평가'\n },\n {\n name: '품질성과',\n description: '품질 불합격률, 품질성과 수준 등 품질 관련 성과 평가'\n },\n {\n name: '안전성과',\n description: '재해율, SL-PA 등 안전 관련 성과 평가'\n },\n {\n name: '환경성과',\n description: '건설폐기물 등 환경 관련 성과 평가'\n },\n {\n name: '생산성과',\n description: '투입인력 생산성 등 생산성 관련 성과 평가'\n }\n]\n\nexport class SeedKpiCategory1752188906708 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(KpiCategory)\n const domain: Domain = await getRepository(Domain).findOneBy({\n name: 'SYSTEM'\n })\n\n return await Promise.all(\n SEED.map(async kpiCategory => {\n await repository.save({\n ...kpiCategory,\n domain\n })\n })\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(KpiCategory)\n const domain: Domain = await getRepository(Domain).findOneBy({\n name: 'SYSTEM'\n })\n\n return await Promise.all(\n SEED.reverse().map(async kpiCategory => {\n await repository.delete({ name: kpiCategory.name, domain: { id: domain.id } })\n })\n )\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class SeedKpi1752190849681 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<any>;
4
+ down(queryRunner: QueryRunner): Promise<any>;
5
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SeedKpi1752190849681 = void 0;
4
+ const shell_1 = require("@things-factory/shell");
5
+ const kpi_js_1 = require("../service/kpi/kpi.js");
6
+ const SEED = [
7
+ {
8
+ name: '일정 이탈 수준',
9
+ description: '프로젝트 일정 이탈 수준 평가',
10
+ categoryName: '일정성과',
11
+ formula: 'Table(1~5점)',
12
+ scoreType: 'table',
13
+ dataType: 'score'
14
+ },
15
+ {
16
+ name: '일정성과 수준 평가',
17
+ description: '일정성과 종합 평가',
18
+ categoryName: '일정성과',
19
+ formula: '감리자 1~5점 척도',
20
+ scoreType: 'inspector',
21
+ dataType: 'score'
22
+ },
23
+ {
24
+ name: '비용성과 수준 평가',
25
+ description: '비용성과 종합 평가',
26
+ categoryName: '비용성과',
27
+ formula: '감리자 1~5점 척도',
28
+ scoreType: 'inspector',
29
+ dataType: 'score'
30
+ },
31
+ {
32
+ name: '품질 SL-PA 결과값',
33
+ description: '품질 SL-PA 결과',
34
+ categoryName: '품질성과',
35
+ formula: 'Python(1~5점)',
36
+ scoreType: 'python',
37
+ dataType: 'score'
38
+ },
39
+ {
40
+ name: '품질성과 수준 평가',
41
+ description: '품질성과 종합 평가',
42
+ categoryName: '품질성과',
43
+ formula: '감리자 1~5점 척도',
44
+ scoreType: 'inspector',
45
+ dataType: 'score'
46
+ },
47
+ {
48
+ name: '안전 SL-PA 결과값',
49
+ description: '안전 SL-PA 결과',
50
+ categoryName: '안전성과',
51
+ formula: 'Python(1~5점)',
52
+ scoreType: 'python',
53
+ dataType: 'score'
54
+ },
55
+ {
56
+ name: '안전성과 수준 평가',
57
+ description: '안전성과 종합 평가',
58
+ categoryName: '안전성과',
59
+ formula: '감리자 1~5점 척도',
60
+ scoreType: 'inspector',
61
+ dataType: 'score'
62
+ },
63
+ {
64
+ name: '환경성과 수준 평가',
65
+ description: '환경성과 종합 평가',
66
+ categoryName: '환경성과',
67
+ formula: '감리자 1~5점 척도',
68
+ scoreType: 'inspector',
69
+ dataType: 'score'
70
+ },
71
+ {
72
+ name: '생산성과 수준 평가',
73
+ description: '생산성과 종합 평가',
74
+ categoryName: '생산성과',
75
+ formula: '감리자 1~5점 척도',
76
+ scoreType: 'inspector',
77
+ dataType: 'score'
78
+ }
79
+ ];
80
+ class SeedKpi1752190849681 {
81
+ async up(queryRunner) {
82
+ const repository = (0, shell_1.getRepository)(kpi_js_1.Kpi);
83
+ const categoryRepository = (0, shell_1.getRepository)('KpiCategory');
84
+ const domain = await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({
85
+ name: 'SYSTEM'
86
+ });
87
+ return await Promise.all(SEED.map(async (kpi) => {
88
+ const category = await categoryRepository.findOneBy({ name: kpi.categoryName, domain: { id: domain.id } });
89
+ await repository.save({
90
+ ...kpi,
91
+ category,
92
+ domain
93
+ });
94
+ }));
95
+ }
96
+ async down(queryRunner) {
97
+ const repository = (0, shell_1.getRepository)(kpi_js_1.Kpi);
98
+ const domain = await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({
99
+ name: 'SYSTEM'
100
+ });
101
+ return await Promise.all(SEED.reverse().map(async (kpi) => {
102
+ await repository.delete({ name: kpi.name, domain: { id: domain.id } });
103
+ }));
104
+ }
105
+ }
106
+ exports.SeedKpi1752190849681 = SeedKpi1752190849681;
107
+ //# sourceMappingURL=1752190849681-SeedKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1752190849681-SeedKpi.js","sourceRoot":"","sources":["../../server/migrations/1752190849681-SeedKpi.ts"],"names":[],"mappings":"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","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { Kpi } from '../service/kpi/kpi.js'\n\nconst SEED = [\n {\n name: '일정 이탈 수준',\n description: '프로젝트 일정 이탈 수준 평가',\n categoryName: '일정성과',\n formula: 'Table(1~5점)',\n scoreType: 'table',\n dataType: 'score'\n },\n {\n name: '일정성과 수준 평가',\n description: '일정성과 종합 평가',\n categoryName: '일정성과',\n formula: '감리자 1~5점 척도',\n scoreType: 'inspector',\n dataType: 'score'\n },\n {\n name: '비용성과 수준 평가',\n description: '비용성과 종합 평가',\n categoryName: '비용성과',\n formula: '감리자 1~5점 척도',\n scoreType: 'inspector',\n dataType: 'score'\n },\n {\n name: '품질 SL-PA 결과값',\n description: '품질 SL-PA 결과',\n categoryName: '품질성과',\n formula: 'Python(1~5점)',\n scoreType: 'python',\n dataType: 'score'\n },\n {\n name: '품질성과 수준 평가',\n description: '품질성과 종합 평가',\n categoryName: '품질성과',\n formula: '감리자 1~5점 척도',\n scoreType: 'inspector',\n dataType: 'score'\n },\n {\n name: '안전 SL-PA 결과값',\n description: '안전 SL-PA 결과',\n categoryName: '안전성과',\n formula: 'Python(1~5점)',\n scoreType: 'python',\n dataType: 'score'\n },\n {\n name: '안전성과 수준 평가',\n description: '안전성과 종합 평가',\n categoryName: '안전성과',\n formula: '감리자 1~5점 척도',\n scoreType: 'inspector',\n dataType: 'score'\n },\n {\n name: '환경성과 수준 평가',\n description: '환경성과 종합 평가',\n categoryName: '환경성과',\n formula: '감리자 1~5점 척도',\n scoreType: 'inspector',\n dataType: 'score'\n },\n {\n name: '생산성과 수준 평가',\n description: '생산성과 종합 평가',\n categoryName: '생산성과',\n formula: '감리자 1~5점 척도',\n scoreType: 'inspector',\n dataType: 'score'\n }\n]\n\nexport class SeedKpi1752190849681 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Kpi)\n const categoryRepository = getRepository('KpiCategory')\n const domain: Domain = await getRepository(Domain).findOneBy({\n name: 'SYSTEM'\n })\n\n return await Promise.all(\n SEED.map(async kpi => {\n const category = await categoryRepository.findOneBy({ name: kpi.categoryName, domain: { id: domain.id } })\n await repository.save({\n ...kpi,\n category,\n domain\n })\n })\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Kpi)\n const domain: Domain = await getRepository(Domain).findOneBy({\n name: 'SYSTEM'\n })\n\n return await Promise.all(\n SEED.reverse().map(async kpi => {\n await repository.delete({ name: kpi.name, domain: { id: domain.id } })\n })\n )\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class SeedKpiGrade1752191090459 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<any>;
4
+ down(queryRunner: QueryRunner): Promise<any>;
5
+ }
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SeedKpiGrade1752191090459 = void 0;
4
+ const shell_1 = require("@things-factory/shell");
5
+ const kpi_grade_js_1 = require("../service/kpi-grade/kpi-grade.js");
6
+ const kpi_js_1 = require("../service/kpi/kpi.js");
7
+ const GRADE_SEED = [
8
+ {
9
+ kpiName: '일정성과 수준 평가',
10
+ version: 1,
11
+ grades: [
12
+ {
13
+ name: '1점',
14
+ minValue: 1,
15
+ maxValue: 1,
16
+ score: 1,
17
+ description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하여 공기가 지연됨.'
18
+ },
19
+ {
20
+ name: '2점',
21
+ minValue: 2,
22
+ maxValue: 2,
23
+ score: 2,
24
+ description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하여 공기를 맞춤.'
25
+ },
26
+ {
27
+ name: '3점',
28
+ minValue: 3,
29
+ maxValue: 3,
30
+ score: 3,
31
+ description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하지 않으나 공기를 맞춤.'
32
+ },
33
+ {
34
+ name: '4점',
35
+ minValue: 4,
36
+ maxValue: 4,
37
+ score: 4,
38
+ description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하지 않으며 공기를 단축함.'
39
+ },
40
+ {
41
+ name: '5점',
42
+ minValue: 5,
43
+ maxValue: 5,
44
+ score: 5,
45
+ description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하지 않으며 공기를 단축함.'
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ kpiName: '비용성과 수준 평가',
51
+ version: 1,
52
+ grades: [
53
+ {
54
+ name: '1점',
55
+ minValue: 1,
56
+ maxValue: 1,
57
+ score: 1,
58
+ description: '공사비 변동과 민원 등이 발생하여 공사비 관리가 미흡함.'
59
+ },
60
+ {
61
+ name: '2점',
62
+ minValue: 2,
63
+ maxValue: 2,
64
+ score: 2,
65
+ description: '공사비 변동과 민원 등이 발생하여 공사비 관리가 미흡함.'
66
+ },
67
+ {
68
+ name: '3점',
69
+ minValue: 3,
70
+ maxValue: 3,
71
+ score: 3,
72
+ description: '공사비 변동과 민원 등이 발생하였으나 공사비 관리를 적정하게 수행함.'
73
+ },
74
+ {
75
+ name: '4점',
76
+ minValue: 4,
77
+ maxValue: 4,
78
+ score: 4,
79
+ description: '공사비 변동과 민원 등이 발생하지 않으며 공사비 관리를 적정하게 수행함.'
80
+ },
81
+ {
82
+ name: '5점',
83
+ minValue: 5,
84
+ maxValue: 5,
85
+ score: 5,
86
+ description: '공사비 변동과 민원 등이 발생하지 않으며 매우 훌륭하게 수행함.'
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ kpiName: '품질성과 수준 평가',
92
+ version: 1,
93
+ grades: [
94
+ {
95
+ name: '1점',
96
+ minValue: 1,
97
+ maxValue: 1,
98
+ score: 1,
99
+ description: '법적 요구 수준에 못 미치거나 공사 완성도의 개선이 매우 필요한 경우'
100
+ },
101
+ {
102
+ name: '2점',
103
+ minValue: 2,
104
+ maxValue: 2,
105
+ score: 2,
106
+ description: '법적 요구 수준을 일부 만족하나, 공사 완성도의 개선이 일부 필요한 경우'
107
+ },
108
+ { name: '3점', minValue: 3, maxValue: 3, score: 3, description: '법적 요구 수준을 충족하는 수준' },
109
+ {
110
+ name: '4점',
111
+ minValue: 4,
112
+ maxValue: 4,
113
+ score: 4,
114
+ description: '법적 요구 수준을 만족하며, 품질관리 활동이 능동적인 경우'
115
+ },
116
+ {
117
+ name: '5점',
118
+ minValue: 5,
119
+ maxValue: 5,
120
+ score: 5,
121
+ description: '법적 요구 수준을 만족하며, 품질관리 활동이 매우 능동적인 경우'
122
+ }
123
+ ]
124
+ },
125
+ {
126
+ kpiName: '안전성과 수준 평가',
127
+ version: 1,
128
+ grades: [
129
+ {
130
+ name: '1점',
131
+ minValue: 1,
132
+ maxValue: 1,
133
+ score: 1,
134
+ description: '법적 요구 수준을 미달하거나 안전관리 활동이 미흡한 경우'
135
+ },
136
+ {
137
+ name: '2점',
138
+ minValue: 2,
139
+ maxValue: 2,
140
+ score: 2,
141
+ description: '법적 요구 수준을 일부 만족하나, 안전관리 활동이 다소 필요한 경우'
142
+ },
143
+ { name: '3점', minValue: 3, maxValue: 3, score: 3, description: '법적 요구 수준을 충족하는 수준' },
144
+ {
145
+ name: '4점',
146
+ minValue: 4,
147
+ maxValue: 4,
148
+ score: 4,
149
+ description: '법적 요구 수준을 만족하며, 안전관리 활동이 능동적인 경우'
150
+ },
151
+ {
152
+ name: '5점',
153
+ minValue: 5,
154
+ maxValue: 5,
155
+ score: 5,
156
+ description: '법적 요구 수준을 만족하며, 안전관리 활동이 매우 능동적인 경우'
157
+ }
158
+ ]
159
+ },
160
+ {
161
+ kpiName: '환경성과 수준 평가',
162
+ version: 1,
163
+ grades: [
164
+ {
165
+ name: '1점',
166
+ minValue: 1,
167
+ maxValue: 1,
168
+ score: 1,
169
+ description: '법적 요구 수준에 못 미치거나 환경관리 활동의 개선이 매우 필요한 경우'
170
+ },
171
+ {
172
+ name: '2점',
173
+ minValue: 2,
174
+ maxValue: 2,
175
+ score: 2,
176
+ description: '법적 요구 수준을 일부 만족하나, 환경관리 활동이 다소 필요한 경우'
177
+ },
178
+ { name: '3점', minValue: 3, maxValue: 3, score: 3, description: '법적 요구 수준을 충족하는 수준' },
179
+ {
180
+ name: '4점',
181
+ minValue: 4,
182
+ maxValue: 4,
183
+ score: 4,
184
+ description: '법적 요구 수준을 만족하며, 환경관리 활동의 효율성을 다소 높은 수준'
185
+ },
186
+ {
187
+ name: '5점',
188
+ minValue: 5,
189
+ maxValue: 5,
190
+ score: 5,
191
+ description: '법적 요구 수준을 만족하며, 환경관리 활동의 효율성이 확연히 높은 수준'
192
+ }
193
+ ]
194
+ },
195
+ {
196
+ kpiName: '생산성과 수준 평가',
197
+ version: 1,
198
+ grades: [
199
+ {
200
+ name: '1점',
201
+ minValue: 1,
202
+ maxValue: 1,
203
+ score: 1,
204
+ description: '인력 및 장비 투입 규모에 대한 효율성이 매우 낮은 수준'
205
+ },
206
+ {
207
+ name: '2점',
208
+ minValue: 2,
209
+ maxValue: 2,
210
+ score: 2,
211
+ description: '인력 및 장비 투입 규모가 법적 요구 수준을 충족하나, 연계에 비해 미흡함.'
212
+ },
213
+ {
214
+ name: '3점',
215
+ minValue: 3,
216
+ maxValue: 3,
217
+ score: 3,
218
+ description: '인력 및 장비 투입 규모가 법적 요구 수준을 충족하는 수준'
219
+ },
220
+ {
221
+ name: '4점',
222
+ minValue: 4,
223
+ maxValue: 4,
224
+ score: 4,
225
+ description: '투입 규모가 법적 요구 수준을 충족하며, 효율성이 다소 높은 수준'
226
+ },
227
+ {
228
+ name: '5점',
229
+ minValue: 5,
230
+ maxValue: 5,
231
+ score: 5,
232
+ description: '투입 규모가 법적 요구 수준을 충족하며, 효율성이 확연히 높은 수준'
233
+ }
234
+ ]
235
+ }
236
+ ];
237
+ class SeedKpiGrade1752191090459 {
238
+ async up(queryRunner) {
239
+ const repository = (0, shell_1.getRepository)(kpi_grade_js_1.KpiGrade);
240
+ const kpiRepository = (0, shell_1.getRepository)(kpi_js_1.Kpi);
241
+ const domain = await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ name: 'SYSTEM' });
242
+ for (const seed of GRADE_SEED) {
243
+ const kpi = await kpiRepository.findOneBy({ name: seed.kpiName, domain: { id: domain.id } });
244
+ if (!kpi)
245
+ continue;
246
+ for (const grade of seed.grades) {
247
+ await repository.save({
248
+ ...grade,
249
+ version: seed.version,
250
+ kpi,
251
+ domain
252
+ });
253
+ }
254
+ }
255
+ }
256
+ async down(queryRunner) {
257
+ const repository = (0, shell_1.getRepository)(kpi_grade_js_1.KpiGrade);
258
+ const kpiRepository = (0, shell_1.getRepository)(kpi_js_1.Kpi);
259
+ const domain = await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ name: 'SYSTEM' });
260
+ for (const seed of GRADE_SEED) {
261
+ const kpi = await kpiRepository.findOneBy({ name: seed.kpiName, domain: { id: domain.id } });
262
+ if (!kpi)
263
+ continue;
264
+ for (const grade of seed.grades.reverse()) {
265
+ await repository.delete({ name: grade.name, kpi: { id: kpi.id }, domain: { id: domain.id } });
266
+ }
267
+ }
268
+ }
269
+ }
270
+ exports.SeedKpiGrade1752191090459 = SeedKpiGrade1752191090459;
271
+ //# sourceMappingURL=1752191090459-SeedKpiGrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1752191090459-SeedKpiGrade.js","sourceRoot":"","sources":["../../server/migrations/1752191090459-SeedKpiGrade.ts"],"names":[],"mappings":"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","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { KpiGrade } from '../service/kpi-grade/kpi-grade.js'\nimport { Kpi } from '../service/kpi/kpi.js'\n\nconst GRADE_SEED = [\n {\n kpiName: '일정성과 수준 평가',\n version: 1,\n grades: [\n {\n name: '1점',\n minValue: 1,\n maxValue: 1,\n score: 1,\n description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하여 공기가 지연됨.'\n },\n {\n name: '2점',\n minValue: 2,\n maxValue: 2,\n score: 2,\n description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하여 공기를 맞춤.'\n },\n {\n name: '3점',\n minValue: 3,\n maxValue: 3,\n score: 3,\n description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하지 않으나 공기를 맞춤.'\n },\n {\n name: '4점',\n minValue: 4,\n maxValue: 4,\n score: 4,\n description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하지 않으며 공기를 단축함.'\n },\n {\n name: '5점',\n minValue: 5,\n maxValue: 5,\n score: 5,\n description: '달성상황(기후, 일반변화 등)과 인근주민 민원 등이 발생하지 않으며 공기를 단축함.'\n }\n ]\n },\n {\n kpiName: '비용성과 수준 평가',\n version: 1,\n grades: [\n {\n name: '1점',\n minValue: 1,\n maxValue: 1,\n score: 1,\n description: '공사비 변동과 민원 등이 발생하여 공사비 관리가 미흡함.'\n },\n {\n name: '2점',\n minValue: 2,\n maxValue: 2,\n score: 2,\n description: '공사비 변동과 민원 등이 발생하여 공사비 관리가 미흡함.'\n },\n {\n name: '3점',\n minValue: 3,\n maxValue: 3,\n score: 3,\n description: '공사비 변동과 민원 등이 발생하였으나 공사비 관리를 적정하게 수행함.'\n },\n {\n name: '4점',\n minValue: 4,\n maxValue: 4,\n score: 4,\n description: '공사비 변동과 민원 등이 발생하지 않으며 공사비 관리를 적정하게 수행함.'\n },\n {\n name: '5점',\n minValue: 5,\n maxValue: 5,\n score: 5,\n description: '공사비 변동과 민원 등이 발생하지 않으며 매우 훌륭하게 수행함.'\n }\n ]\n },\n {\n kpiName: '품질성과 수준 평가',\n version: 1,\n grades: [\n {\n name: '1점',\n minValue: 1,\n maxValue: 1,\n score: 1,\n description: '법적 요구 수준에 못 미치거나 공사 완성도의 개선이 매우 필요한 경우'\n },\n {\n name: '2점',\n minValue: 2,\n maxValue: 2,\n score: 2,\n description: '법적 요구 수준을 일부 만족하나, 공사 완성도의 개선이 일부 필요한 경우'\n },\n { name: '3점', minValue: 3, maxValue: 3, score: 3, description: '법적 요구 수준을 충족하는 수준' },\n {\n name: '4점',\n minValue: 4,\n maxValue: 4,\n score: 4,\n description: '법적 요구 수준을 만족하며, 품질관리 활동이 능동적인 경우'\n },\n {\n name: '5점',\n minValue: 5,\n maxValue: 5,\n score: 5,\n description: '법적 요구 수준을 만족하며, 품질관리 활동이 매우 능동적인 경우'\n }\n ]\n },\n {\n kpiName: '안전성과 수준 평가',\n version: 1,\n grades: [\n {\n name: '1점',\n minValue: 1,\n maxValue: 1,\n score: 1,\n description: '법적 요구 수준을 미달하거나 안전관리 활동이 미흡한 경우'\n },\n {\n name: '2점',\n minValue: 2,\n maxValue: 2,\n score: 2,\n description: '법적 요구 수준을 일부 만족하나, 안전관리 활동이 다소 필요한 경우'\n },\n { name: '3점', minValue: 3, maxValue: 3, score: 3, description: '법적 요구 수준을 충족하는 수준' },\n {\n name: '4점',\n minValue: 4,\n maxValue: 4,\n score: 4,\n description: '법적 요구 수준을 만족하며, 안전관리 활동이 능동적인 경우'\n },\n {\n name: '5점',\n minValue: 5,\n maxValue: 5,\n score: 5,\n description: '법적 요구 수준을 만족하며, 안전관리 활동이 매우 능동적인 경우'\n }\n ]\n },\n {\n kpiName: '환경성과 수준 평가',\n version: 1,\n grades: [\n {\n name: '1점',\n minValue: 1,\n maxValue: 1,\n score: 1,\n description: '법적 요구 수준에 못 미치거나 환경관리 활동의 개선이 매우 필요한 경우'\n },\n {\n name: '2점',\n minValue: 2,\n maxValue: 2,\n score: 2,\n description: '법적 요구 수준을 일부 만족하나, 환경관리 활동이 다소 필요한 경우'\n },\n { name: '3점', minValue: 3, maxValue: 3, score: 3, description: '법적 요구 수준을 충족하는 수준' },\n {\n name: '4점',\n minValue: 4,\n maxValue: 4,\n score: 4,\n description: '법적 요구 수준을 만족하며, 환경관리 활동의 효율성을 다소 높은 수준'\n },\n {\n name: '5점',\n minValue: 5,\n maxValue: 5,\n score: 5,\n description: '법적 요구 수준을 만족하며, 환경관리 활동의 효율성이 확연히 높은 수준'\n }\n ]\n },\n {\n kpiName: '생산성과 수준 평가',\n version: 1,\n grades: [\n {\n name: '1점',\n minValue: 1,\n maxValue: 1,\n score: 1,\n description: '인력 및 장비 투입 규모에 대한 효율성이 매우 낮은 수준'\n },\n {\n name: '2점',\n minValue: 2,\n maxValue: 2,\n score: 2,\n description: '인력 및 장비 투입 규모가 법적 요구 수준을 충족하나, 연계에 비해 미흡함.'\n },\n {\n name: '3점',\n minValue: 3,\n maxValue: 3,\n score: 3,\n description: '인력 및 장비 투입 규모가 법적 요구 수준을 충족하는 수준'\n },\n {\n name: '4점',\n minValue: 4,\n maxValue: 4,\n score: 4,\n description: '투입 규모가 법적 요구 수준을 충족하며, 효율성이 다소 높은 수준'\n },\n {\n name: '5점',\n minValue: 5,\n maxValue: 5,\n score: 5,\n description: '투입 규모가 법적 요구 수준을 충족하며, 효율성이 확연히 높은 수준'\n }\n ]\n }\n]\n\nexport class SeedKpiGrade1752191090459 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(KpiGrade)\n const kpiRepository = getRepository(Kpi)\n const domain: Domain = await getRepository(Domain).findOneBy({ name: 'SYSTEM' })\n\n for (const seed of GRADE_SEED) {\n const kpi = await kpiRepository.findOneBy({ name: seed.kpiName, domain: { id: domain.id } })\n if (!kpi) continue\n for (const grade of seed.grades) {\n await repository.save({\n ...grade,\n version: seed.version,\n kpi,\n domain\n })\n }\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(KpiGrade)\n const kpiRepository = getRepository(Kpi)\n const domain: Domain = await getRepository(Domain).findOneBy({ name: 'SYSTEM' })\n\n for (const seed of GRADE_SEED) {\n const kpi = await kpiRepository.findOneBy({ name: seed.kpiName, domain: { id: domain.id } })\n if (!kpi) continue\n for (const grade of seed.grades.reverse()) {\n await repository.delete({ name: grade.name, kpi: { id: kpi.id }, domain: { id: domain.id } })\n }\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare var migrations: any[];
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrations = void 0;
4
+ const glob = require('glob');
5
+ const path = require('path');
6
+ exports.migrations = [];
7
+ glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function (file) {
8
+ if (file.indexOf('index.js') !== -1)
9
+ return;
10
+ exports.migrations = exports.migrations.concat(Object.values(require(path.resolve(file))) || []);
11
+ });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/migrations/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB,QAAA,UAAU,GAAG,EAAE,CAAA;AAE1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAS,IAAI;IACzE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,OAAM;IAC3C,kBAAU,GAAG,kBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA","sourcesContent":["const glob = require('glob')\nconst path = require('path')\n\nexport var migrations = []\n\nglob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {\n if (file.indexOf('index.js') !== -1) return\n migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const aggregate_kpi_metric_1 = require("./service/kpi-metric/aggregate-kpi-metric");
4
+ const aggregate_kpi_1 = require("./service/kpi/aggregate-kpi");
1
5
  process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) => {
2
6
  /*
3
7
  * can add global public routes to application (auth not required, tenancy not required)
@@ -5,6 +9,50 @@ process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) =>
5
9
  * ex) routes.get('/path', async(context, next) => {})
6
10
  * ex) routes.post('/path', async(context, next) => {})
7
11
  */
12
+ // KPI-Metric 스케줄러 콜백 엔드포인트
13
+ globalPublicRouter.post('/callback-schedule-for-kpi-metric', async (context, next) => {
14
+ const { client } = context.request.body;
15
+ if (!client || typeof client !== 'object') {
16
+ throw new Error('client property should be a part of callback body.');
17
+ }
18
+ const { group: domainId, key: metricId } = client;
19
+ if (!domainId || !metricId) {
20
+ throw new Error(`group(${domainId}) and key(${metricId}) properties should not be empty`);
21
+ }
22
+ try {
23
+ // KPI-Metric 집계/자동화 함수 호출
24
+ const values = await (0, aggregate_kpi_metric_1.aggregateKpiMetricValue)(metricId, domainId, context);
25
+ console.log(`[KPI-Metric Schedule Callback] domainId=${domainId}, metricId=${metricId}, values=`, values);
26
+ context.status = 200;
27
+ }
28
+ catch (err) {
29
+ console.error('[KPI-Metric Schedule Callback][ERROR]', err);
30
+ context.status = 500;
31
+ context.body = { error: err.message || String(err) };
32
+ }
33
+ });
34
+ // KPI 스케줄러 콜백 엔드포인트
35
+ globalPublicRouter.post('/callback-schedule-for-kpi', async (context, next) => {
36
+ const { client } = context.request.body;
37
+ if (!client || typeof client !== 'object') {
38
+ throw new Error('client property should be a part of callback body.');
39
+ }
40
+ const { group: domainId, key: kpiId } = client;
41
+ if (!domainId || !kpiId) {
42
+ throw new Error(`group(${domainId}) and key(${kpiId}) properties should not be empty`);
43
+ }
44
+ try {
45
+ // KPI 집계/자동화 함수 호출
46
+ const values = await (0, aggregate_kpi_1.aggregateKpiValue)(kpiId, domainId, context);
47
+ console.log(`[KPI Schedule Callback] domainId=${domainId}, kpiId=${kpiId}, values=`, values);
48
+ context.status = 200;
49
+ }
50
+ catch (err) {
51
+ console.error('[KPI Schedule Callback][ERROR]', err);
52
+ context.status = 500;
53
+ context.body = { error: err.message || String(err) };
54
+ }
55
+ });
8
56
  });
9
57
  process.on('bootstrap-module-global-private-route', (app, globalPrivateRouter) => {
10
58
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;;;;OAKG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA","sourcesContent":["process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n})\n"]}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { aggregateKpiMetricValue } from './service/kpi-metric/aggregate-kpi-metric'\nimport { aggregateKpiValue } from './service/kpi/aggregate-kpi'\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n\n // KPI-Metric 스케줄러 콜백 엔드포인트\n globalPublicRouter.post('/callback-schedule-for-kpi-metric', async (context, next) => {\n const { client } = context.request.body\n\n if (!client || typeof client !== 'object') {\n throw new Error('client property should be a part of callback body.')\n }\n\n const { group: domainId, key: metricId } = client\n\n if (!domainId || !metricId) {\n throw new Error(`group(${domainId}) and key(${metricId}) properties should not be empty`)\n }\n\n try {\n // KPI-Metric 집계/자동화 함수 호출\n const values = await aggregateKpiMetricValue(metricId, domainId, context)\n console.log(`[KPI-Metric Schedule Callback] domainId=${domainId}, metricId=${metricId}, values=`, values)\n context.status = 200\n } catch (err) {\n console.error('[KPI-Metric Schedule Callback][ERROR]', err)\n context.status = 500\n context.body = { error: err.message || String(err) }\n }\n })\n\n // KPI 스케줄러 콜백 엔드포인트\n globalPublicRouter.post('/callback-schedule-for-kpi', async (context, next) => {\n const { client } = context.request.body\n\n if (!client || typeof client !== 'object') {\n throw new Error('client property should be a part of callback body.')\n }\n\n const { group: domainId, key: kpiId } = client\n\n if (!domainId || !kpiId) {\n throw new Error(`group(${domainId}) and key(${kpiId}) properties should not be empty`)\n }\n\n try {\n // KPI 집계/자동화 함수 호출\n const values = await aggregateKpiValue(kpiId, domainId, context)\n console.log(`[KPI Schedule Callback] domainId=${domainId}, kpiId=${kpiId}, values=`, values)\n context.status = 200\n } catch (err) {\n console.error('[KPI Schedule Callback][ERROR]', err)\n context.status = 500\n context.body = { error: err.message || String(err) }\n }\n })\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n})\n"]}