@things-factory/dataset 8.0.6 → 9.0.0-beta.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (316) hide show
  1. package/dist-client/bootstrap.d.ts +8 -8
  2. package/dist-client/bootstrap.js +8 -8
  3. package/dist-client/bootstrap.js.map +1 -1
  4. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +1 -1
  5. package/dist-client/pages/data-archive/data-archive-list-page.js +1 -1
  6. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -1
  7. package/dist-client/pages/data-entry/data-entry-list-page.js +2 -2
  8. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  9. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +1 -1
  10. package/dist-client/pages/data-key-set/data-key-set-list-page.js +1 -1
  11. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -1
  12. package/dist-client/tsconfig.tsbuildinfo +1 -1
  13. package/dist-server/activities/activity-data-collect.js +2 -2
  14. package/dist-server/activities/activity-data-collect.js.map +1 -1
  15. package/dist-server/activities/activity-data-review.js +9 -9
  16. package/dist-server/activities/activity-data-review.js.map +1 -1
  17. package/dist-server/activities/activity-ooc-resolve.js +3 -3
  18. package/dist-server/activities/activity-ooc-resolve.js.map +1 -1
  19. package/dist-server/activities/activity-ooc-review.js +5 -5
  20. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  21. package/dist-server/activities/index.js +5 -5
  22. package/dist-server/activities/index.js.map +1 -1
  23. package/dist-server/controllers/create-data-ooc.d.ts +3 -3
  24. package/dist-server/controllers/create-data-ooc.js +4 -6
  25. package/dist-server/controllers/create-data-ooc.js.map +1 -1
  26. package/dist-server/controllers/create-data-sample.d.ts +2 -2
  27. package/dist-server/controllers/create-data-sample.js +13 -13
  28. package/dist-server/controllers/create-data-sample.js.map +1 -1
  29. package/dist-server/controllers/data-use-case.d.ts +2 -2
  30. package/dist-server/controllers/data-use-case.js.map +1 -1
  31. package/dist-server/controllers/finalize-data-collection.d.ts +1 -1
  32. package/dist-server/controllers/finalize-data-collection.js +41 -21
  33. package/dist-server/controllers/finalize-data-collection.js.map +1 -1
  34. package/dist-server/controllers/index.d.ts +6 -6
  35. package/dist-server/controllers/index.js +6 -6
  36. package/dist-server/controllers/index.js.map +1 -1
  37. package/dist-server/controllers/issue-data-collection-task.js +2 -2
  38. package/dist-server/controllers/issue-data-collection-task.js.map +1 -1
  39. package/dist-server/controllers/issue-ooc-resolve.d.ts +2 -2
  40. package/dist-server/controllers/issue-ooc-resolve.js +2 -2
  41. package/dist-server/controllers/issue-ooc-resolve.js.map +1 -1
  42. package/dist-server/controllers/issue-ooc-review.d.ts +2 -2
  43. package/dist-server/controllers/issue-ooc-review.js +2 -2
  44. package/dist-server/controllers/issue-ooc-review.js.map +1 -1
  45. package/dist-server/controllers/jasper-report.js +2 -2
  46. package/dist-server/controllers/jasper-report.js.map +1 -1
  47. package/dist-server/controllers/query-data-summary-by-period.d.ts +1 -1
  48. package/dist-server/controllers/query-data-summary-by-period.js +11 -6
  49. package/dist-server/controllers/query-data-summary-by-period.js.map +1 -1
  50. package/dist-server/controllers/shiny-report.js +2 -2
  51. package/dist-server/controllers/shiny-report.js.map +1 -1
  52. package/dist-server/engine/index.d.ts +1 -1
  53. package/dist-server/engine/index.js +1 -1
  54. package/dist-server/engine/index.js.map +1 -1
  55. package/dist-server/engine/task/create-data-sample.js +4 -4
  56. package/dist-server/engine/task/create-data-sample.js.map +1 -1
  57. package/dist-server/engine/task/index.d.ts +2 -2
  58. package/dist-server/engine/task/index.js +2 -2
  59. package/dist-server/engine/task/index.js.map +1 -1
  60. package/dist-server/engine/task/issue-collect-data.js +2 -2
  61. package/dist-server/engine/task/issue-collect-data.js.map +1 -1
  62. package/dist-server/index.d.ts +6 -6
  63. package/dist-server/index.js +6 -6
  64. package/dist-server/index.js.map +1 -1
  65. package/dist-server/routes.js +12 -12
  66. package/dist-server/routes.js.map +1 -1
  67. package/dist-server/service/data-archive/data-archive-mutation.d.ts +2 -2
  68. package/dist-server/service/data-archive/data-archive-mutation.js +22 -22
  69. package/dist-server/service/data-archive/data-archive-mutation.js.map +1 -1
  70. package/dist-server/service/data-archive/data-archive-query.d.ts +2 -2
  71. package/dist-server/service/data-archive/data-archive-query.js +10 -10
  72. package/dist-server/service/data-archive/data-archive-query.js.map +1 -1
  73. package/dist-server/service/data-archive/data-archive-type.d.ts +1 -1
  74. package/dist-server/service/data-archive/data-archive-type.js +2 -2
  75. package/dist-server/service/data-archive/data-archive-type.js.map +1 -1
  76. package/dist-server/service/data-archive/index.d.ts +3 -3
  77. package/dist-server/service/data-archive/index.js +5 -5
  78. package/dist-server/service/data-archive/index.js.map +1 -1
  79. package/dist-server/service/data-key-set/data-key-set-mutation.d.ts +2 -2
  80. package/dist-server/service/data-key-set/data-key-set-mutation.js +20 -20
  81. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -1
  82. package/dist-server/service/data-key-set/data-key-set-query.d.ts +2 -2
  83. package/dist-server/service/data-key-set/data-key-set-query.js +12 -12
  84. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -1
  85. package/dist-server/service/data-key-set/data-key-set-type.d.ts +3 -3
  86. package/dist-server/service/data-key-set/data-key-set-type.js +6 -6
  87. package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -1
  88. package/dist-server/service/data-key-set/data-key-set.d.ts +2 -2
  89. package/dist-server/service/data-key-set/data-key-set.js +3 -3
  90. package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
  91. package/dist-server/service/data-key-set/index.d.ts +3 -3
  92. package/dist-server/service/data-key-set/index.js +5 -5
  93. package/dist-server/service/data-key-set/index.js.map +1 -1
  94. package/dist-server/service/data-ooc/data-ooc-mutation.d.ts +2 -2
  95. package/dist-server/service/data-ooc/data-ooc-mutation.js +11 -11
  96. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -1
  97. package/dist-server/service/data-ooc/data-ooc-query.d.ts +5 -5
  98. package/dist-server/service/data-ooc/data-ooc-query.js +27 -27
  99. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  100. package/dist-server/service/data-ooc/data-ooc-subscription.d.ts +1 -1
  101. package/dist-server/service/data-ooc/data-ooc-subscription.js +3 -3
  102. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -1
  103. package/dist-server/service/data-ooc/data-ooc-type.d.ts +1 -1
  104. package/dist-server/service/data-ooc/data-ooc-type.js +4 -4
  105. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
  106. package/dist-server/service/data-ooc/data-ooc.d.ts +3 -3
  107. package/dist-server/service/data-ooc/data-ooc.js +10 -10
  108. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  109. package/dist-server/service/data-ooc/index.d.ts +4 -4
  110. package/dist-server/service/data-ooc/index.js +6 -6
  111. package/dist-server/service/data-ooc/index.js.map +1 -1
  112. package/dist-server/service/data-sample/data-sample-mutation.d.ts +2 -2
  113. package/dist-server/service/data-sample/data-sample-mutation.js +7 -7
  114. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  115. package/dist-server/service/data-sample/data-sample-query.d.ts +5 -5
  116. package/dist-server/service/data-sample/data-sample-query.js +36 -36
  117. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  118. package/dist-server/service/data-sample/data-sample-type.d.ts +1 -1
  119. package/dist-server/service/data-sample/data-sample-type.js +2 -2
  120. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  121. package/dist-server/service/data-sample/data-sample.d.ts +3 -3
  122. package/dist-server/service/data-sample/data-sample.js +10 -10
  123. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  124. package/dist-server/service/data-sample/index.d.ts +3 -3
  125. package/dist-server/service/data-sample/index.js +5 -5
  126. package/dist-server/service/data-sample/index.js.map +1 -1
  127. package/dist-server/service/data-sensor/data-sensor-mutation.d.ts +2 -2
  128. package/dist-server/service/data-sensor/data-sensor-mutation.js +14 -14
  129. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -1
  130. package/dist-server/service/data-sensor/data-sensor-query.d.ts +3 -3
  131. package/dist-server/service/data-sensor/data-sensor-query.js +16 -16
  132. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  133. package/dist-server/service/data-sensor/data-sensor-type.d.ts +1 -1
  134. package/dist-server/service/data-sensor/data-sensor-type.js +2 -2
  135. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
  136. package/dist-server/service/data-sensor/data-sensor.d.ts +1 -1
  137. package/dist-server/service/data-sensor/data-sensor.js +3 -3
  138. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  139. package/dist-server/service/data-sensor/index.d.ts +3 -3
  140. package/dist-server/service/data-sensor/index.js +5 -5
  141. package/dist-server/service/data-sensor/index.js.map +1 -1
  142. package/dist-server/service/data-set/data-set-mutation.d.ts +2 -2
  143. package/dist-server/service/data-set/data-set-mutation.js +32 -32
  144. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  145. package/dist-server/service/data-set/data-set-query.d.ts +4 -4
  146. package/dist-server/service/data-set/data-set-query.js +44 -44
  147. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  148. package/dist-server/service/data-set/data-set-type.d.ts +2 -2
  149. package/dist-server/service/data-set/data-set-type.js +5 -5
  150. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  151. package/dist-server/service/data-set/data-set.d.ts +2 -2
  152. package/dist-server/service/data-set/data-set.js +6 -6
  153. package/dist-server/service/data-set/data-set.js.map +1 -1
  154. package/dist-server/service/data-set/index.d.ts +3 -3
  155. package/dist-server/service/data-set/index.js +5 -5
  156. package/dist-server/service/data-set/index.js.map +1 -1
  157. package/dist-server/service/data-set-history/data-set-history-query.d.ts +4 -4
  158. package/dist-server/service/data-set-history/data-set-history-query.js +22 -22
  159. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  160. package/dist-server/service/data-set-history/data-set-history-type.d.ts +1 -1
  161. package/dist-server/service/data-set-history/data-set-history-type.js +2 -2
  162. package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -1
  163. package/dist-server/service/data-set-history/data-set-history.d.ts +2 -2
  164. package/dist-server/service/data-set-history/data-set-history.js +3 -3
  165. package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
  166. package/dist-server/service/data-set-history/event-subscriber.d.ts +2 -2
  167. package/dist-server/service/data-set-history/event-subscriber.js +4 -4
  168. package/dist-server/service/data-set-history/event-subscriber.js.map +1 -1
  169. package/dist-server/service/data-set-history/index.d.ts +3 -3
  170. package/dist-server/service/data-set-history/index.js +6 -6
  171. package/dist-server/service/data-set-history/index.js.map +1 -1
  172. package/dist-server/service/data-spec/data-spec-manager.d.ts +1 -1
  173. package/dist-server/service/data-spec/data-spec-manager.js.map +1 -1
  174. package/dist-server/service/data-spec/data-spec-query.d.ts +1 -1
  175. package/dist-server/service/data-spec/data-spec-query.js +9 -9
  176. package/dist-server/service/data-spec/data-spec-query.js.map +1 -1
  177. package/dist-server/service/data-spec/index.d.ts +2 -2
  178. package/dist-server/service/data-spec/index.js +4 -4
  179. package/dist-server/service/data-spec/index.js.map +1 -1
  180. package/dist-server/service/data-summary/data-summary-mutation.js +11 -8
  181. package/dist-server/service/data-summary/data-summary-mutation.js.map +1 -1
  182. package/dist-server/service/data-summary/data-summary-query.d.ts +4 -4
  183. package/dist-server/service/data-summary/data-summary-query.js +31 -31
  184. package/dist-server/service/data-summary/data-summary-query.js.map +1 -1
  185. package/dist-server/service/data-summary/data-summary-type.d.ts +1 -1
  186. package/dist-server/service/data-summary/data-summary-type.js +2 -2
  187. package/dist-server/service/data-summary/data-summary-type.js.map +1 -1
  188. package/dist-server/service/data-summary/data-summary.d.ts +2 -2
  189. package/dist-server/service/data-summary/data-summary.js +6 -6
  190. package/dist-server/service/data-summary/data-summary.js.map +1 -1
  191. package/dist-server/service/data-summary/index.d.ts +3 -3
  192. package/dist-server/service/data-summary/index.js +5 -5
  193. package/dist-server/service/data-summary/index.js.map +1 -1
  194. package/dist-server/service/index.d.ts +12 -12
  195. package/dist-server/service/index.js +37 -37
  196. package/dist-server/service/index.js.map +1 -1
  197. package/dist-server/tsconfig.tsbuildinfo +1 -1
  198. package/dist-server/utils/index.d.ts +1 -1
  199. package/dist-server/utils/index.js +1 -1
  200. package/dist-server/utils/index.js.map +1 -1
  201. package/package.json +26 -26
  202. package/client/activities/activity-data-collect-edit.ts +0 -105
  203. package/client/activities/activity-data-collect-view.ts +0 -91
  204. package/client/activities/activity-data-review-edit.ts +0 -278
  205. package/client/activities/activity-data-review-view.ts +0 -226
  206. package/client/activities/activity-ooc-resolve-edit.ts +0 -195
  207. package/client/activities/activity-ooc-resolve-view.ts +0 -143
  208. package/client/activities/activity-ooc-review-edit.ts +0 -173
  209. package/client/activities/activity-ooc-review-view.ts +0 -129
  210. package/client/bootstrap.ts +0 -35
  211. package/client/components/data-entry-form.ts +0 -109
  212. package/client/index.ts +0 -1
  213. package/client/pages/data-archive/data-archive-list-page.ts +0 -277
  214. package/client/pages/data-archive/data-archive-request-popup.ts +0 -177
  215. package/client/pages/data-entry/data-entry-list-page.ts +0 -464
  216. package/client/pages/data-key-set/data-key-item-list.ts +0 -183
  217. package/client/pages/data-key-set/data-key-set-importer.ts +0 -89
  218. package/client/pages/data-key-set/data-key-set-list-page.ts +0 -413
  219. package/client/pages/data-ooc/data-ooc-list-page.ts +0 -549
  220. package/client/pages/data-ooc/data-ooc-page.ts +0 -164
  221. package/client/pages/data-ooc/data-ooc-view.ts +0 -236
  222. package/client/pages/data-ooc/data-oocs-page.ts +0 -200
  223. package/client/pages/data-report/data-report-embed-page.ts +0 -108
  224. package/client/pages/data-report/data-report-list-page.ts +0 -454
  225. package/client/pages/data-report/data-report-samples-page.ts +0 -174
  226. package/client/pages/data-report/jasper-report-oocs-page.ts +0 -110
  227. package/client/pages/data-report/jasper-report-samples-crosstab-page.ts +0 -110
  228. package/client/pages/data-report/jasper-report-samples-page.ts +0 -110
  229. package/client/pages/data-sample/data-sample-list-page.ts +0 -442
  230. package/client/pages/data-sample/data-sample-page.ts +0 -55
  231. package/client/pages/data-sample/data-sample-search-page.ts +0 -424
  232. package/client/pages/data-sample/data-sample-view.ts +0 -292
  233. package/client/pages/data-sample/data-samples-page.ts +0 -249
  234. package/client/pages/data-sensor/data-sensor-list-page.ts +0 -456
  235. package/client/pages/data-set/data-item-list.ts +0 -304
  236. package/client/pages/data-set/data-set-importer.ts +0 -89
  237. package/client/pages/data-set/data-set-list-page.ts +0 -1078
  238. package/client/pages/data-summary/data-summary-list-page.ts +0 -363
  239. package/client/pages/data-summary/data-summary-period-page.ts +0 -439
  240. package/client/pages/data-summary/data-summary-search-page.ts +0 -426
  241. package/client/pages/data-summary/data-summary-view.ts +0 -133
  242. package/client/route.ts +0 -91
  243. package/client/tsconfig.json +0 -13
  244. package/server/activities/activity-data-collect.ts +0 -100
  245. package/server/activities/activity-data-review.ts +0 -109
  246. package/server/activities/activity-ooc-resolve.ts +0 -123
  247. package/server/activities/activity-ooc-review.ts +0 -95
  248. package/server/activities/index.ts +0 -11
  249. package/server/controllers/create-data-ooc.ts +0 -80
  250. package/server/controllers/create-data-sample.ts +0 -323
  251. package/server/controllers/data-use-case.ts +0 -98
  252. package/server/controllers/finalize-data-collection.ts +0 -388
  253. package/server/controllers/index.ts +0 -6
  254. package/server/controllers/issue-data-collection-task.ts +0 -70
  255. package/server/controllers/issue-ooc-resolve.ts +0 -58
  256. package/server/controllers/issue-ooc-review.ts +0 -52
  257. package/server/controllers/jasper-report.ts +0 -186
  258. package/server/controllers/query-data-summary-by-period.ts +0 -178
  259. package/server/controllers/shiny-report.ts +0 -54
  260. package/server/engine/index.ts +0 -1
  261. package/server/engine/task/create-data-sample.ts +0 -100
  262. package/server/engine/task/index.ts +0 -2
  263. package/server/engine/task/issue-collect-data.ts +0 -45
  264. package/server/index.ts +0 -8
  265. package/server/routes.ts +0 -188
  266. package/server/service/data-archive/data-archive-mutation.ts +0 -273
  267. package/server/service/data-archive/data-archive-query.ts +0 -58
  268. package/server/service/data-archive/data-archive-type.ts +0 -48
  269. package/server/service/data-archive/data-archive.ts +0 -69
  270. package/server/service/data-archive/index.ts +0 -6
  271. package/server/service/data-key-set/data-key-item-type.ts +0 -31
  272. package/server/service/data-key-set/data-key-set-mutation.ts +0 -201
  273. package/server/service/data-key-set/data-key-set-query.ts +0 -68
  274. package/server/service/data-key-set/data-key-set-type.ts +0 -70
  275. package/server/service/data-key-set/data-key-set.ts +0 -86
  276. package/server/service/data-key-set/index.ts +0 -6
  277. package/server/service/data-ooc/data-ooc-mutation.ts +0 -154
  278. package/server/service/data-ooc/data-ooc-query.ts +0 -106
  279. package/server/service/data-ooc/data-ooc-subscription.ts +0 -48
  280. package/server/service/data-ooc/data-ooc-type.ts +0 -71
  281. package/server/service/data-ooc/data-ooc.ts +0 -259
  282. package/server/service/data-ooc/index.ts +0 -7
  283. package/server/service/data-sample/data-sample-mutation.ts +0 -18
  284. package/server/service/data-sample/data-sample-query.ts +0 -215
  285. package/server/service/data-sample/data-sample-type.ts +0 -47
  286. package/server/service/data-sample/data-sample.ts +0 -193
  287. package/server/service/data-sample/index.ts +0 -6
  288. package/server/service/data-sensor/data-sensor-mutation.ts +0 -116
  289. package/server/service/data-sensor/data-sensor-query.ts +0 -76
  290. package/server/service/data-sensor/data-sensor-type.ts +0 -104
  291. package/server/service/data-sensor/data-sensor.ts +0 -126
  292. package/server/service/data-sensor/index.ts +0 -6
  293. package/server/service/data-set/data-item-type.ts +0 -155
  294. package/server/service/data-set/data-set-mutation.ts +0 -552
  295. package/server/service/data-set/data-set-query.ts +0 -461
  296. package/server/service/data-set/data-set-type.ts +0 -204
  297. package/server/service/data-set/data-set.ts +0 -326
  298. package/server/service/data-set/index.ts +0 -6
  299. package/server/service/data-set-history/data-set-history-query.ts +0 -126
  300. package/server/service/data-set-history/data-set-history-type.ts +0 -12
  301. package/server/service/data-set-history/data-set-history.ts +0 -217
  302. package/server/service/data-set-history/event-subscriber.ts +0 -17
  303. package/server/service/data-set-history/index.ts +0 -7
  304. package/server/service/data-spec/data-spec-manager.ts +0 -21
  305. package/server/service/data-spec/data-spec-query.ts +0 -21
  306. package/server/service/data-spec/data-spec.ts +0 -45
  307. package/server/service/data-spec/index.ts +0 -5
  308. package/server/service/data-summary/data-summary-mutation.ts +0 -45
  309. package/server/service/data-summary/data-summary-query.ts +0 -179
  310. package/server/service/data-summary/data-summary-type.ts +0 -86
  311. package/server/service/data-summary/data-summary.ts +0 -170
  312. package/server/service/data-summary/index.ts +0 -7
  313. package/server/service/index.ts +0 -57
  314. package/server/tsconfig.json +0 -10
  315. package/server/utils/config-resolver.ts +0 -29
  316. package/server/utils/index.ts +0 -1
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActivityDataCollect = void 0;
4
4
  const typeorm_1 = require("typeorm");
