@things-factory/dataset 8.0.39 → 9.0.0-9.0.0-beta.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/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/components/data-entry-form.js.map +1 -1
  5. package/dist-client/pages/data-archive/data-archive-list-page.d.ts +1 -1
  6. package/dist-client/pages/data-archive/data-archive-list-page.js +1 -1
  7. package/dist-client/pages/data-archive/data-archive-list-page.js.map +1 -1
  8. package/dist-client/pages/data-entry/data-entry-list-page.js +2 -2
  9. package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
  10. package/dist-client/pages/data-key-set/data-key-set-list-page.d.ts +1 -1
  11. package/dist-client/pages/data-key-set/data-key-set-list-page.js +1 -1
  12. package/dist-client/pages/data-key-set/data-key-set-list-page.js.map +1 -1
  13. package/dist-client/pages/data-report/data-report-list-page.js +1 -1
  14. package/dist-client/pages/data-report/data-report-list-page.js.map +1 -1
  15. package/dist-client/pages/data-set/data-set-list-page.js +2 -5
  16. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  17. package/dist-client/pages/data-summary/data-summary-period-page.js +53 -37
  18. package/dist-client/pages/data-summary/data-summary-period-page.js.map +1 -1
  19. package/dist-client/tsconfig.tsbuildinfo +1 -1
  20. package/dist-server/activities/activity-data-review.js +9 -9
  21. package/dist-server/activities/activity-data-review.js.map +1 -1
  22. package/dist-server/activities/activity-ooc-resolve.js +3 -3
  23. package/dist-server/activities/activity-ooc-resolve.js.map +1 -1
  24. package/dist-server/activities/activity-ooc-review.js +5 -5
  25. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  26. package/dist-server/activities/index.js +5 -5
  27. package/dist-server/activities/index.js.map +1 -1
  28. package/dist-server/controllers/create-data-ooc.d.ts +3 -3
  29. package/dist-server/controllers/create-data-ooc.js +4 -6
  30. package/dist-server/controllers/create-data-ooc.js.map +1 -1
  31. package/dist-server/controllers/create-data-sample.d.ts +2 -2
  32. package/dist-server/controllers/create-data-sample.js +13 -13
  33. package/dist-server/controllers/create-data-sample.js.map +1 -1
  34. package/dist-server/controllers/data-use-case.d.ts +2 -2
  35. package/dist-server/controllers/data-use-case.js.map +1 -1
  36. package/dist-server/controllers/finalize-data-collection.d.ts +1 -1
  37. package/dist-server/controllers/finalize-data-collection.js +21 -21
  38. package/dist-server/controllers/finalize-data-collection.js.map +1 -1
  39. package/dist-server/controllers/index.d.ts +6 -6
  40. package/dist-server/controllers/index.js +6 -6
  41. package/dist-server/controllers/index.js.map +1 -1
  42. package/dist-server/controllers/issue-data-collection-task.js +3 -3
  43. package/dist-server/controllers/issue-data-collection-task.js.map +1 -1
  44. package/dist-server/controllers/issue-ooc-review.d.ts +2 -2
  45. package/dist-server/controllers/issue-ooc-review.js +2 -2
  46. package/dist-server/controllers/issue-ooc-review.js.map +1 -1
  47. package/dist-server/controllers/jasper-report.js +2 -2
  48. package/dist-server/controllers/jasper-report.js.map +1 -1
  49. package/dist-server/controllers/query-data-summary-by-period.d.ts +2 -2
  50. package/dist-server/controllers/query-data-summary-by-period.js +23 -17
  51. package/dist-server/controllers/query-data-summary-by-period.js.map +1 -1
  52. package/dist-server/controllers/shiny-report.js +2 -2
  53. package/dist-server/controllers/shiny-report.js.map +1 -1
  54. package/dist-server/engine/index.d.ts +1 -1
  55. package/dist-server/engine/index.js +1 -1
  56. package/dist-server/engine/index.js.map +1 -1
  57. package/dist-server/engine/task/create-data-sample.js +4 -4
  58. package/dist-server/engine/task/create-data-sample.js.map +1 -1
  59. package/dist-server/engine/task/index.d.ts +2 -2
  60. package/dist-server/engine/task/index.js +2 -2
  61. package/dist-server/engine/task/index.js.map +1 -1
  62. package/dist-server/engine/task/issue-collect-data.js +2 -2
  63. package/dist-server/engine/task/issue-collect-data.js.map +1 -1
  64. package/dist-server/index.d.ts +6 -6
  65. package/dist-server/index.js +6 -6
  66. package/dist-server/index.js.map +1 -1
  67. package/dist-server/routes.js +12 -12
  68. package/dist-server/routes.js.map +1 -1
  69. package/dist-server/service/data-archive/data-archive-mutation.d.ts +2 -2
  70. package/dist-server/service/data-archive/data-archive-mutation.js +22 -22
  71. package/dist-server/service/data-archive/data-archive-mutation.js.map +1 -1
  72. package/dist-server/service/data-archive/data-archive-query.d.ts +2 -2
  73. package/dist-server/service/data-archive/data-archive-query.js +10 -10
  74. package/dist-server/service/data-archive/data-archive-query.js.map +1 -1
  75. package/dist-server/service/data-archive/data-archive-type.d.ts +1 -1
  76. package/dist-server/service/data-archive/data-archive-type.js +2 -2
  77. package/dist-server/service/data-archive/data-archive-type.js.map +1 -1
  78. package/dist-server/service/data-archive/index.d.ts +3 -3
  79. package/dist-server/service/data-archive/index.js +5 -5
  80. package/dist-server/service/data-archive/index.js.map +1 -1
  81. package/dist-server/service/data-key-set/data-key-set-mutation.d.ts +2 -2
  82. package/dist-server/service/data-key-set/data-key-set-mutation.js +20 -20
  83. package/dist-server/service/data-key-set/data-key-set-mutation.js.map +1 -1
  84. package/dist-server/service/data-key-set/data-key-set-query.d.ts +2 -2
  85. package/dist-server/service/data-key-set/data-key-set-query.js +12 -12
  86. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -1
  87. package/dist-server/service/data-key-set/data-key-set-type.d.ts +3 -3
  88. package/dist-server/service/data-key-set/data-key-set-type.js +6 -6
  89. package/dist-server/service/data-key-set/data-key-set-type.js.map +1 -1
  90. package/dist-server/service/data-key-set/data-key-set.d.ts +2 -2
  91. package/dist-server/service/data-key-set/data-key-set.js +3 -3
  92. package/dist-server/service/data-key-set/data-key-set.js.map +1 -1
  93. package/dist-server/service/data-key-set/index.d.ts +3 -3
  94. package/dist-server/service/data-key-set/index.js +5 -5
  95. package/dist-server/service/data-key-set/index.js.map +1 -1
  96. package/dist-server/service/data-ooc/data-ooc-mutation.d.ts +2 -2
  97. package/dist-server/service/data-ooc/data-ooc-mutation.js +11 -11
  98. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -1
  99. package/dist-server/service/data-ooc/data-ooc-query.d.ts +5 -5
  100. package/dist-server/service/data-ooc/data-ooc-query.js +27 -27
  101. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  102. package/dist-server/service/data-ooc/data-ooc-subscription.d.ts +1 -1
  103. package/dist-server/service/data-ooc/data-ooc-subscription.js +3 -3
  104. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -1
  105. package/dist-server/service/data-ooc/data-ooc-type.d.ts +1 -1
  106. package/dist-server/service/data-ooc/data-ooc-type.js +4 -4
  107. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -1
  108. package/dist-server/service/data-ooc/data-ooc.d.ts +3 -3
  109. package/dist-server/service/data-ooc/data-ooc.js +10 -10
  110. package/dist-server/service/data-ooc/data-ooc.js.map +1 -1
  111. package/dist-server/service/data-ooc/index.d.ts +4 -4
  112. package/dist-server/service/data-ooc/index.js +6 -6
  113. package/dist-server/service/data-ooc/index.js.map +1 -1
  114. package/dist-server/service/data-sample/data-sample-mutation.d.ts +2 -2
  115. package/dist-server/service/data-sample/data-sample-mutation.js +7 -7
  116. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  117. package/dist-server/service/data-sample/data-sample-query.d.ts +6 -6
  118. package/dist-server/service/data-sample/data-sample-query.js +44 -37
  119. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  120. package/dist-server/service/data-sample/data-sample-type.d.ts +1 -1
  121. package/dist-server/service/data-sample/data-sample-type.js +2 -2
  122. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  123. package/dist-server/service/data-sample/data-sample.d.ts +3 -3
  124. package/dist-server/service/data-sample/data-sample.js +10 -10
  125. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  126. package/dist-server/service/data-sample/index.d.ts +3 -3
  127. package/dist-server/service/data-sample/index.js +5 -5
  128. package/dist-server/service/data-sample/index.js.map +1 -1
  129. package/dist-server/service/data-sensor/data-sensor-mutation.d.ts +2 -2
  130. package/dist-server/service/data-sensor/data-sensor-mutation.js +14 -14
  131. package/dist-server/service/data-sensor/data-sensor-mutation.js.map +1 -1
  132. package/dist-server/service/data-sensor/data-sensor-query.d.ts +3 -3
  133. package/dist-server/service/data-sensor/data-sensor-query.js +16 -16
  134. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  135. package/dist-server/service/data-sensor/data-sensor-type.d.ts +1 -1
  136. package/dist-server/service/data-sensor/data-sensor-type.js +2 -2
  137. package/dist-server/service/data-sensor/data-sensor-type.js.map +1 -1
  138. package/dist-server/service/data-sensor/data-sensor.d.ts +1 -1
  139. package/dist-server/service/data-sensor/data-sensor.js +3 -3
  140. package/dist-server/service/data-sensor/data-sensor.js.map +1 -1
  141. package/dist-server/service/data-sensor/index.d.ts +3 -3
  142. package/dist-server/service/data-sensor/index.js +5 -5
  143. package/dist-server/service/data-sensor/index.js.map +1 -1
  144. package/dist-server/service/data-set/data-set-mutation.d.ts +2 -2
  145. package/dist-server/service/data-set/data-set-mutation.js +32 -32
  146. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  147. package/dist-server/service/data-set/data-set-query.d.ts +4 -4
  148. package/dist-server/service/data-set/data-set-query.js +44 -44
  149. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  150. package/dist-server/service/data-set/data-set-type.d.ts +2 -2
  151. package/dist-server/service/data-set/data-set-type.js +5 -5
  152. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  153. package/dist-server/service/data-set/data-set.d.ts +2 -2
  154. package/dist-server/service/data-set/data-set.js +6 -6
  155. package/dist-server/service/data-set/data-set.js.map +1 -1
  156. package/dist-server/service/data-set/index.d.ts +3 -3
  157. package/dist-server/service/data-set/index.js +5 -5
  158. package/dist-server/service/data-set/index.js.map +1 -1
  159. package/dist-server/service/data-set-history/data-set-history-query.d.ts +4 -4
  160. package/dist-server/service/data-set-history/data-set-history-query.js +22 -22
  161. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  162. package/dist-server/service/data-set-history/data-set-history-type.d.ts +1 -1
  163. package/dist-server/service/data-set-history/data-set-history-type.js +2 -2
  164. package/dist-server/service/data-set-history/data-set-history-type.js.map +1 -1
  165. package/dist-server/service/data-set-history/data-set-history.d.ts +2 -2
  166. package/dist-server/service/data-set-history/data-set-history.js +3 -3
  167. package/dist-server/service/data-set-history/data-set-history.js.map +1 -1
  168. package/dist-server/service/data-set-history/event-subscriber.d.ts +2 -2
  169. package/dist-server/service/data-set-history/event-subscriber.js +4 -4
  170. package/dist-server/service/data-set-history/event-subscriber.js.map +1 -1
  171. package/dist-server/service/data-set-history/index.d.ts +3 -3
  172. package/dist-server/service/data-set-history/index.js +6 -6
  173. package/dist-server/service/data-set-history/index.js.map +1 -1
  174. package/dist-server/service/data-spec/data-spec-manager.d.ts +1 -1
  175. package/dist-server/service/data-spec/data-spec-manager.js.map +1 -1
  176. package/dist-server/service/data-spec/data-spec-query.d.ts +1 -1
  177. package/dist-server/service/data-spec/data-spec-query.js +9 -9
  178. package/dist-server/service/data-spec/data-spec-query.js.map +1 -1
  179. package/dist-server/service/data-spec/index.d.ts +2 -2
  180. package/dist-server/service/data-spec/index.js +4 -4
  181. package/dist-server/service/data-spec/index.js.map +1 -1
  182. package/dist-server/service/data-summary/data-summary-mutation.js +11 -8
  183. package/dist-server/service/data-summary/data-summary-mutation.js.map +1 -1
  184. package/dist-server/service/data-summary/data-summary-query.d.ts +5 -5
  185. package/dist-server/service/data-summary/data-summary-query.js +31 -31
  186. package/dist-server/service/data-summary/data-summary-query.js.map +1 -1
  187. package/dist-server/service/data-summary/data-summary-type.d.ts +1 -1
  188. package/dist-server/service/data-summary/data-summary-type.js +2 -2
  189. package/dist-server/service/data-summary/data-summary-type.js.map +1 -1
  190. package/dist-server/service/data-summary/data-summary.d.ts +2 -2
  191. package/dist-server/service/data-summary/data-summary.js +6 -6
  192. package/dist-server/service/data-summary/data-summary.js.map +1 -1
  193. package/dist-server/service/data-summary/index.d.ts +3 -3
  194. package/dist-server/service/data-summary/index.js +5 -5
  195. package/dist-server/service/data-summary/index.js.map +1 -1
  196. package/dist-server/service/index.d.ts +12 -12
  197. package/dist-server/service/index.js +37 -37
  198. package/dist-server/service/index.js.map +1 -1
  199. package/dist-server/tsconfig.tsbuildinfo +1 -1
  200. package/dist-server/utils/index.d.ts +1 -1
  201. package/dist-server/utils/index.js +1 -1
  202. package/dist-server/utils/index.js.map +1 -1
  203. package/package.json +26 -26
  204. package/translations/en.json +2 -0
  205. package/translations/ja.json +2 -0
  206. package/translations/ko.json +2 -0
  207. package/translations/ms.json +2 -0
  208. package/translations/zh.json +2 -0
  209. package/client/activities/activity-data-collect-edit.ts +0 -158
  210. package/client/activities/activity-data-collect-view.ts +0 -91
  211. package/client/activities/activity-data-review-edit.ts +0 -299
  212. package/client/activities/activity-data-review-view.ts +0 -249
  213. package/client/activities/activity-ooc-resolve-edit.ts +0 -202
  214. package/client/activities/activity-ooc-resolve-view.ts +0 -150
  215. package/client/activities/activity-ooc-review-edit.ts +0 -197
  216. package/client/activities/activity-ooc-review-view.ts +0 -136
  217. package/client/bootstrap.ts +0 -35
  218. package/client/components/checklist-entry-form.ts +0 -109
  219. package/client/components/data-entry-form.ts +0 -109
  220. package/client/index.ts +0 -1
  221. package/client/pages/data-archive/data-archive-list-page.ts +0 -277
  222. package/client/pages/data-archive/data-archive-request-popup.ts +0 -177
  223. package/client/pages/data-entry/data-entry-list-page.ts +0 -477
  224. package/client/pages/data-key-set/data-key-item-list.ts +0 -183
  225. package/client/pages/data-key-set/data-key-set-importer.ts +0 -89
  226. package/client/pages/data-key-set/data-key-set-list-page.ts +0 -413
  227. package/client/pages/data-ooc/data-ooc-list-page.ts +0 -549
  228. package/client/pages/data-ooc/data-ooc-page.ts +0 -167
  229. package/client/pages/data-ooc/data-ooc-view.ts +0 -239
  230. package/client/pages/data-ooc/data-oocs-page.ts +0 -200
  231. package/client/pages/data-report/data-report-embed-page.ts +0 -108
  232. package/client/pages/data-report/data-report-list-page.ts +0 -454
  233. package/client/pages/data-report/data-report-samples-page.ts +0 -174
  234. package/client/pages/data-report/jasper-report-oocs-page.ts +0 -110
  235. package/client/pages/data-report/jasper-report-samples-crosstab-page.ts +0 -110
  236. package/client/pages/data-report/jasper-report-samples-page.ts +0 -110
  237. package/client/pages/data-sample/data-sample-list-page.ts +0 -442
  238. package/client/pages/data-sample/data-sample-page.ts +0 -55
  239. package/client/pages/data-sample/data-sample-search-page.ts +0 -424
  240. package/client/pages/data-sample/data-sample-view.ts +0 -319
  241. package/client/pages/data-sample/data-samples-page.ts +0 -249
  242. package/client/pages/data-sensor/data-sensor-list-page.ts +0 -480
  243. package/client/pages/data-set/data-item-list.ts +0 -313
  244. package/client/pages/data-set/data-set-importer.ts +0 -89
  245. package/client/pages/data-set/data-set-list-page.ts +0 -1135
  246. package/client/pages/data-summary/data-summary-list-page.ts +0 -363
  247. package/client/pages/data-summary/data-summary-period-page.ts +0 -439
  248. package/client/pages/data-summary/data-summary-search-page.ts +0 -426
  249. package/client/pages/data-summary/data-summary-view.ts +0 -133
  250. package/client/route.ts +0 -91
  251. package/client/tsconfig.json +0 -13
  252. package/server/activities/activity-data-collect.ts +0 -100
  253. package/server/activities/activity-data-review.ts +0 -109
  254. package/server/activities/activity-ooc-resolve.ts +0 -123
  255. package/server/activities/activity-ooc-review.ts +0 -95
  256. package/server/activities/index.ts +0 -11
  257. package/server/controllers/create-data-ooc.ts +0 -80
  258. package/server/controllers/create-data-sample.ts +0 -323
  259. package/server/controllers/data-use-case.ts +0 -98
  260. package/server/controllers/finalize-data-collection.ts +0 -420
  261. package/server/controllers/index.ts +0 -6
  262. package/server/controllers/issue-data-collection-task.ts +0 -70
  263. package/server/controllers/issue-ooc-resolve.ts +0 -58
  264. package/server/controllers/issue-ooc-review.ts +0 -52
  265. package/server/controllers/jasper-report.ts +0 -186
  266. package/server/controllers/query-data-summary-by-period.ts +0 -178
  267. package/server/controllers/shiny-report.ts +0 -54
  268. package/server/engine/index.ts +0 -1
  269. package/server/engine/task/create-data-sample.ts +0 -100
  270. package/server/engine/task/index.ts +0 -2
  271. package/server/engine/task/issue-collect-data.ts +0 -45
  272. package/server/index.ts +0 -8
  273. package/server/routes.ts +0 -188
  274. package/server/service/data-archive/data-archive-mutation.ts +0 -273
  275. package/server/service/data-archive/data-archive-query.ts +0 -58
  276. package/server/service/data-archive/data-archive-type.ts +0 -48
  277. package/server/service/data-archive/data-archive.ts +0 -69
  278. package/server/service/data-archive/index.ts +0 -6
  279. package/server/service/data-key-set/data-key-item-type.ts +0 -31
  280. package/server/service/data-key-set/data-key-set-mutation.ts +0 -201
  281. package/server/service/data-key-set/data-key-set-query.ts +0 -68
  282. package/server/service/data-key-set/data-key-set-type.ts +0 -70
  283. package/server/service/data-key-set/data-key-set.ts +0 -86
  284. package/server/service/data-key-set/index.ts +0 -6
  285. package/server/service/data-ooc/data-ooc-mutation.ts +0 -154
  286. package/server/service/data-ooc/data-ooc-query.ts +0 -106
  287. package/server/service/data-ooc/data-ooc-subscription.ts +0 -48
  288. package/server/service/data-ooc/data-ooc-type.ts +0 -71
  289. package/server/service/data-ooc/data-ooc.ts +0 -259
  290. package/server/service/data-ooc/index.ts +0 -7
  291. package/server/service/data-sample/data-sample-mutation.ts +0 -18
  292. package/server/service/data-sample/data-sample-query.ts +0 -215
  293. package/server/service/data-sample/data-sample-type.ts +0 -47
  294. package/server/service/data-sample/data-sample.ts +0 -193
  295. package/server/service/data-sample/index.ts +0 -6
  296. package/server/service/data-sensor/data-sensor-mutation.ts +0 -116
  297. package/server/service/data-sensor/data-sensor-query.ts +0 -76
  298. package/server/service/data-sensor/data-sensor-type.ts +0 -116
  299. package/server/service/data-sensor/data-sensor.ts +0 -134
  300. package/server/service/data-sensor/index.ts +0 -6
  301. package/server/service/data-set/data-item-type.ts +0 -169
  302. package/server/service/data-set/data-set-mutation.ts +0 -552
  303. package/server/service/data-set/data-set-query.ts +0 -461
  304. package/server/service/data-set/data-set-type.ts +0 -204
  305. package/server/service/data-set/data-set.ts +0 -331
  306. package/server/service/data-set/index.ts +0 -6
  307. package/server/service/data-set-history/data-set-history-query.ts +0 -126
  308. package/server/service/data-set-history/data-set-history-type.ts +0 -12
  309. package/server/service/data-set-history/data-set-history.ts +0 -217
  310. package/server/service/data-set-history/event-subscriber.ts +0 -17
  311. package/server/service/data-set-history/index.ts +0 -7
  312. package/server/service/data-spec/data-spec-manager.ts +0 -21
  313. package/server/service/data-spec/data-spec-query.ts +0 -21
  314. package/server/service/data-spec/data-spec.ts +0 -45
  315. package/server/service/data-spec/index.ts +0 -5
  316. package/server/service/data-summary/data-summary-mutation.ts +0 -45
  317. package/server/service/data-summary/data-summary-query.ts +0 -179
  318. package/server/service/data-summary/data-summary-type.ts +0 -86
  319. package/server/service/data-summary/data-summary.ts +0 -170
  320. package/server/service/data-summary/index.ts +0 -7
  321. package/server/service/index.ts +0 -57
  322. package/server/tsconfig.json +0 -10
  323. package/server/utils/config-resolver.ts +0 -29
  324. package/server/utils/index.ts +0 -1
@@ -1,323 +0,0 @@
1
- import moment from 'moment-timezone'
2
- import { In } from 'typeorm'
3
-
4
- import { Attachment, createAttachment } from '@things-factory/attachment-base'
5
- import { Role } from '@things-factory/auth-base'
6
- import { logger } from '@things-factory/env'
7
- import { getRepository, getRedirectSubdomainPath, pubsub } from '@things-factory/shell'
8
- import { getWorkDateAndShift } from '@things-factory/work-shift'
9
- import { Scenario, publishData } from '@things-factory/integration-base'
10
- import { Activity } from '@things-factory/worklist'
11
- import { issue } from '@things-factory/worklist/dist-server/controllers/activity-instance/issue'
12
-
13
- import { DataSample } from '../service/data-sample/data-sample'
14
- import { NewDataSample } from '../service/data-sample/data-sample-type'
15
- import { DataSet } from '../service/data-set/data-set'
16
- import { createDataOoc } from './create-data-ooc'
17
- import { issueOocReview } from './issue-ooc-review'
18
- import { DataUseCase } from './data-use-case'
19
-
20
- // See README.md at ## Data Samples
21
- process.env.TZ = 'UTC'
22
-
23
- const fillDataKeys = (dataKeySet, data = {}) => {
24
- const keys = dataKeySet?.dataKeyItems || []
25
- return keys.reduce((sum, key, index) => {
26
- const value = data[key.dataKey]
27
- if (value != null) {
28
- sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value
29
- }
30
- return sum
31
- }, {})
32
- }
33
-
34
- // parse variable javascript string pattern
35
- const replaceVariables = (keys, dic) => {
36
- for (const k in keys) {
37
- const matches = keys[k].match(/\$\{\w*\}/g)
38
- matches &&
39
- matches.forEach(m => {
40
- keys[k] = keys[k].replace(m, dic[m.slice(2, -1)])
41
- })
42
- }
43
- return keys
44
- }
45
-
46
- // It is required UTC date for Partitioning File System like AWS S3 from Athena.
47
- // ex) %YYYY, %MM, %DD
48
- const formatDate = (keys, _moment) => {
49
- for (const k in keys) {
50
- const matches = keys[k].match(/%\w*/g)
51
- matches &&
52
- matches.forEach(m => {
53
- keys[k] = keys[k].replace(m, _moment.format(m.substr(1)))
54
- })
55
- }
56
- return keys
57
- }
58
-
59
- export async function createDataSample(newDataSample: NewDataSample, context: ResolverContext): Promise<DataSample> {
60
- const { domain, user, tx } = context.state
61
-
62
- const dataSet = await getRepository(DataSet, tx).findOne({
63
- where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: newDataSample.dataSet.id },
64
- relations: ['dataKeySet']
65
- })
66
-
67
- const { dataItems = [], tag: publishTag, normalScenarioId, outlierScenarioId } = dataSet
68
- const collectedAt = newDataSample.collectedAt || new Date()
69
-
70
- const timezone = dataSet.timezone || domain.timezone || 'UTC'
71
- const format = 'YYYY-MM-DD'
72
-
73
- // workDate ex) 2022-04-04
74
- const { workDate, workShift } = await getWorkDateAndShift(domain, collectedAt, { timezone, format })
75
-
76
- // local time dataSet timezone or domain timezone or default 'UTC'
77
-
78
- const localDateTz = moment(collectedAt).tz(timezone)
79
- const defaultPartitionKeys = {
80
- domain: domain.subdomain,
81
- datasetid: newDataSample.dataSet.id /* It should not be 'data_set_id' as column name duplicated for Glue */,
82
- date: localDateTz.format(format) /* local time date */,
83
- workdate: workDate /* working date */,
84
- workshift: workShift
85
- }
86
-
87
- var partitionKeys = {
88
- ...defaultPartitionKeys,
89
- ...dataSet.partitionKeys
90
- }
91
-
92
- partitionKeys = formatDate(partitionKeys, localDateTz)
93
- partitionKeys = replaceVariables(partitionKeys, newDataSample.data)
94
-
95
- const dataKeys = fillDataKeys(dataSet?.dataKeySet, newDataSample.data)
96
-
97
- const { ooc, oos, judgment } = DataUseCase.evaluate(dataSet, dataItems, newDataSample.data) || {}
98
-
99
- const old = await getRepository(DataSample, tx).findOne({
100
- where: {
101
- domain: { id: domain.id },
102
- dataSet: { id: dataSet.id },
103
- collectedAt,
104
- ...dataKeys
105
- }
106
- })
107
-
108
- /*
109
- pre-processing for file attachment.
110
- currently only support type of [FileUpload].
111
- If [FileUpload[]] type needed, add 'files' type for dataset
112
- */
113
-
114
- const data = newDataSample.data
115
- const attachments = []
116
-
117
- for (let dataItem of dataItems) {
118
- if (dataItem.type == 'file') {
119
- const tag = dataItem.tag
120
- const filesArray = data[tag]
121
-
122
- if (tag && filesArray && filesArray.length > 0) {
123
- let pathsArray = []
124
-
125
- for (let files of filesArray) {
126
- let paths = []
127
-
128
- if (files instanceof Array) {
129
- for (let file of files) {
130
- if (file) {
131
- const attachment = await createAttachment(
132
- null,
133
- {
134
- attachment: {
135
- file: file.file,
136
- refType: DataSample.name
137
- }
138
- },
139
- context
140
- )
141
-
142
- const fetched = await getRepository(Attachment, tx).findOneBy({ id: attachment.id })
143
- if (fetched) {
144
- attachments.push(fetched)
145
- paths.push({
146
- id: fetched.id,
147
- mimetype: fetched.mimetype,
148
- name: fetched.name,
149
- fullpath: fetched.fullpath
150
- })
151
- } else {
152
- throw `Failed to save file(${attachment.name})`
153
- }
154
- } else {
155
- paths.push(null)
156
- }
157
- }
158
- }
159
-
160
- pathsArray.push(paths)
161
- }
162
-
163
- data[tag] = pathsArray
164
- }
165
- }
166
- }
167
-
168
- const dataSample = await getRepository(DataSample, tx).save({
169
- ...old,
170
- name: dataSet.name,
171
- description: dataSet.description,
172
- useCase: dataSet.useCase,
173
- type: dataSet.type,
174
- ...newDataSample,
175
- ...dataKeys,
176
- dataSetVersion: dataSet.version,
177
- domain,
178
- partitionKeys,
179
- ooc,
180
- oos,
181
- judgment,
182
- collectedAt,
183
- workDate,
184
- workShift,
185
- creator: user,
186
- updater: user
187
- })
188
-
189
- if (publishTag) {
190
- publishData(publishTag, data, { domain, user })
191
- }
192
-
193
- /* post-process for for file attachment. */
194
- if (attachments.length > 0) {
195
- attachments.forEach(attachment => (attachment.refId = dataSample.id))
196
- getRepository(Attachment, tx).save(attachments)
197
- }
198
-
199
- if (ooc || oos) {
200
- const dataOoc = await createDataOoc(dataSample, dataSet, context)
201
- await issueOocReview(dataOoc, dataSet, context)
202
-
203
- try {
204
- pubsub.publish('notification', {
205
- notification: {
206
- domain,
207
- type: 'error',
208
- title: `[OOC] ${dataSet.name}`,
209
- body: `Data OOC occurred on '${dataSet.name}'`,
210
- url: getRedirectSubdomainPath(context, domain, `/data-ooc/${dataOoc.id}`),
211
- timestamp: collectedAt
212
- }
213
- })
214
- } catch (err) {
215
- logger.error('Notification', err)
216
- }
217
- } else {
218
- if (normalScenarioId) {
219
- const scenario = await getRepository(Scenario, tx).findOne({
220
- where: {
221
- domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
222
- id: normalScenarioId
223
- },
224
- relations: ['domain', 'steps', 'updater']
225
- })
226
-
227
- if (scenario) {
228
- scenario.start({
229
- instanceName: scenario.name + ':' + dataSet.name + ':' + dataSample.id,
230
- domain,
231
- user,
232
- variables: {
233
- dataSampleId: dataSample.id,
234
- dataSet: dataSet.id,
235
- data,
236
- ooc,
237
- oos,
238
- judgment,
239
- collectedAt,
240
- workDate,
241
- workShift,
242
- domain: {
243
- id: domain.id,
244
- subdomain: domain.subdomain,
245
- name: domain.name
246
- },
247
- updator: {
248
- id: user.id,
249
- email: user.email,
250
- name: user.name
251
- }
252
- }
253
- })
254
- } else {
255
- console.error(`Cannot find the set normal-scenario for the dataset(${dataSet.name}).`)
256
- }
257
- }
258
-
259
- if (dataSet.requiresReview) {
260
- const activity = (await getRepository(Activity, tx).findOneBy({
261
- domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
262
- name: 'Data Review'
263
- })) as Activity
264
-
265
- if (activity) {
266
- const assigneeRole =
267
- dataSet.supervisoryRoleId &&
268
- (await getRepository(Role, tx).findOneBy({
269
- domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
270
- id: dataSet.supervisoryRoleId
271
- }))
272
-
273
- // const assignees = dataSet.supervisoryRoleId
274
- // ? [{ type: 'Role', value: dataSet.supervisoryRoleId, assigneeRole }]
275
- // : []
276
-
277
- /* 해당 dataset의 supervisor로 하여금, data를 리뷰하고 instruction을 작성해서, approvalLine을 이용해서 승인을 한다. */
278
- if (assigneeRole) {
279
- dataSample.dataItems = dataItems
280
- const activityInstance = {
281
- name: `[Data 검토] ${dataSet.name}`,
282
- description: dataSet.description,
283
- activityId: activity.id,
284
- dueAt: new Date(collectedAt.getTime() + (activity.standardTime || 24 * 60 * 60) * 1000),
285
- input: {
286
- dataSampleId: dataSample.id
287
- },
288
- assigneeRole,
289
- threadsMin: 1,
290
- threadsMax: 1,
291
- approvalLine: dataSet.reviewApprovalLine
292
- }
293
-
294
- dataSample.reviewActivityInstance = await issue(activityInstance as any, context)
295
- await getRepository(DataSample, tx).save(dataSample)
296
-
297
- try {
298
- pubsub.publish('notification', {
299
- notification: {
300
- domain,
301
- type: 'info',
302
- title: `[Data Review] ${dataSet.name}`,
303
- body: `Data Review occurred on '${dataSet.name}'`,
304
- url: getRedirectSubdomainPath(context, domain, `/data-sample/${dataSample.id}`),
305
- timestamp: collectedAt
306
- }
307
- })
308
- } catch (err) {
309
- logger.error('Notification', err)
310
- }
311
- } else {
312
- console.error(
313
- `Assignees are not set. So Data Review task for ${dataSet.name}(${dataSet.id}) could not be issued.`
314
- )
315
- }
316
- } else {
317
- console.error('Data Review Activity not installed.')
318
- }
319
- }
320
- }
321
-
322
- return dataSample
323
- }
@@ -1,98 +0,0 @@
1
- import { DataItem } from '../service/data-set/data-item-type'
2
- import { DataSet } from '../service/data-set/data-set'
3
-
4
- export type DataItemSpec = {
5
- type: string
6
- label: string
7
- name: string
8
- property?: { [option: string]: any }
9
- }
10
-
11
- export type DataItemSpecSet = {
12
- name: string
13
- description: string
14
- help?: string
15
- specs: DataItemSpec[]
16
- }
17
-
18
- export type EvaluationResult = {
19
- oos: boolean
20
- ooc: boolean
21
- judgment?: { [tag: string]: { ooc: boolean; oos: boolean } }
22
- }
23
-
24
- export abstract class DataUseCase {
25
- static registry: { [name: string]: DataUseCase } = {}
26
-
27
- public static registerUseCase(name: string, provider: DataUseCase) {
28
- DataUseCase.registry[name] = provider
29
- }
30
-
31
- public static getUseCaseNames() {
32
- return Object.keys(DataUseCase.registry)
33
- }
34
-
35
- public static getUseCase(name: string): DataUseCase | undefined {
36
- return DataUseCase.registry[name]
37
- }
38
-
39
- public static evaluate(dataSet: DataSet, dataItems: DataItem[], data: any): EvaluationResult {
40
- var ooc = false
41
- var oos = false
42
- var judgment: { [tag: string]: { ooc: boolean; oos: boolean } } = {}
43
-
44
- if (!dataSet.useCase) {
45
- return { ooc, oos }
46
- }
47
-
48
- const useCaseNames = dataSet.useCase.split(',').map(useCaseName => useCaseName.trim())
49
- const useCases = useCaseNames.map(useCaseName => DataUseCase.getUseCase(useCaseName)).filter(useCase => !!useCase)
50
-
51
- for (let i = 0; i < dataItems.length; i++) {
52
- const dataItem = dataItems[i]
53
- const { active, tag } = dataItem
54
- if (!active || !tag) {
55
- continue
56
- }
57
-
58
- let values: any | any[] = data && data[tag]
59
- if (values == null) {
60
- continue // TODO what if in case no value ?
61
- }
62
-
63
- if (!(values instanceof Array)) {
64
- values = [values]
65
- }
66
-
67
- let oocForTag = false
68
- let oosForTag = false
69
-
70
- for (let j = 0; j < useCases.length; j++) {
71
- const useCase = useCases[j]
72
-
73
- const specs = dataItem.spec?.[dataSet.useCase]
74
- if (!specs) {
75
- continue
76
- }
77
-
78
- const result = useCase.evaluate(specs, values)
79
-
80
- if (result) {
81
- oocForTag ||= result.ooc
82
- oosForTag ||= result.oos
83
- ooc ||= result.ooc
84
- oos ||= result.oos
85
- }
86
- }
87
-
88
- judgment[tag] = {
89
- ooc: oocForTag,
90
- oos: oosForTag
91
- }
92
- }
93
-
94
- return { ooc, oos, judgment }
95
- }
96
-
97
- public abstract evaluate(specs: any, values: any[]): EvaluationResult
98
- }