5
5
  const worklist_1 = require("@things-factory/worklist");
6
- const create_data_sample_1 = require("../controllers/create-data-sample");
6
+ const create_data_sample_js_1 = require("../controllers/create-data-sample.js");
7
7
  async function callback(activityInstance, addendum, context) {
8
8
  const { domain, tx } = context.state;
9
9
  const { input, output, state } = activityInstance;
@@ -21,7 +21,7 @@ async function callback(activityInstance, addendum, context) {
21
21
  },
22
22
  data
23
23
  };
24
- await (0, create_data_sample_1.createDataSample)(dataSample, context);
24
+ await (0, create_data_sample_js_1.createDataSample)(dataSample, context);
25
25
  }
26
26
  else {
27
27
  console.error('Collect Data Activity not installed.');
@@ -1 +1 @@
1
- {"version":3,"file":"activity-data-collect.js","sourceRoot":"","sources":["../../server/activities/activity-data-collect.ts"],"names":[],"mappings":";;;AAAA,qCAA4B;AAG5B,uDAKiC;AAEjC,0EAAoE;AAEpE,KAAK,UAAU,QAAQ,CACrB,gBAAkC,EAClC,QAA6C,EAC7C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAA;IAEjD,IAAI,KAAK,IAAI,iCAAsB,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;YAChE,IAAI,EAAE,cAAc;SACrB,CAAC,CAAa,CAAA;QAEf,2HAA2H;QAC3H,MAAM,IAAI,GAAG,MAAM,CAAA;QAEnB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAkB;gBAChC,OAAO,EAAE;oBACP,EAAE,EAAE,KAAK,CAAC,SAAS;iBACpB;gBACD,IAAI;aACL,CAAA;YAED,MAAM,IAAA,qCAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAEY,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,oCAAoC;IACjD,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,SAAS;IACnB,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE;QACV;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,eAAe;SACtB;KACF;IACD,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE;QACL;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,aAAa;YAC1B,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,EAAE;SACT;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAc;YAC3B,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,EAAE;SACT;KACF;IACD,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,4BAA4B;IACtC,QAAQ,EAAE,gBAAgB;IAC1B,UAAU,EAAE,4BAA4B;IACxC,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,4BAA4B;IAC1C,SAAS,EAAE,iCAAiC;IAC5C,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU;IACtC,QAAQ,CAAC,mFAAmF;CAC7F,CAAA","sourcesContent":["import { In } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n Activity,\n ActivityInstance,\n ActivityInstanceStatus,\n UpdateActivityInstanceStateAddendum\n} from '@things-factory/worklist'\nimport { NewDataSample } from 'service/data-sample/data-sample-type'\nimport { createDataSample } from '../controllers/create-data-sample'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, tx } = context.state\n const { input, output, state } = activityInstance\n\n if (state == ActivityInstanceStatus.Ended) {\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n name: 'Collect Data'\n })) as Activity\n\n /* collect-data 액티비티는 한명의 assignee(thread)만 수행하는 multiple: false 액티비티이다. 따라서, output에는 assignee key가 없이, 순수한 data만 들어있다. */\n const data = output\n\n if (activity) {\n const dataSample: NewDataSample = {\n dataSet: {\n id: input.dataSetId\n },\n data\n }\n\n await createDataSample(dataSample, context)\n } else {\n console.error('Collect Data Activity not installed.')\n }\n }\n}\n\nexport const ActivityDataCollect = {\n name: 'Collect Data',\n description: 'Tasks assigned for data collection',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 1,\n searchKeys: [\n {\n name: 'dataSetName',\n description: 'DataSet name',\n inputKey: 'dataSetName',\n tKey: 'data-set-name'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataSetId',\n description: 'DataSet Id.',\n tag: 'dataSetId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'dataSetName',\n description: 'DataSet name',\n tag: 'dataSetName',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-data-collect-edit',\n viewType: 'custom-element',\n viewSource: 'activity-data-collect-view',\n reportType: 'custom-element',\n reportSource: 'activity-data-collect-view',\n thumbnail: '/assets/images/data-collect.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
1
+ {"version":3,"file":"activity-data-collect.js","sourceRoot":"","sources":["../../server/activities/activity-data-collect.ts"],"names":[],"mappings":";;;AAAA,qCAA4B;AAG5B,uDAKiC;AAEjC,gFAAuE;AAEvE,KAAK,UAAU,QAAQ,CACrB,gBAAkC,EAClC,QAA6C,EAC7C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAA;IAEjD,IAAI,KAAK,IAAI,iCAAsB,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;YAChE,IAAI,EAAE,cAAc;SACrB,CAAC,CAAa,CAAA;QAEf,2HAA2H;QAC3H,MAAM,IAAI,GAAG,MAAM,CAAA;QAEnB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAkB;gBAChC,OAAO,EAAE;oBACP,EAAE,EAAE,KAAK,CAAC,SAAS;iBACpB;gBACD,IAAI;aACL,CAAA;YAED,MAAM,IAAA,wCAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAEY,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,oCAAoC;IACjD,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,SAAS;IACnB,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE;QACV;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,eAAe;SACtB;KACF;IACD,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE;QACL;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,aAAa;YAC1B,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,EAAE;SACT;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAc;YAC3B,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,EAAE;SACT;KACF;IACD,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,4BAA4B;IACtC,QAAQ,EAAE,gBAAgB;IAC1B,UAAU,EAAE,4BAA4B;IACxC,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,4BAA4B;IAC1C,SAAS,EAAE,iCAAiC;IAC5C,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU;IACtC,QAAQ,CAAC,mFAAmF;CAC7F,CAAA","sourcesContent":["import { In } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport {\n Activity,\n ActivityInstance,\n ActivityInstanceStatus,\n UpdateActivityInstanceStateAddendum\n} from '@things-factory/worklist'\nimport { NewDataSample } from '../service/data-sample/data-sample-type.js'\nimport { createDataSample } from '../controllers/create-data-sample.js'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, tx } = context.state\n const { input, output, state } = activityInstance\n\n if (state == ActivityInstanceStatus.Ended) {\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n name: 'Collect Data'\n })) as Activity\n\n /* collect-data 액티비티는 한명의 assignee(thread)만 수행하는 multiple: false 액티비티이다. 따라서, output에는 assignee key가 없이, 순수한 data만 들어있다. */\n const data = output\n\n if (activity) {\n const dataSample: NewDataSample = {\n dataSet: {\n id: input.dataSetId\n },\n data\n }\n\n await createDataSample(dataSample, context)\n } else {\n console.error('Collect Data Activity not installed.')\n }\n }\n}\n\nexport const ActivityDataCollect = {\n name: 'Collect Data',\n description: 'Tasks assigned for data collection',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 1,\n searchKeys: [\n {\n name: 'dataSetName',\n description: 'DataSet name',\n inputKey: 'dataSetName',\n tKey: 'data-set-name'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataSetId',\n description: 'DataSet Id.',\n tag: 'dataSetId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'dataSetName',\n description: 'DataSet name',\n tag: 'dataSetName',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-data-collect-edit',\n viewType: 'custom-element',\n viewSource: 'activity-data-collect-view',\n reportType: 'custom-element',\n reportSource: 'activity-data-collect-view',\n thumbnail: '/assets/images/data-collect.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActivityDataReview = void 0;
4
4
  const worklist_1 = require("@things-factory/worklist");
5
- const data_ooc_1 = require("../service/data-ooc/data-ooc");
6
- const data_sample_1 = require("../service/data-sample/data-sample");
7
- const create_data_ooc_1 = require("../controllers/create-data-ooc");
8
- const issue_ooc_resolve_1 = require("../controllers/issue-ooc-resolve");
5
+ const data_ooc_js_1 = require("../service/data-ooc/data-ooc.js");
6
+ const data_sample_js_1 = require("../service/data-sample/data-sample.js");
7
+ const create_data_ooc_js_1 = require("../controllers/create-data-ooc.js");
8
+ const issue_ooc_resolve_js_1 = require("../controllers/issue-ooc-resolve.js");
9
9
  async function callback(activityInstance, addendum, context) {
10
10
  const { domain, tx } = context.state;
11
11
  const { input, output, state } = activityInstance;
@@ -14,17 +14,17 @@ async function callback(activityInstance, addendum, context) {
14
14
  if (!dataSampleId) {
15
15
  throw new Error('Data sample ID is missing in the input.');
16
16
  }
17
- const dataSample = await tx.getRepository(data_sample_1.DataSample).findOne({
17
+ const dataSample = await tx.getRepository(data_sample_js_1.DataSample).findOne({
18
18
  where: { domain: { id: domain.id }, id: dataSampleId },
19
19
  relations: ['domain', 'dataSet', 'creator', 'updater']
20
20
  });
21
- await tx.getRepository(data_sample_1.DataSample).save(Object.assign(Object.assign({}, dataSample), { output, state: data_ooc_1.DataOocStatus.REVIEWED }));
21
+ await tx.getRepository(data_sample_js_1.DataSample).save(Object.assign(Object.assign({}, dataSample), { output, state: data_ooc_js_1.DataOocStatus.REVIEWED }));
22
22
  const { judgment, instruction } = output;
23
23
  if (judgment == 'abnormal') {
24
24
  /* Review 결과가 Ooc 조치가 필요하다고 하면, DataOoc를 생성하고, DataOocResolve를 이슈한다. */
25
- var ooc = await (0, create_data_ooc_1.createDataOoc)(dataSample, dataSample.dataSet, context);
26
- ooc = await tx.getRepository(data_ooc_1.DataOoc).save(Object.assign(Object.assign({}, ooc), { reviewedAt: activityInstance.terminatedAt, reviewer: activityInstance.updater, correctiveInstruction: instruction, reviewActivityInstance: activityInstance, state: data_ooc_1.DataOocStatus.REVIEWED }));
27
- await (0, issue_ooc_resolve_1.issueOocResolve)(ooc, dataSample.dataSet, instruction, context);
25
+ var ooc = await (0, create_data_ooc_js_1.createDataOoc)(dataSample, dataSample.dataSet, context);
26
+ ooc = await tx.getRepository(data_ooc_js_1.DataOoc).save(Object.assign(Object.assign({}, ooc), { reviewedAt: activityInstance.terminatedAt, reviewer: activityInstance.updater, correctiveInstruction: instruction, reviewActivityInstance: activityInstance, state: data_ooc_js_1.DataOocStatus.REVIEWED }));
27
+ await (0, issue_ooc_resolve_js_1.issueOocResolve)(ooc, dataSample.dataSet, instruction, context);
28
28
  }
29
29
  }
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"activity-data-review.js","sourceRoot":"","sources":["../../server/activities/activity-data-review.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus, UpdateActivityInstanceStateAddendum } from '@things-factory/worklist'\n\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc'\nimport { DataSample } from '../service/data-sample/data-sample'\nimport { createDataOoc } from '../controllers/create-data-ooc'\nimport { issueOocResolve } from '../controllers/issue-ooc-resolve'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, tx } = context.state\n const { input, output, state } = activityInstance\n\n if (state == ActivityInstanceStatus.Ended) {\n const { dataSampleId } = input || {}\n\n if (!dataSampleId) {\n throw new Error('Data sample ID is missing in the input.')\n }\n\n const dataSample = await tx.getRepository(DataSample).findOne({\n where: { domain: { id: domain.id }, id: dataSampleId },\n relations: ['domain', 'dataSet', 'creator', 'updater']\n })\n\n await tx.getRepository(DataSample).save({\n ...dataSample,\n output,\n state: DataOocStatus.REVIEWED\n })\n\n const { judgment, instruction } = output\n\n if (judgment == 'abnormal') {\n /* Review 결과가 Ooc 조치가 필요하다고 하면, DataOoc를 생성하고, DataOocResolve를 이슈한다. */\n var ooc = await createDataOoc(dataSample, dataSample.dataSet, context)\n\n ooc = await tx.getRepository(DataOoc).save({\n ...ooc,\n reviewedAt: activityInstance.terminatedAt,\n reviewer: activityInstance.updater,\n correctiveInstruction: instruction,\n reviewActivityInstance: activityInstance,\n state: DataOocStatus.REVIEWED\n })\n\n await issueOocResolve(ooc, dataSample.dataSet, instruction, context)\n }\n }\n}\n\nexport const ActivityDataReview = {\n name: 'Data Review',\n description: 'Tasks for data review',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 1,\n searchKeys: [\n {\n name: 'dataSetName',\n description: 'DataSet name',\n inputKey: 'dataSetName',\n tKey: 'data-set-name'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataSetId',\n description: 'DataSet Id.',\n tag: 'dataSetId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'dataSetName',\n description: 'DataSet name',\n tag: 'dataSetName',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-data-review-edit',\n viewType: 'custom-element',\n viewSource: 'activity-data-review-view',\n reportType: 'custom-element',\n reportSource: 'activity-data-review-view',\n thumbnail: '/assets/images/data-collect.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
1
+ {"version":3,"file":"activity-data-review.js","sourceRoot":"","sources":["../../server/activities/activity-data-review.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus, UpdateActivityInstanceStateAddendum } from '@things-factory/worklist'\n\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc.js'\nimport { DataSample } from '../service/data-sample/data-sample.js'\nimport { createDataOoc } from '../controllers/create-data-ooc.js'\nimport { issueOocResolve } from '../controllers/issue-ooc-resolve.js'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, tx } = context.state\n const { input, output, state } = activityInstance\n\n if (state == ActivityInstanceStatus.Ended) {\n const { dataSampleId } = input || {}\n\n if (!dataSampleId) {\n throw new Error('Data sample ID is missing in the input.')\n }\n\n const dataSample = await tx.getRepository(DataSample).findOne({\n where: { domain: { id: domain.id }, id: dataSampleId },\n relations: ['domain', 'dataSet', 'creator', 'updater']\n })\n\n await tx.getRepository(DataSample).save({\n ...dataSample,\n output,\n state: DataOocStatus.REVIEWED\n })\n\n const { judgment, instruction } = output\n\n if (judgment == 'abnormal') {\n /* Review 결과가 Ooc 조치가 필요하다고 하면, DataOoc를 생성하고, DataOocResolve를 이슈한다. */\n var ooc = await createDataOoc(dataSample, dataSample.dataSet, context)\n\n ooc = await tx.getRepository(DataOoc).save({\n ...ooc,\n reviewedAt: activityInstance.terminatedAt,\n reviewer: activityInstance.updater,\n correctiveInstruction: instruction,\n reviewActivityInstance: activityInstance,\n state: DataOocStatus.REVIEWED\n })\n\n await issueOocResolve(ooc, dataSample.dataSet, instruction, context)\n }\n }\n}\n\nexport const ActivityDataReview = {\n name: 'Data Review',\n description: 'Tasks for data review',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 1,\n searchKeys: [\n {\n name: 'dataSetName',\n description: 'DataSet name',\n inputKey: 'dataSetName',\n tKey: 'data-set-name'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataSetId',\n description: 'DataSet Id.',\n tag: 'dataSetId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'dataSetName',\n description: 'DataSet name',\n tag: 'dataSetName',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-data-review-edit',\n viewType: 'custom-element',\n viewSource: 'activity-data-review-view',\n reportType: 'custom-element',\n reportSource: 'activity-data-review-view',\n thumbnail: '/assets/images/data-collect.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActivityOocResolve = void 0;
4
4
  const worklist_1 = require("@things-factory/worklist");
5
- const data_ooc_1 = require("../service/data-ooc/data-ooc");
5
+ const data_ooc_js_1 = require("../service/data-ooc/data-ooc.js");
6
6
  async function callback(activityInstance, addendum, context) {
7
7
  var _a;
8
8
  const { tx, user, domain } = context.state;
@@ -21,7 +21,7 @@ async function callback(activityInstance, addendum, context) {
21
21
  const corrector = (_a = activityThreads[0]) === null || _a === void 0 ? void 0 : _a.assignee;
22
22
  const { dataOocId } = input;
23
23
  const correctiveAction = output === null || output === void 0 ? void 0 : output.action;
24
- var dataOoc = await tx.getRepository(data_ooc_1.DataOoc).findOne({
24
+ var dataOoc = await tx.getRepository(data_ooc_js_1.DataOoc).findOne({
25
25
  where: {
26
26
  domain: { id: domain.id },
27
27
  id: dataOocId
@@ -29,7 +29,7 @@ async function callback(activityInstance, addendum, context) {
29
29
  relations: ['dataSet']
30
30
  });
31
31
  /* dataOoc Review 결과를 dataOoc 엔티티에 반영한다. */
32
- dataOoc = await tx.getRepository(data_ooc_1.DataOoc).save(Object.assign(Object.assign({}, dataOoc), { correctedAt: terminatedAt, corrector: corrector, correctiveAction, updater: user, state: data_ooc_1.DataOocStatus.CORRECTED }));
32
+ dataOoc = await tx.getRepository(data_ooc_js_1.DataOoc).save(Object.assign(Object.assign({}, dataOoc), { correctedAt: terminatedAt, corrector: corrector, correctiveAction, updater: user, state: data_ooc_js_1.DataOocStatus.CORRECTED }));
33
33
  }
34
34
  }
35
35
  exports.ActivityOocResolve = {
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ooc-resolve.js","sourceRoot":"","sources":["../../server/activities/activity-ooc-resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActivityInstance,\n ActivityInstanceStatus,\n ActivityThread,\n ActivityThreadStatus,\n UpdateActivityInstanceStateAddendum\n} from '@things-factory/worklist'\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { tx, user, domain } = context.state\n const { id, input, output, state, terminatedAt } = activityInstance\n const { causedBy } = addendum || {}\n\n /* Resolve Activity가 완료되면, 해당 data-ooc 엔티티의 correctiveAction, correctorId, correctedAt 을 update한다. */\n if (state == ActivityInstanceStatus.Ended) {\n const activityThreads = await tx.getRepository(ActivityThread).find({\n where: {\n domain: { id: domain.id },\n activityInstance: { id },\n state: ActivityThreadStatus.Ended\n },\n relations: ['assignee']\n })\n\n const corrector = activityThreads[0]?.assignee\n\n const { dataOocId } = input\n const correctiveAction = output?.action\n\n var dataOoc = await tx.getRepository(DataOoc).findOne({\n where: {\n domain: { id: domain.id },\n id: dataOocId\n },\n relations: ['dataSet']\n })\n\n /* dataOoc Review 결과를 dataOoc 엔티티에 반영한다. */\n dataOoc = await tx.getRepository(DataOoc).save({\n ...dataOoc,\n correctedAt: terminatedAt,\n corrector: corrector,\n correctiveAction,\n updater: user,\n state: DataOocStatus.CORRECTED\n })\n }\n}\n\nexport const ActivityOocResolve = {\n name: 'OOC Resolve',\n description: 'Task to take remedial action based on Out Of Control data',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 3,\n searchKeys: [\n {\n name: 'dataOocId',\n description: 'OOC Id.',\n inputKey: 'dataOocId',\n tKey: 'data-ooc-id'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataOocId',\n description: 'OOC id',\n tag: 'dataOocId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'instruction',\n description: 'Instructions for resolving OOC',\n tag: 'instruction',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'textarea',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'action',\n description: 'Action Description',\n tag: 'action',\n hidden: false,\n mandatory: true,\n inout: 'out',\n type: 'textarea',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-ooc-resolve-edit',\n viewType: 'custom-element',\n viewSource: 'activity-ooc-resolve-view',\n reportType: 'custom-element',\n reportSource: 'data-ooc-report-page',\n thumbnail: '/assets/images/ooc.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
1
+ {"version":3,"file":"activity-ooc-resolve.js","sourceRoot":"","sources":["../../server/activities/activity-ooc-resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActivityInstance,\n ActivityInstanceStatus,\n ActivityThread,\n ActivityThreadStatus,\n UpdateActivityInstanceStateAddendum\n} from '@things-factory/worklist'\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc.js'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { tx, user, domain } = context.state\n const { id, input, output, state, terminatedAt } = activityInstance\n const { causedBy } = addendum || {}\n\n /* Resolve Activity가 완료되면, 해당 data-ooc 엔티티의 correctiveAction, correctorId, correctedAt 을 update한다. */\n if (state == ActivityInstanceStatus.Ended) {\n const activityThreads = await tx.getRepository(ActivityThread).find({\n where: {\n domain: { id: domain.id },\n activityInstance: { id },\n state: ActivityThreadStatus.Ended\n },\n relations: ['assignee']\n })\n\n const corrector = activityThreads[0]?.assignee\n\n const { dataOocId } = input\n const correctiveAction = output?.action\n\n var dataOoc = await tx.getRepository(DataOoc).findOne({\n where: {\n domain: { id: domain.id },\n id: dataOocId\n },\n relations: ['dataSet']\n })\n\n /* dataOoc Review 결과를 dataOoc 엔티티에 반영한다. */\n dataOoc = await tx.getRepository(DataOoc).save({\n ...dataOoc,\n correctedAt: terminatedAt,\n corrector: corrector,\n correctiveAction,\n updater: user,\n state: DataOocStatus.CORRECTED\n })\n }\n}\n\nexport const ActivityOocResolve = {\n name: 'OOC Resolve',\n description: 'Task to take remedial action based on Out Of Control data',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 3,\n searchKeys: [\n {\n name: 'dataOocId',\n description: 'OOC Id.',\n inputKey: 'dataOocId',\n tKey: 'data-ooc-id'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataOocId',\n description: 'OOC id',\n tag: 'dataOocId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'instruction',\n description: 'Instructions for resolving OOC',\n tag: 'instruction',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'textarea',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'action',\n description: 'Action Description',\n tag: 'action',\n hidden: false,\n mandatory: true,\n inout: 'out',\n type: 'textarea',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-ooc-resolve-edit',\n viewType: 'custom-element',\n viewSource: 'activity-ooc-resolve-view',\n reportType: 'custom-element',\n reportSource: 'data-ooc-report-page',\n thumbnail: '/assets/images/ooc.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActivityOocReview = void 0;
4
4
  const worklist_1 = require("@things-factory/worklist");
5
- const data_ooc_1 = require("../service/data-ooc/data-ooc");
6
- const issue_ooc_resolve_1 = require("../controllers/issue-ooc-resolve");
5
+ const data_ooc_js_1 = require("../service/data-ooc/data-ooc.js");
6
+ const issue_ooc_resolve_js_1 = require("../controllers/issue-ooc-resolve.js");
7
7
  async function callback(activityInstance, addendum, context) {
8
8
  const { domain, user, tx } = context.state;
9
9
  const { input, output, state, terminatedAt } = activityInstance;
@@ -11,7 +11,7 @@ async function callback(activityInstance, addendum, context) {
11
11
  if (state == worklist_1.ActivityInstanceStatus.Ended) {
12
12
  const { dataOocId } = input;
13
13
  const correctiveInstruction = output === null || output === void 0 ? void 0 : output.instruction;
14
- var dataOoc = await tx.getRepository(data_ooc_1.DataOoc).findOne({
14
+ var dataOoc = await tx.getRepository(data_ooc_js_1.DataOoc).findOne({
15
15
  where: {
16
16
  domain: { id: domain.id },
17
17
  id: dataOocId
@@ -19,8 +19,8 @@ async function callback(activityInstance, addendum, context) {
19
19
  relations: ['dataSet']
20
20
  });
21
21
  /* dataOoc Review 결과를 dataOoc 엔티티에 반영한다. */
22
- dataOoc = await tx.getRepository(data_ooc_1.DataOoc).save(Object.assign(Object.assign({}, dataOoc), { reviewedAt: terminatedAt, reviewer: user, correctiveInstruction, state: data_ooc_1.DataOocStatus.REVIEWED }));
23
- await (0, issue_ooc_resolve_1.issueOocResolve)(dataOoc, dataOoc.dataSet, correctiveInstruction, context);
22
+ dataOoc = await tx.getRepository(data_ooc_js_1.DataOoc).save(Object.assign(Object.assign({}, dataOoc), { reviewedAt: terminatedAt, reviewer: user, correctiveInstruction, state: data_ooc_js_1.DataOocStatus.REVIEWED }));
23
+ await (0, issue_ooc_resolve_js_1.issueOocResolve)(dataOoc, dataOoc.dataSet, correctiveInstruction, context);
24
24
  }
25
25
  }
26
26
  exports.ActivityOocReview = {
@@ -1 +1 @@
1
- {"version":3,"file":"activity-ooc-review.js","sourceRoot":"","sources":["../../server/activities/activity-ooc-review.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus, UpdateActivityInstanceStateAddendum } from '@things-factory/worklist'\n\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc'\nimport { issueOocResolve } from '../controllers/issue-ooc-resolve'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, user, tx } = context.state\n const { input, output, state, terminatedAt } = activityInstance\n const { causedBy } = addendum || {}\n\n if (state == ActivityInstanceStatus.Ended) {\n const { dataOocId } = input\n const correctiveInstruction = output?.instruction\n\n var dataOoc = await tx.getRepository(DataOoc).findOne({\n where: {\n domain: { id: domain.id },\n id: dataOocId\n },\n relations: ['dataSet']\n })\n\n /* dataOoc Review 결과를 dataOoc 엔티티에 반영한다. */\n dataOoc = await tx.getRepository(DataOoc).save({\n ...dataOoc,\n reviewedAt: terminatedAt,\n reviewer: user,\n correctiveInstruction,\n state: DataOocStatus.REVIEWED\n })\n\n await issueOocResolve(dataOoc, dataOoc.dataSet, correctiveInstruction, context)\n }\n}\n\nexport const ActivityOocReview = {\n name: 'OOC Review',\n description: 'Task to take remedial action based on Out Of Control data',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 2,\n searchKeys: [\n {\n name: 'dataOocId',\n description: 'OOC Id.',\n inputKey: 'dataOocId',\n tKey: 'data-ooc-id'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataOocId',\n description: 'OOC id',\n tag: 'dataOocId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'Instruction',\n description: 'Instructions for preventing OOC',\n tag: 'instruction',\n hidden: false,\n mandatory: true,\n inout: 'out',\n type: 'textarea',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-ooc-review-edit',\n viewType: 'custom-element',\n viewSource: 'activity-ooc-review-view',\n reportType: 'custom-element',\n reportSource: 'data-ooc-report-page',\n thumbnail: '/assets/images/ooc.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
1
+ {"version":3,"file":"activity-ooc-review.js","sourceRoot":"","sources":["../../server/activities/activity-ooc-review.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActivityInstance, ActivityInstanceStatus, UpdateActivityInstanceStateAddendum } from '@things-factory/worklist'\n\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc.js'\nimport { issueOocResolve } from '../controllers/issue-ooc-resolve.js'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, user, tx } = context.state\n const { input, output, state, terminatedAt } = activityInstance\n const { causedBy } = addendum || {}\n\n if (state == ActivityInstanceStatus.Ended) {\n const { dataOocId } = input\n const correctiveInstruction = output?.instruction\n\n var dataOoc = await tx.getRepository(DataOoc).findOne({\n where: {\n domain: { id: domain.id },\n id: dataOocId\n },\n relations: ['dataSet']\n })\n\n /* dataOoc Review 결과를 dataOoc 엔티티에 반영한다. */\n dataOoc = await tx.getRepository(DataOoc).save({\n ...dataOoc,\n reviewedAt: terminatedAt,\n reviewer: user,\n correctiveInstruction,\n state: DataOocStatus.REVIEWED\n })\n\n await issueOocResolve(dataOoc, dataOoc.dataSet, correctiveInstruction, context)\n }\n}\n\nexport const ActivityOocReview = {\n name: 'OOC Review',\n description: 'Task to take remedial action based on Out Of Control data',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'quality',\n activityType: 'user',\n priority: 2,\n searchKeys: [\n {\n name: 'dataOocId',\n description: 'OOC Id.',\n inputKey: 'dataOocId',\n tKey: 'data-ooc-id'\n }\n ],\n startingType: '',\n multiple: 'single',\n model: [\n {\n name: 'dataOocId',\n description: 'OOC id',\n tag: 'dataOocId',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'Instruction',\n description: 'Instructions for preventing OOC',\n tag: 'instruction',\n hidden: false,\n mandatory: true,\n inout: 'out',\n type: 'textarea',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'custom-element',\n uiSource: 'activity-ooc-review-edit',\n viewType: 'custom-element',\n viewSource: 'activity-ooc-review-view',\n reportType: 'custom-element',\n reportSource: 'data-ooc-report-page',\n thumbnail: '/assets/images/ooc.png',\n standardTime: 24 * 60 * 60, // seconds\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const worklist_1 = require("@things-factory/worklist");
4
- const activity_data_collect_1 = require("./activity-data-collect");
5
- const activity_data_review_1 = require("./activity-data-review");
6
- const activity_ooc_resolve_1 = require("./activity-ooc-resolve");
7
- const activity_ooc_review_1 = require("./activity-ooc-review");
8
- [activity_ooc_review_1.ActivityOocReview, activity_ooc_resolve_1.ActivityOocResolve, activity_data_collect_1.ActivityDataCollect, activity_data_review_1.ActivityDataReview].forEach(template => {
4
+ const activity_data_collect_js_1 = require("./activity-data-collect.js");
5
+ const activity_data_review_js_1 = require("./activity-data-review.js");
6
+ const activity_ooc_resolve_js_1 = require("./activity-ooc-resolve.js");
7
+ const activity_ooc_review_js_1 = require("./activity-ooc-review.js");
8
+ [activity_ooc_review_js_1.ActivityOocReview, activity_ooc_resolve_js_1.ActivityOocResolve, activity_data_collect_js_1.ActivityDataCollect, activity_data_review_js_1.ActivityDataReview].forEach(template => {
9
9
  worklist_1.ActivityInstallations.installActivityTemplate(template);
10
10
  });
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/activities/index.ts"],"names":[],"mappings":";;AAAA,uDAAgE;AAEhE,mEAA6D;AAC7D,iEAA2D;AAC3D,iEAA2D;AAC3D,+DAGC;AAAA,CAAC,uCAAiB,EAAE,yCAAkB,EAAE,2CAAmB,EAAE,yCAAkB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnG,gCAAqB,CAAC,uBAAuB,CAAC,QAAe,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA","sourcesContent":["import { ActivityInstallations } from '@things-factory/worklist'\n\nimport { ActivityDataCollect } from './activity-data-collect'\nimport { ActivityDataReview } from './activity-data-review'\nimport { ActivityOocResolve } from './activity-ooc-resolve'\nimport { ActivityOocReview } from './activity-ooc-review'\n\n/* activity templates installation */\n;[ActivityOocReview, ActivityOocResolve, ActivityDataCollect, ActivityDataReview].forEach(template => {\n ActivityInstallations.installActivityTemplate(template as any)\n})\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/activities/index.ts"],"names":[],"mappings":";;AAAA,uDAAgE;AAEhE,yEAAgE;AAChE,uEAA8D;AAC9D,uEAA8D;AAC9D,qEAGC;AAAA,CAAC,0CAAiB,EAAE,4CAAkB,EAAE,8CAAmB,EAAE,4CAAkB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnG,gCAAqB,CAAC,uBAAuB,CAAC,QAAe,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA","sourcesContent":["import { ActivityInstallations } from '@things-factory/worklist'\n\nimport { ActivityDataCollect } from './activity-data-collect.js'\nimport { ActivityDataReview } from './activity-data-review.js'\nimport { ActivityOocResolve } from './activity-ooc-resolve.js'\nimport { ActivityOocReview } from './activity-ooc-review.js'\n\n/* activity templates installation */\n;[ActivityOocReview, ActivityOocResolve, ActivityDataCollect, ActivityDataReview].forEach(template => {\n ActivityInstallations.installActivityTemplate(template as any)\n})\n"]}
@@ -1,4 +1,4 @@
1
- import { DataSet } from '../service/data-set/data-set';
2
- import { DataSample } from '../service/data-sample/data-sample';
3
- import { DataOoc } from '../service/data-ooc/data-ooc';
1
+ import { DataSet } from '../service/data-set/data-set.js';
2
+ import { DataSample } from '../service/data-sample/data-sample.js';
3
+ import { DataOoc } from '../service/data-ooc/data-ooc.js';
4
4
  export declare function createDataOoc(dataSample: DataSample, dataSet: DataSet, context: ResolverContext): Promise<DataOoc>;
@@ -3,22 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createDataOoc = createDataOoc;
4
4
  const typeorm_1 = require("typeorm");
5
5
  const integration_base_1 = require("@things-factory/integration-base");
6
- const data_ooc_1 = require("../service/data-ooc/data-ooc");
6
+ const data_ooc_js_1 = require("../service/data-ooc/data-ooc.js");
7
7
  async function createDataOoc(dataSample, dataSet, context) {
8
8
  const { domain, user, tx } = context.state;
9
9
  const { collectedAt, data, ooc, oos, judgment, workDate, workShift } = dataSample;
10
- const dataOoc = await tx.getRepository(data_ooc_1.DataOoc).save(Object.assign(Object.assign({}, dataSample), { history: [
10
+ const dataOoc = await tx.getRepository(data_ooc_js_1.DataOoc).save(Object.assign(Object.assign({}, dataSample), { history: [
11
11
  {
12
12
  user: {
13
13
  id: user === null || user === void 0 ? void 0 : user.id,
14
- // @ts-ignore
15
14
  username: (user === null || user === void 0 ? void 0 : user.username) || (user === null || user === void 0 ? void 0 : user.email),
16
15
  name: user === null || user === void 0 ? void 0 : user.name
17
16
  },
18
- state: data_ooc_1.DataOocStatus.ISSUED,
17
+ state: data_ooc_js_1.DataOocStatus.ISSUED,
19
18
  timestamp: collectedAt
20
19
  }
21
- ], state: data_ooc_1.DataOocStatus.ISSUED, dataSample: dataSample }));
20
+ ], state: data_ooc_js_1.DataOocStatus.ISSUED, dataSample: dataSample }));
22
21
  if (dataSet.outlierScenarioId) {
23
22
  const scenario = await tx.getRepository(integration_base_1.Scenario).findOne({
24
23
  where: {
@@ -50,7 +49,6 @@ async function createDataOoc(dataSample, dataSet, context) {
50
49
  },
51
50
  updator: {
52
51
  id: user.id,
53
- // @ts-ignore
54
52
  username: user.username || user.email,
55
53
  email: user.email,
56
54
  name: user.name
@@ -1 +1 @@
1
- {"version":3,"file":"create-data-ooc.js","sourceRoot":"","sources":["../../server/controllers/create-data-ooc.ts"],"names":[],"mappings":";;AAQA,sCAuEC;AA/ED,qCAA4B;AAE5B,uEAA2D;AAI3D,2DAAqE;AAE9D,KAAK,UAAU,aAAa,CACjC,UAAsB,EACtB,OAAgB,EAChB,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;IAEjF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,IAAI,iCAC/C,UAAU,KACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE;oBACZ,aAAa;oBACb,QAAQ,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA;oBACvC,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;iBACjB;gBACD,KAAK,EAAE,wBAAa,CAAC,MAAM;gBAC3B,SAAS,EAAE,WAAW;aACvB;SACF,EACD,KAAK,EAAE,wBAAa,CAAC,MAAM,EAC3B,UAAU,EAAE,UAAU,IACtB,CAAA;IAEF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAQ,CAAC,CAAC,OAAO,CAAC;YACxD,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACtF,EAAE,EAAE,OAAO,CAAC,iBAAiB;aAC9B;YACD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;SAC1C,CAAC,CAAA;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,CAAC;gBACb,YAAY,EAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,EAAE;gBACtE,MAAM;gBACN,IAAI;gBACJ,SAAS,EAAE;oBACT,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,YAAY,EAAE,UAAU,CAAC,EAAE;oBAC3B,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,IAAI;oBACJ,GAAG;oBACH,GAAG;oBACH,QAAQ;oBACR,WAAW;oBACX,QAAQ;oBACR,SAAS;oBACT,MAAM,EAAE;wBACN,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;qBAClB;oBACD,OAAO,EAAE;wBACP,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,aAAa;wBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK;wBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,wDAAwD,OAAO,CAAC,IAAI,IAAI,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC","sourcesContent":["import { In } from 'typeorm'\n\nimport { Scenario } from '@things-factory/integration-base'\n\nimport { DataSet } from '../service/data-set/data-set'\nimport { DataSample } from '../service/data-sample/data-sample'\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc'\n\nexport async function createDataOoc(\n dataSample: DataSample,\n dataSet: DataSet,\n context: ResolverContext\n): Promise<DataOoc> {\n const { domain, user, tx } = context.state\n const { collectedAt, data, ooc, oos, judgment, workDate, workShift } = dataSample\n\n const dataOoc = await tx.getRepository(DataOoc).save({\n ...dataSample,\n history: [\n {\n user: {\n id: user?.id,\n // @ts-ignore\n username: user?.username || user?.email,\n name: user?.name\n },\n state: DataOocStatus.ISSUED,\n timestamp: collectedAt\n }\n ],\n state: DataOocStatus.ISSUED,\n dataSample: dataSample\n })\n\n if (dataSet.outlierScenarioId) {\n const scenario = await tx.getRepository(Scenario).findOne({\n where: {\n domain: domain.parentId ? { id: In([domain.id, domain.parentId]) } : { id: domain.id },\n id: dataSet.outlierScenarioId\n },\n relations: ['domain', 'steps', 'updater']\n })\n\n if (scenario) {\n scenario.start({\n instanceName: scenario.name + ':' + dataSet.name + ':' + dataSample.id,\n domain,\n user,\n variables: {\n dataOocId: dataOoc.id,\n dataSampleId: dataSample.id,\n dataSet: dataSet.id,\n data,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n domain: {\n id: domain.id,\n subdomain: domain.subdomain,\n name: domain.name\n },\n updator: {\n id: user.id,\n // @ts-ignore\n username: user.username || user.email,\n email: user.email,\n name: user.name\n }\n }\n })\n } else {\n console.error(`Cannot find the set outlier-scenario for the dataset(${dataSet.name}).`)\n }\n }\n\n return dataOoc\n}\n"]}
1
+ {"version":3,"file":"create-data-ooc.js","sourceRoot":"","sources":["../../server/controllers/create-data-ooc.ts"],"names":[],"mappings":";;AAQA,sCAqEC;AA7ED,qCAA4B;AAE5B,uEAA2D;AAI3D,iEAAwE;AAEjE,KAAK,UAAU,aAAa,CACjC,UAAsB,EACtB,OAAgB,EAChB,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC1C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;IAEjF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAO,CAAC,CAAC,IAAI,iCAC/C,UAAU,KACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE;oBACJ,EAAE,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE;oBACZ,QAAQ,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA;oBACvC,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;iBACjB;gBACD,KAAK,EAAE,2BAAa,CAAC,MAAM;gBAC3B,SAAS,EAAE,WAAW;aACvB;SACF,EACD,KAAK,EAAE,2BAAa,CAAC,MAAM,EAC3B,UAAU,EAAE,UAAU,IACtB,CAAA;IAEF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAQ,CAAC,CAAC,OAAO,CAAC;YACxD,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACtF,EAAE,EAAE,OAAO,CAAC,iBAAiB;aAC9B;YACD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;SAC1C,CAAC,CAAA;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,CAAC;gBACb,YAAY,EAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,EAAE;gBACtE,MAAM;gBACN,IAAI;gBACJ,SAAS,EAAE;oBACT,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,YAAY,EAAE,UAAU,CAAC,EAAE;oBAC3B,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,IAAI;oBACJ,GAAG;oBACH,GAAG;oBACH,QAAQ;oBACR,WAAW;oBACX,QAAQ;oBACR,SAAS;oBACT,MAAM,EAAE;wBACN,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;qBAClB;oBACD,OAAO,EAAE;wBACP,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK;wBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,wDAAwD,OAAO,CAAC,IAAI,IAAI,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC","sourcesContent":["import { In } from 'typeorm'\n\nimport { Scenario } from '@things-factory/integration-base'\n\nimport { DataSet } from '../service/data-set/data-set.js'\nimport { DataSample } from '../service/data-sample/data-sample.js'\nimport { DataOoc, DataOocStatus } from '../service/data-ooc/data-ooc.js'\n\nexport async function createDataOoc(\n dataSample: DataSample,\n dataSet: DataSet,\n context: ResolverContext\n): Promise<DataOoc> {\n const { domain, user, tx } = context.state\n const { collectedAt, data, ooc, oos, judgment, workDate, workShift } = dataSample\n\n const dataOoc = await tx.getRepository(DataOoc).save({\n ...dataSample,\n history: [\n {\n user: {\n id: user?.id,\n username: user?.username || user?.email,\n name: user?.name\n },\n state: DataOocStatus.ISSUED,\n timestamp: collectedAt\n }\n ],\n state: DataOocStatus.ISSUED,\n dataSample: dataSample\n })\n\n if (dataSet.outlierScenarioId) {\n const scenario = await tx.getRepository(Scenario).findOne({\n where: {\n domain: domain.parentId ? { id: In([domain.id, domain.parentId]) } : { id: domain.id },\n id: dataSet.outlierScenarioId\n },\n relations: ['domain', 'steps', 'updater']\n })\n\n if (scenario) {\n scenario.start({\n instanceName: scenario.name + ':' + dataSet.name + ':' + dataSample.id,\n domain,\n user,\n variables: {\n dataOocId: dataOoc.id,\n dataSampleId: dataSample.id,\n dataSet: dataSet.id,\n data,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n domain: {\n id: domain.id,\n subdomain: domain.subdomain,\n name: domain.name\n },\n updator: {\n id: user.id,\n username: user.username || user.email,\n email: user.email,\n name: user.name\n }\n }\n })\n } else {\n console.error(`Cannot find the set outlier-scenario for the dataset(${dataSet.name}).`)\n }\n }\n\n return dataOoc\n}\n"]}
@@ -1,3 +1,3 @@
1
- import { DataSample } from '../service/data-sample/data-sample';
2
- import { NewDataSample } from '../service/data-sample/data-sample-type';
1
+ import { DataSample } from '../service/data-sample/data-sample.js';
2
+ import { NewDataSample } from '../service/data-sample/data-sample-type.js';
3
3
  export declare function createDataSample(newDataSample: NewDataSample, context: ResolverContext): Promise<DataSample>;
@@ -12,11 +12,11 @@ const work_shift_1 = require("@things-factory/work-shift");
12
12
  const integration_base_1 = require("@things-factory/integration-base");
13
13
  const worklist_1 = require("@things-factory/worklist");
14
14
  const issue_1 = require("@things-factory/worklist/dist-server/controllers/activity-instance/issue");
15
- const data_sample_1 = require("../service/data-sample/data-sample");
16
- const data_set_1 = require("../service/data-set/data-set");
17
- const create_data_ooc_1 = require("./create-data-ooc");
18
- const issue_ooc_review_1 = require("./issue-ooc-review");
19
- const data_use_case_1 = require("./data-use-case");
15
+ const data_sample_js_1 = require("../service/data-sample/data-sample.js");
16
+ const data_set_js_1 = require("../service/data-set/data-set.js");
17
+ const create_data_ooc_js_1 = require("./create-data-ooc.js");
18
+ const issue_ooc_review_js_1 = require("./issue-ooc-review.js");
19
+ const data_use_case_js_1 = require("./data-use-case.js");
20
20
  // See README.md at ## Data Samples
21
21
  process.env.TZ = 'UTC';
22
22
  const fillDataKeys = (dataKeySet, data = {}) => {
@@ -54,7 +54,7 @@ const formatDate = (keys, _moment) => {
54
54
  };
55
55
  async function createDataSample(newDataSample, context) {
56
56
  const { domain, user, tx } = context.state;
57
- const dataSet = await tx.getRepository(data_set_1.DataSet).findOne({
57
+ const dataSet = await tx.getRepository(data_set_js_1.DataSet).findOne({
58
58
  where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id: newDataSample.dataSet.id },
59
59
  relations: ['dataKeySet']
60
60
  });
@@ -77,8 +77,8 @@ async function createDataSample(newDataSample, context) {
77
77
  partitionKeys = formatDate(partitionKeys, localDateTz);
78
78
  partitionKeys = replaceVariables(partitionKeys, newDataSample.data);
79
79
  const dataKeys = fillDataKeys(dataSet === null || dataSet === void 0 ? void 0 : dataSet.dataKeySet, newDataSample.data);
80
- const { ooc, oos, judgment } = data_use_case_1.DataUseCase.evaluate(dataSet, dataItems, newDataSample.data) || {};
81
- const old = await tx.getRepository(data_sample_1.DataSample).findOne({
80
+ const { ooc, oos, judgment } = data_use_case_js_1.DataUseCase.evaluate(dataSet, dataItems, newDataSample.data) || {};
81
+ const old = await tx.getRepository(data_sample_js_1.DataSample).findOne({
82
82
  where: Object.assign({ domain: { id: domain.id }, dataSet: { id: dataSet.id }, collectedAt }, dataKeys)
83
83
  });
84
84
  /*
@@ -102,7 +102,7 @@ async function createDataSample(newDataSample, context) {
102
102
  const attachment = await (0, attachment_base_1.createAttachment)(null, {
103
103
  attachment: {
104
104
  file: file.file,
105
- refType: data_sample_1.DataSample.name
105
+ refType: data_sample_js_1.DataSample.name
106
106
  }
107
107
  }, context);
108
108
  const fetched = await tx.getRepository(attachment_base_1.Attachment).findOneBy({ id: attachment.id });
@@ -130,7 +130,7 @@ async function createDataSample(newDataSample, context) {
130
130
  }
131
131
  }
132
132
  }
133
- const dataSample = await tx.getRepository(data_sample_1.DataSample).save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, old), { name: dataSet.name, description: dataSet.description, useCase: dataSet.useCase, type: dataSet.type }), newDataSample), dataKeys), { dataSetVersion: dataSet.version, domain,
133
+ const dataSample = await tx.getRepository(data_sample_js_1.DataSample).save(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, old), { name: dataSet.name, description: dataSet.description, useCase: dataSet.useCase, type: dataSet.type }), newDataSample), dataKeys), { dataSetVersion: dataSet.version, domain,
134
134
  partitionKeys,
135
135
  ooc,
136
136
  oos,
@@ -147,8 +147,8 @@ async function createDataSample(newDataSample, context) {
147
147
  tx.getRepository(attachment_base_1.Attachment).save(attachments);
148
148
  }
149
149
  if (ooc || oos) {
150
- const dataOoc = await (0, create_data_ooc_1.createDataOoc)(dataSample, dataSet, context);
151
- await (0, issue_ooc_review_1.issueOocReview)(dataOoc, dataSet, context);
150
+ const dataOoc = await (0, create_data_ooc_js_1.createDataOoc)(dataSample, dataSet, context);
151
+ await (0, issue_ooc_review_js_1.issueOocReview)(dataOoc, dataSet, context);
152
152
  try {
153
153
  shell_1.pubsub.publish('notification', {
154
154
  notification: {
@@ -237,7 +237,7 @@ async function createDataSample(newDataSample, context) {
237
237
  approvalLine: dataSet.reviewApprovalLine
238
238
  };
239
239
  dataSample.reviewActivityInstance = await (0, issue_1.issue)(activityInstance, context);
240
- await tx.getRepository(data_sample_1.DataSample).save(dataSample);
240
+ await tx.getRepository(data_sample_js_1.DataSample).save(dataSample);
241
241
  try {
242
242
  shell_1.pubsub.publish('notification', {
243
243
  notification: {
@@ -1 +1 @@
1
- {"version":3,"file":"create-data-sample.js","sourceRoot":"","sources":["../../server/controllers/create-data-sample.ts"],"names":[],"mappings":"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","sourcesContent":["import moment from 'moment-timezone'\nimport { In } from 'typeorm'\n\nimport { Attachment, createAttachment } from '@things-factory/attachment-base'\nimport { Role } from '@things-factory/auth-base'\nimport { logger } from '@things-factory/env'\nimport { getRedirectSubdomainPath, pubsub } from '@things-factory/shell'\nimport { getWorkDateAndShift } from '@things-factory/work-shift'\nimport { Scenario, publishData } from '@things-factory/integration-base'\nimport { Activity } from '@things-factory/worklist'\nimport { issue } from '@things-factory/worklist/dist-server/controllers/activity-instance/issue'\n\nimport { DataSample } from '../service/data-sample/data-sample'\nimport { NewDataSample } from '../service/data-sample/data-sample-type'\nimport { DataSet } from '../service/data-set/data-set'\nimport { createDataOoc } from './create-data-ooc'\nimport { issueOocReview } from './issue-ooc-review'\nimport { DataUseCase } from './data-use-case'\n\n// See README.md at ## Data Samples\nprocess.env.TZ = 'UTC'\n\nconst fillDataKeys = (dataKeySet, data = {}) => {\n const keys = dataKeySet?.dataKeyItems || []\n return keys.reduce((sum, key, index) => {\n const value = data[key.dataKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n\n// parse variable javascript string pattern\nconst replaceVariables = (keys, dic) => {\n for (const k in keys) {\n const matches = keys[k].match(/\\$\\{\\w*\\}/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, dic[m.slice(2, -1)])\n })\n }\n return keys\n}\n\n// It is required UTC date for Partitioning File System like AWS S3 from Athena.\n// ex) %YYYY, %MM, %DD\nconst formatDate = (keys, _moment) => {\n for (const k in keys) {\n const matches = keys[k].match(/%\\w*/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, _moment.format(m.substr(1)))\n })\n }\n return keys\n}\n\nexport async function createDataSample(newDataSample: NewDataSample, context: ResolverContext): Promise<DataSample> {\n const { domain, user, tx } = context.state\n\n const dataSet = await tx.getRepository(DataSet).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: newDataSample.dataSet.id },\n relations: ['dataKeySet']\n })\n\n const { dataItems = [], tag: publishTag, normalScenarioId, outlierScenarioId } = dataSet\n const collectedAt = newDataSample.collectedAt || new Date()\n\n const timezone = dataSet.timezone || domain.timezone || 'UTC'\n const format = 'YYYY-MM-DD'\n\n // workDate ex) 2022-04-04\n const { workDate, workShift } = await getWorkDateAndShift(domain, collectedAt, { timezone, format })\n\n // local time dataSet timezone or domain timezone or default 'UTC'\n\n const localDateTz = moment(collectedAt).tz(timezone)\n const defaultPartitionKeys = {\n domain: domain.subdomain,\n datasetid: newDataSample.dataSet.id /* It should not be 'data_set_id' as column name duplicated for Glue */,\n date: localDateTz.format(format) /* local time date */,\n workdate: workDate /* working date */,\n workshift: workShift\n }\n\n var partitionKeys = {\n ...defaultPartitionKeys,\n ...dataSet.partitionKeys\n }\n\n partitionKeys = formatDate(partitionKeys, localDateTz)\n partitionKeys = replaceVariables(partitionKeys, newDataSample.data)\n\n const dataKeys = fillDataKeys(dataSet?.dataKeySet, newDataSample.data)\n\n const { ooc, oos, judgment } = DataUseCase.evaluate(dataSet, dataItems, newDataSample.data) || {}\n\n const old = await tx.getRepository(DataSample).findOne({\n where: {\n domain: { id: domain.id },\n dataSet: { id: dataSet.id },\n collectedAt,\n ...dataKeys\n }\n })\n\n /* \n pre-processing for file attachment.\n currently only support type of [FileUpload].\n If [FileUpload[]] type needed, add 'files' type for dataset\n */\n\n const data = newDataSample.data\n const attachments = []\n\n for (let dataItem of dataItems) {\n if (dataItem.type == 'file') {\n const tag = dataItem.tag\n const filesArray = data[tag]\n\n if (tag && filesArray && filesArray.length > 0) {\n let pathsArray = []\n\n for (let files of filesArray) {\n let paths = []\n\n if (files instanceof Array) {\n for (let file of files) {\n if (file) {\n const attachment = await createAttachment(\n null,\n {\n attachment: {\n file: file.file,\n refType: DataSample.name\n }\n },\n context\n )\n\n const fetched = await tx.getRepository(Attachment).findOneBy({ id: attachment.id })\n if (fetched) {\n attachments.push(fetched)\n paths.push({\n id: fetched.id,\n mimetype: fetched.mimetype,\n name: fetched.name,\n fullpath: fetched.fullpath\n })\n } else {\n throw `Failed to save file(${attachment.name})`\n }\n } else {\n paths.push(null)\n }\n }\n }\n\n pathsArray.push(paths)\n }\n\n data[tag] = pathsArray\n }\n }\n }\n\n const dataSample = await tx.getRepository(DataSample).save({\n ...old,\n name: dataSet.name,\n description: dataSet.description,\n useCase: dataSet.useCase,\n type: dataSet.type,\n ...newDataSample,\n ...dataKeys,\n dataSetVersion: dataSet.version,\n domain,\n partitionKeys,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n creator: user,\n updater: user\n })\n\n if (publishTag) {\n publishData(publishTag, data, { domain, user })\n }\n\n /* post-process for for file attachment. */\n if (attachments.length > 0) {\n attachments.forEach(attachment => (attachment.refId = dataSample.id))\n tx.getRepository(Attachment).save(attachments)\n }\n\n if (ooc || oos) {\n const dataOoc = await createDataOoc(dataSample, dataSet, context)\n await issueOocReview(dataOoc, dataSet, context)\n\n try {\n pubsub.publish('notification', {\n notification: {\n domain,\n type: 'error',\n title: `[OOC] ${dataSet.name}`,\n body: `Data OOC occurred on '${dataSet.name}'`,\n url: getRedirectSubdomainPath(context, domain.subdomain, `/data-ooc/${dataOoc.id}`),\n timestamp: collectedAt\n }\n })\n } catch (err) {\n logger.error('Notification', err)\n }\n } else {\n if (normalScenarioId) {\n const scenario = await tx.getRepository(Scenario).findOne({\n where: {\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n id: normalScenarioId\n },\n relations: ['domain', 'steps', 'updater']\n })\n\n if (scenario) {\n scenario.start({\n instanceName: scenario.name + ':' + dataSet.name + ':' + dataSample.id,\n domain,\n user,\n variables: {\n dataSampleId: dataSample.id,\n dataSet: dataSet.id,\n data,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n domain: {\n id: domain.id,\n subdomain: domain.subdomain,\n name: domain.name\n },\n updator: {\n id: user.id,\n email: user.email,\n name: user.name\n }\n }\n })\n } else {\n console.error(`Cannot find the set normal-scenario for the dataset(${dataSet.name}).`)\n }\n }\n\n if (dataSet.requiresReview) {\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n name: 'Data Review'\n })) as Activity\n\n if (activity) {\n const assigneeRole =\n dataSet.supervisoryRoleId &&\n (await tx.getRepository(Role).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n id: dataSet.supervisoryRoleId\n }))\n\n // const assignees = dataSet.supervisoryRoleId\n // ? [{ type: 'Role', value: dataSet.supervisoryRoleId, assigneeRole }]\n // : []\n\n /* 해당 dataset의 supervisor로 하여금, data를 리뷰하고 instruction을 작성해서, approvalLine을 이용해서 승인을 한다. */\n if (assigneeRole) {\n dataSample.dataItems = dataItems\n const activityInstance = {\n name: `[Data 검토] ${dataSet.name}`,\n description: dataSet.description,\n activityId: activity.id,\n dueAt: new Date(collectedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),\n input: {\n dataSampleId: dataSample.id\n },\n assigneeRole,\n threadsMin: 1,\n threadsMax: 1,\n approvalLine: dataSet.reviewApprovalLine\n }\n\n dataSample.reviewActivityInstance = await issue(activityInstance as any, context)\n await tx.getRepository(DataSample).save(dataSample)\n\n try {\n pubsub.publish('notification', {\n notification: {\n domain,\n type: 'info',\n title: `[Data Review] ${dataSet.name}`,\n body: `Data Review occurred on '${dataSet.name}'`,\n url: getRedirectSubdomainPath(context, domain.subdomain, `/data-sample/${dataSample.id}`),\n timestamp: collectedAt\n }\n })\n } catch (err) {\n logger.error('Notification', err)\n }\n } else {\n console.error(\n `Assignees are not set. So Data Review task for ${dataSet.name}(${dataSet.id}) could not be issued.`\n )\n }\n } else {\n console.error('Data Review Activity not installed.')\n }\n }\n }\n\n return dataSample\n}\n"]}
1
+ {"version":3,"file":"create-data-sample.js","sourceRoot":"","sources":["../../server/controllers/create-data-sample.ts"],"names":[],"mappings":"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","sourcesContent":["import moment from 'moment-timezone'\nimport { In } from 'typeorm'\n\nimport { Attachment, createAttachment } from '@things-factory/attachment-base'\nimport { Role } from '@things-factory/auth-base'\nimport { logger } from '@things-factory/env'\nimport { getRedirectSubdomainPath, pubsub } from '@things-factory/shell'\nimport { getWorkDateAndShift } from '@things-factory/work-shift'\nimport { Scenario, publishData } from '@things-factory/integration-base'\nimport { Activity } from '@things-factory/worklist'\nimport { issue } from '@things-factory/worklist/dist-server/controllers/activity-instance/issue'\n\nimport { DataSample } from '../service/data-sample/data-sample.js'\nimport { NewDataSample } from '../service/data-sample/data-sample-type.js'\nimport { DataSet } from '../service/data-set/data-set.js'\nimport { createDataOoc } from './create-data-ooc.js'\nimport { issueOocReview } from './issue-ooc-review.js'\nimport { DataUseCase } from './data-use-case.js'\n\n// See README.md at ## Data Samples\nprocess.env.TZ = 'UTC'\n\nconst fillDataKeys = (dataKeySet, data = {}) => {\n const keys = dataKeySet?.dataKeyItems || []\n return keys.reduce((sum, key, index) => {\n const value = data[key.dataKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n\n// parse variable javascript string pattern\nconst replaceVariables = (keys, dic) => {\n for (const k in keys) {\n const matches = keys[k].match(/\\$\\{\\w*\\}/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, dic[m.slice(2, -1)])\n })\n }\n return keys\n}\n\n// It is required UTC date for Partitioning File System like AWS S3 from Athena.\n// ex) %YYYY, %MM, %DD\nconst formatDate = (keys, _moment) => {\n for (const k in keys) {\n const matches = keys[k].match(/%\\w*/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, _moment.format(m.substr(1)))\n })\n }\n return keys\n}\n\nexport async function createDataSample(newDataSample: NewDataSample, context: ResolverContext): Promise<DataSample> {\n const { domain, user, tx } = context.state\n\n const dataSet = await tx.getRepository(DataSet).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: newDataSample.dataSet.id },\n relations: ['dataKeySet']\n })\n\n const { dataItems = [], tag: publishTag, normalScenarioId, outlierScenarioId } = dataSet\n const collectedAt = newDataSample.collectedAt || new Date()\n\n const timezone = dataSet.timezone || domain.timezone || 'UTC'\n const format = 'YYYY-MM-DD'\n\n // workDate ex) 2022-04-04\n const { workDate, workShift } = await getWorkDateAndShift(domain, collectedAt, { timezone, format })\n\n // local time dataSet timezone or domain timezone or default 'UTC'\n\n const localDateTz = moment(collectedAt).tz(timezone)\n const defaultPartitionKeys = {\n domain: domain.subdomain,\n datasetid: newDataSample.dataSet.id /* It should not be 'data_set_id' as column name duplicated for Glue */,\n date: localDateTz.format(format) /* local time date */,\n workdate: workDate /* working date */,\n workshift: workShift\n }\n\n var partitionKeys = {\n ...defaultPartitionKeys,\n ...dataSet.partitionKeys\n }\n\n partitionKeys = formatDate(partitionKeys, localDateTz)\n partitionKeys = replaceVariables(partitionKeys, newDataSample.data)\n\n const dataKeys = fillDataKeys(dataSet?.dataKeySet, newDataSample.data)\n\n const { ooc, oos, judgment } = DataUseCase.evaluate(dataSet, dataItems, newDataSample.data) || {}\n\n const old = await tx.getRepository(DataSample).findOne({\n where: {\n domain: { id: domain.id },\n dataSet: { id: dataSet.id },\n collectedAt,\n ...dataKeys\n }\n })\n\n /* \n pre-processing for file attachment.\n currently only support type of [FileUpload].\n If [FileUpload[]] type needed, add 'files' type for dataset\n */\n\n const data = newDataSample.data\n const attachments = []\n\n for (let dataItem of dataItems) {\n if (dataItem.type == 'file') {\n const tag = dataItem.tag\n const filesArray = data[tag]\n\n if (tag && filesArray && filesArray.length > 0) {\n let pathsArray = []\n\n for (let files of filesArray) {\n let paths = []\n\n if (files instanceof Array) {\n for (let file of files) {\n if (file) {\n const attachment = await createAttachment(\n null,\n {\n attachment: {\n file: file.file,\n refType: DataSample.name\n }\n },\n context\n )\n\n const fetched = await tx.getRepository(Attachment).findOneBy({ id: attachment.id })\n if (fetched) {\n attachments.push(fetched)\n paths.push({\n id: fetched.id,\n mimetype: fetched.mimetype,\n name: fetched.name,\n fullpath: fetched.fullpath\n })\n } else {\n throw `Failed to save file(${attachment.name})`\n }\n } else {\n paths.push(null)\n }\n }\n }\n\n pathsArray.push(paths)\n }\n\n data[tag] = pathsArray\n }\n }\n }\n\n const dataSample = await tx.getRepository(DataSample).save({\n ...old,\n name: dataSet.name,\n description: dataSet.description,\n useCase: dataSet.useCase,\n type: dataSet.type,\n ...newDataSample,\n ...dataKeys,\n dataSetVersion: dataSet.version,\n domain,\n partitionKeys,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n creator: user,\n updater: user\n })\n\n if (publishTag) {\n publishData(publishTag, data, { domain, user })\n }\n\n /* post-process for for file attachment. */\n if (attachments.length > 0) {\n attachments.forEach(attachment => (attachment.refId = dataSample.id))\n tx.getRepository(Attachment).save(attachments)\n }\n\n if (ooc || oos) {\n const dataOoc = await createDataOoc(dataSample, dataSet, context)\n await issueOocReview(dataOoc, dataSet, context)\n\n try {\n pubsub.publish('notification', {\n notification: {\n domain,\n type: 'error',\n title: `[OOC] ${dataSet.name}`,\n body: `Data OOC occurred on '${dataSet.name}'`,\n url: getRedirectSubdomainPath(context, domain.subdomain, `/data-ooc/${dataOoc.id}`),\n timestamp: collectedAt\n }\n })\n } catch (err) {\n logger.error('Notification', err)\n }\n } else {\n if (normalScenarioId) {\n const scenario = await tx.getRepository(Scenario).findOne({\n where: {\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n id: normalScenarioId\n },\n relations: ['domain', 'steps', 'updater']\n })\n\n if (scenario) {\n scenario.start({\n instanceName: scenario.name + ':' + dataSet.name + ':' + dataSample.id,\n domain,\n user,\n variables: {\n dataSampleId: dataSample.id,\n dataSet: dataSet.id,\n data,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n domain: {\n id: domain.id,\n subdomain: domain.subdomain,\n name: domain.name\n },\n updator: {\n id: user.id,\n email: user.email,\n name: user.name\n }\n }\n })\n } else {\n console.error(`Cannot find the set normal-scenario for the dataset(${dataSet.name}).`)\n }\n }\n\n if (dataSet.requiresReview) {\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n name: 'Data Review'\n })) as Activity\n\n if (activity) {\n const assigneeRole =\n dataSet.supervisoryRoleId &&\n (await tx.getRepository(Role).findOneBy({\n domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },\n id: dataSet.supervisoryRoleId\n }))\n\n // const assignees = dataSet.supervisoryRoleId\n // ? [{ type: 'Role', value: dataSet.supervisoryRoleId, assigneeRole }]\n // : []\n\n /* 해당 dataset의 supervisor로 하여금, data를 리뷰하고 instruction을 작성해서, approvalLine을 이용해서 승인을 한다. */\n if (assigneeRole) {\n dataSample.dataItems = dataItems\n const activityInstance = {\n name: `[Data 검토] ${dataSet.name}`,\n description: dataSet.description,\n activityId: activity.id,\n dueAt: new Date(collectedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),\n input: {\n dataSampleId: dataSample.id\n },\n assigneeRole,\n threadsMin: 1,\n threadsMax: 1,\n approvalLine: dataSet.reviewApprovalLine\n }\n\n dataSample.reviewActivityInstance = await issue(activityInstance as any, context)\n await tx.getRepository(DataSample).save(dataSample)\n\n try {\n pubsub.publish('notification', {\n notification: {\n domain,\n type: 'info',\n title: `[Data Review] ${dataSet.name}`,\n body: `Data Review occurred on '${dataSet.name}'`,\n url: getRedirectSubdomainPath(context, domain.subdomain, `/data-sample/${dataSample.id}`),\n timestamp: collectedAt\n }\n })\n } catch (err) {\n logger.error('Notification', err)\n }\n } else {\n console.error(\n `Assignees are not set. So Data Review task for ${dataSet.name}(${dataSet.id}) could not be issued.`\n )\n }\n } else {\n console.error('Data Review Activity not installed.')\n }\n }\n }\n\n return dataSample\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { DataItem } from '../service/data-set/data-item-type';
2
- import { DataSet } from '../service/data-set/data-set';
1
+ import { DataItem } from '../service/data-set/data-item-type.js';
2
+ import { DataSet } from '../service/data-set/data-set.js';
3
3
  export type DataItemSpec = {
4
4
  type: string;
5
5
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"data-use-case.js","sourceRoot":"","sources":["../../server/controllers/data-use-case.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataItem } from '../service/data-set/data-item-type'\nimport { DataSet } from '../service/data-set/data-set'\n\nexport type DataItemSpec = {\n type: string\n label: string\n name: string\n property?: { [option: string]: any }\n}\n\nexport type DataItemSpecSet = {\n name: string\n description: string\n help?: string\n specs: DataItemSpec[]\n}\n\nexport type EvaluationResult = {\n oos: boolean\n ooc: boolean\n judgment?: { [tag: string]: { ooc: boolean; oos: boolean } }\n}\n\nexport abstract class DataUseCase {\n static registry: { [name: string]: DataUseCase } = {}\n\n public static registerUseCase(name: string, provider: DataUseCase) {\n DataUseCase.registry[name] = provider\n }\n\n public static getUseCaseNames() {\n return Object.keys(DataUseCase.registry)\n }\n\n public static getUseCase(name: string): DataUseCase | undefined {\n return DataUseCase.registry[name]\n }\n\n public static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult {\n var ooc = false\n var oos = false\n var judgment: { [tag: string]: { ooc: boolean; oos: boolean } } = {}\n\n if (!dataSet.useCase) {\n return { ooc, oos }\n }\n\n const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim())\n const useCases = useCaseNames.map(useCaseName => DataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase)\n\n for (let i = 0; i < dataItems.length; i++) {\n const dataItem = dataItems[i]\n const { active, tag } = dataItem\n if (!active || !tag) {\n continue\n }\n\n let values: any | any[] = data && data[tag]\n if (values == null) {\n continue // TODO what if in case no value ?\n }\n\n if (!(values instanceof Array)) {\n values = [values]\n }\n\n let oocForTag = false\n let oosForTag = false\n\n for (let j = 0; j < useCases.length; j++) {\n const useCase = useCases[j]\n\n const specs = dataItem.spec?.[dataSet.useCase]\n if (!specs) {\n continue\n }\n\n const result = useCase.evaluate(specs, values)\n\n if (result) {\n oocForTag ||= result.ooc\n oosForTag ||= result.oos\n ooc ||= result.ooc\n oos ||= result.oos\n }\n }\n\n judgment[tag] = {\n ooc: oocForTag,\n oos: oosForTag\n }\n }\n\n return { ooc, oos, judgment }\n }\n\n public abstract evaluate(specs: any, values: any[]): EvaluationResult\n}\n"]}
1
+ {"version":3,"file":"data-use-case.js","sourceRoot":"","sources":["../../server/controllers/data-use-case.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataItem } from '../service/data-set/data-item-type.js'\nimport { DataSet } from '../service/data-set/data-set.js'\n\nexport type DataItemSpec = {\n type: string\n label: string\n name: string\n property?: { [option: string]: any }\n}\n\nexport type DataItemSpecSet = {\n name: string\n description: string\n help?: string\n specs: DataItemSpec[]\n}\n\nexport type EvaluationResult = {\n oos: boolean\n ooc: boolean\n judgment?: { [tag: string]: { ooc: boolean; oos: boolean } }\n}\n\nexport abstract class DataUseCase {\n static registry: { [name: string]: DataUseCase } = {}\n\n public static registerUseCase(name: string, provider: DataUseCase) {\n DataUseCase.registry[name] = provider\n }\n\n public static getUseCaseNames() {\n return Object.keys(DataUseCase.registry)\n }\n\n public static getUseCase(name: string): DataUseCase | undefined {\n return DataUseCase.registry[name]\n }\n\n public static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult {\n var ooc = false\n var oos = false\n var judgment: { [tag: string]: { ooc: boolean; oos: boolean } } = {}\n\n if (!dataSet.useCase) {\n return { ooc, oos }\n }\n\n const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim())\n const useCases = useCaseNames.map(useCaseName => DataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase)\n\n for (let i = 0; i < dataItems.length; i++) {\n const dataItem = dataItems[i]\n const { active, tag } = dataItem\n if (!active || !tag) {\n continue\n }\n\n let values: any | any[] = data && data[tag]\n if (values == null) {\n continue // TODO what if in case no value ?\n }\n\n if (!(values instanceof Array)) {\n values = [values]\n }\n\n let oocForTag = false\n let oosForTag = false\n\n for (let j = 0; j < useCases.length; j++) {\n const useCase = useCases[j]\n\n const specs = dataItem.spec?.[dataSet.useCase]\n if (!specs) {\n continue\n }\n\n const result = useCase.evaluate(specs, values)\n\n if (result) {\n oocForTag ||= result.ooc\n oosForTag ||= result.oos\n ooc ||= result.ooc\n oos ||= result.oos\n }\n }\n\n judgment[tag] = {\n ooc: oocForTag,\n oos: oosForTag\n }\n }\n\n return { ooc, oos, judgment }\n }\n\n public abstract evaluate(specs: any, values: any[]): EvaluationResult\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { DataSet } from '../service/data-set/data-set';
1
+ import { DataSet } from '../service/data-set/data-set.js';
2
2
  export declare function getDataFinalizeCrontabSchedule(dataSet: DataSet, context: ResolverContext): Promise<string>;
3
3
  export declare function finalizeLatestDataCollection(dataSetId: string, context: ResolverContext): Promise<boolean>;
4
4
  export declare function finalizeDataCollection(dataSetId: string, date: string, period: string, context: ResolverContext): Promise<boolean>;