@things-factory/dataset 8.0.77 → 8.0.84

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 (36) hide show
  1. package/dist-server/activities/activity-data-collect.js +8 -4
  2. package/dist-server/activities/activity-data-collect.js.map +1 -1
  3. package/dist-server/activities/activity-data-review.js +5 -2
  4. package/dist-server/activities/activity-data-review.js.map +1 -1
  5. package/dist-server/activities/activity-ooc-review.js +2 -0
  6. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  7. package/dist-server/controllers/create-data-ooc.js +2 -1
  8. package/dist-server/controllers/create-data-ooc.js.map +1 -1
  9. package/dist-server/controllers/create-data-sample.js +2 -2
  10. package/dist-server/controllers/create-data-sample.js.map +1 -1
  11. package/dist-server/controllers/finalize-data-collection.js +6 -4
  12. package/dist-server/controllers/finalize-data-collection.js.map +1 -1
  13. package/dist-server/controllers/issue-data-collection-task.js +9 -5
  14. package/dist-server/controllers/issue-data-collection-task.js.map +1 -1
  15. package/dist-server/controllers/issue-ooc-resolve.js +11 -6
  16. package/dist-server/controllers/issue-ooc-resolve.js.map +1 -1
  17. package/dist-server/controllers/issue-ooc-review.js +9 -6
  18. package/dist-server/controllers/issue-ooc-review.js.map +1 -1
  19. package/dist-server/controllers/query-data-summary-by-period.js +3 -1
  20. package/dist-server/controllers/query-data-summary-by-period.js.map +1 -1
  21. package/dist-server/service/data-ooc/index.d.ts +1 -1
  22. package/dist-server/service/data-sample/index.d.ts +1 -1
  23. package/dist-server/service/data-set/index.d.ts +1 -1
  24. package/dist-server/service/index.d.ts +2 -2
  25. package/dist-server/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +3 -3
  27. package/server/activities/activity-data-collect.ts +9 -4
  28. package/server/activities/activity-data-review.ts +6 -2
  29. package/server/activities/activity-ooc-review.ts +3 -0
  30. package/server/controllers/create-data-ooc.ts +3 -1
  31. package/server/controllers/create-data-sample.ts +2 -2
  32. package/server/controllers/finalize-data-collection.ts +8 -4
  33. package/server/controllers/issue-data-collection-task.ts +11 -5
  34. package/server/controllers/issue-ooc-resolve.ts +12 -6
  35. package/server/controllers/issue-ooc-review.ts +10 -6
  36. package/server/controllers/query-data-summary-by-period.ts +4 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/dataset",
3
- "version": "8.0.77",
3
+ "version": "8.0.84",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -50,11 +50,11 @@
50
50
  "@things-factory/scheduler-client": "^8.0.75",
51
51
  "@things-factory/shell": "^8.0.64",
52
52
  "@things-factory/work-shift": "^8.0.75",
53
- "@things-factory/worklist": "^8.0.77",
53
+ "@things-factory/worklist": "^8.0.84",
54
54
  "cron-parser": "^4.3.0",
55
55
  "moment-timezone": "^0.5.45",
56
56
  "simple-statistics": "^7.8.3",
57
57
  "statistics": "^3.3.0"
58
58
  },
59
- "gitHead": "28afe4065a9d768a222760bf85165680a2e40a55"
59
+ "gitHead": "6a2160ca93c951ba0eae9ef36bb33ca79c53eefd"
60
60
  }
@@ -19,10 +19,15 @@ async function callback(
19
19
  const { input, output, state } = activityInstance
20
20
 
21
21
  if (state == ActivityInstanceStatus.Ended) {
22
- const activity = (await tx.getRepository(Activity).findOneBy({
23
- domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
24
- name: 'Collect Data'
25
- })) as Activity
22
+ var activities = await tx.getRepository(Activity).find({
23
+ where: {
24
+ domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
25
+ name: 'Collect Data'
26
+ }
27
+ })
28
+
29
+ // Prioritize the activity in the current domain
30
+ const activity = activities.find(a => a.domainId === domain.id) || activities.find(a => a.domainId === domain.parentId)
26
31
 
27
32
  /* collect-data 액티비티는 한명의 assignee(thread)만 수행하는 multiple: false 액티비티이다. 따라서, output에는 assignee key가 없이, 순수한 data만 들어있다. */
28
33
  const data = output
@@ -35,7 +35,8 @@ async function callback(
35
35
 
36
36
  if (judgment == 'abnormal') {
37
37
  /* Review 결과가 Ooc 조치가 필요하다고 하면, DataOoc를 생성하고, DataOocResolve를 이슈한다. */
38
- var ooc = await createDataOoc(dataSample, dataSample.dataSet, context)
38
+ const dataSet = dataSample.dataSet
39
+ var ooc = await createDataOoc(dataSample, dataSet, context)
39
40
 
40
41
  ooc = await tx.getRepository(DataOoc).save({
41
42
  ...ooc,
@@ -46,7 +47,10 @@ async function callback(
46
47
  state: DataOocStatus.REVIEWED
47
48
  })
48
49
 
49
- await issueOocResolve(ooc, dataSample.dataSet, instruction, context)
50
+ // save() dataSet relation이 손실되므로 다시 설정
51
+ ooc.dataSet = dataSet
52
+
53
+ await issueOocResolve(ooc, dataSet, instruction, context)
50
54
  }
51
55
  }
52
56
  }
@@ -35,6 +35,9 @@ async function callback(
35
35
  state: DataOocStatus.REVIEWED
36
36
  })
37
37
 
38
+ // save() 후 dataSet relation이 손실되므로 다시 설정
39
+ dataOoc.dataSet = dataSet
40
+
38
41
  await issueOocResolve(dataOoc, dataSet, correctiveInstruction, context)
39
42
  }
40
43
  }
@@ -33,7 +33,7 @@ export async function createDataOoc(
33
33
  })
34
34
 
35
35
  if (dataSet.outlierScenarioId) {
36
- const scenario = await tx.getRepository(Scenario).findOne({
36
+ var scenarios = await tx.getRepository(Scenario).find({
37
37
  where: {
38
38
  domain: domain.parentId ? { id: In([domain.id, domain.parentId]) } : { id: domain.id },
39
39
  id: dataSet.outlierScenarioId
@@ -41,6 +41,8 @@ export async function createDataOoc(
41
41
  relations: ['domain', 'steps', 'updater']
42
42
  })
43
43
 
44
+ const scenario = scenarios.find(s => s.domain.id === domain.id) || scenarios.find(s => s.domain.id === domain.parentId)
45
+
44
46
  if (scenario) {
45
47
  scenario.start({
46
48
  instanceName: scenario.name + ':' + dataSet.name + ':' + dataSample.id,
@@ -291,8 +291,8 @@ export async function createDataSample(newDataSample: NewDataSample, context: Re
291
291
  approvalLine: dataSet.reviewApprovalLine
292
292
  }
293
293
 
294
- dataSample.reviewActivityInstance = await issue(activityInstance as any, context)
295
- await getRepository(DataSample, tx).save(dataSample)
294
+ const reviewActivityInstance = await issue(activityInstance as any, context)
295
+ await getRepository(DataSample, tx).update({ id: dataSample.id }, { reviewActivityInstance })
296
296
 
297
297
  try {
298
298
  pubsub.publish('notification', {
@@ -205,11 +205,13 @@ export async function finalizeLatestDataCollection(dataSetId: string, context: R
205
205
  const { domain, user, tx } = context.state
206
206
 
207
207
  try {
208
- const dataSet = await tx.getRepository(DataSet).findOne({
208
+ var dataSets = await tx.getRepository(DataSet).find({
209
209
  where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId },
210
210
  relations: ['dataKeySet']
211
211
  })
212
212
 
213
+ const dataSet = dataSets.find(ds => ds.domainId === domain.id) || dataSets.find(ds => ds.domainId === domain.parentId)
214
+
213
215
  const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []
214
216
  const dataItems = dataSet.dataItems.filter(item => item.stat)
215
217
  const initialSummary = dataItems.reduce((sum, item) => {
@@ -314,14 +316,16 @@ export async function finalizeDataCollection(
314
316
  const { domain, user, tx } = context.state
315
317
 
316
318
  try {
317
- const dataSet =
319
+ var dataSets =
318
320
  dataSetId &&
319
- (await tx.getRepository(DataSet).findOne({
321
+ (await tx.getRepository(DataSet).find({
320
322
  where: { domain: In([domain.id, domain.parentId].filter(Boolean)), id: dataSetId },
321
323
  relations: ['dataKeySet']
322
324
  }))
323
325
 
324
- const dataKeyItems = dataSet.dataKeySet?.dataKeyItems || []
326
+ const dataSet = dataSets?.find(ds => ds.domainId === domain.id) || dataSets?.find(ds => ds.domainId === domain.parentId)
327
+
328
+ const dataKeyItems = dataSet?.dataKeySet?.dataKeyItems || []
325
329
  const dataItems = dataSet.dataItems.filter(item => item.stat)
326
330
  const initialSummary = dataItems.reduce((sum, item) => {
327
331
  sum[item.tag] = []
@@ -17,7 +17,7 @@ export async function issueDataCollectionTask(
17
17
  throw new Error(`domain(${domainId}) not found`)
18
18
  }
19
19
 
20
- const dataSet = await tx.getRepository(DataSet).findOne({
20
+ var dataSets = await tx.getRepository(DataSet).find({
21
21
  where: {
22
22
  domain: {
23
23
  id: In([domain.id, domain.parentId].filter(Boolean))
@@ -27,10 +27,16 @@ export async function issueDataCollectionTask(
27
27
  relations: ['entryRole']
28
28
  })
29
29
 
30
- const activity = (await tx.getRepository(Activity).findOneBy({
31
- domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
32
- name: 'Collect Data'
33
- })) as Activity
30
+ const dataSet = dataSets.find(ds => ds.domainId === domain.id) || dataSets.find(ds => ds.domainId === domain.parentId)
31
+
32
+ var activities = await tx.getRepository(Activity).find({
33
+ where: {
34
+ domain: { id: In([domain.id, domain.parentId].filter(Boolean)) },
35
+ name: 'Collect Data'
36
+ }
37
+ })
38
+
39
+ const activity = activities.find(a => a.domainId === domain.id) || activities.find(a => a.domainId === domain.parentId)
34
40
 
35
41
  if (activity) {
36
42
  const { entryRole, timeLimit } = dataSet
@@ -15,10 +15,16 @@ export async function issueOocResolve(
15
15
  const { domain, user, tx } = context.state
16
16
  const { resolverRoleId, outlierApprovalLine } = dataSet
17
17
 
18
- const activity = (await tx.getRepository(Activity).findOneBy({
19
- domain: domain.parentId ? In([domain.id, domain.parentId]) : { id: domain.id },
20
- name: 'OOC Resolve'
21
- })) as Activity
18
+ var activities = await tx.getRepository(Activity).find({
19
+ where: {
20
+ domain: domain.parentId ? In([domain.id, domain.parentId]) : { id: domain.id },
21
+ name: 'OOC Resolve'
22
+ }
23
+ })
24
+
25
+ // Prioritize the activity in the current domain
26
+ // Assumes that if both exist, the one in my domain is the intended customization or override
27
+ var activity = activities.find(a => a.domainId === domain.id) || activities.find(a => a.domainId === domain.parentId)
22
28
 
23
29
  if (activity) {
24
30
  const assigneeRole =
@@ -45,8 +51,8 @@ export async function issueOocResolve(
45
51
  approvalLine: outlierApprovalLine
46
52
  }
47
53
 
48
- dataOoc.resolveActivityInstance = await issue(activityInstance, context)
49
- await tx.getRepository(DataOoc).save(dataOoc)
54
+ const resolveActivityInstance = await issue(activityInstance, context)
55
+ await tx.getRepository(DataOoc).update({ id: dataOoc.id }, { resolveActivityInstance })
50
56
  } else {
51
57
  console.error(
52
58
  `Assignees are not set. So, Data OOC Resolve task for ${dataOoc.name}(${dataOoc.id}) could not be issued.`
@@ -11,10 +11,14 @@ export async function issueOocReview(dataOoc: DataOoc, dataSet: DataSet, context
11
11
  const { domain, tx } = context.state
12
12
  const { collectedAt } = dataOoc
13
13
 
14
- const activity = (await tx.getRepository(Activity).findOneBy({
15
- domain: domain.parentId ? { id: In([domain.id, domain.parentId]) } : { id: domain.id },
16
- name: 'OOC Review'
17
- })) as Activity
14
+ var activities = await tx.getRepository(Activity).find({
15
+ where: {
16
+ domain: domain.parentId ? In([domain.id, domain.parentId]) : { id: domain.id },
17
+ name: 'OOC Review'
18
+ }
19
+ })
20
+
21
+ var activity = activities.find(a => a.domainId === domain.id) || activities.find(a => a.domainId === domain.parentId)
18
22
 
19
23
  if (activity) {
20
24
  const assigneeRole =
@@ -39,8 +43,8 @@ export async function issueOocReview(dataOoc: DataOoc, dataSet: DataSet, context
39
43
  approvalLine: []
40
44
  }
41
45
 
42
- dataOoc.reviewActivityInstance = await issue(activityInstance as any, context)
43
- await tx.getRepository(DataOoc).save(dataOoc)
46
+ const reviewActivityInstance = await issue(activityInstance as any, context)
47
+ await tx.getRepository(DataOoc).update({ id: dataOoc.id }, { reviewActivityInstance })
44
48
  } else {
45
49
  console.error(
46
50
  `Assignees are not set. So Data OOC Review task for ${dataOoc.name}(${dataOoc.id}) could not be issued.`
@@ -27,11 +27,14 @@ export async function queryDataSummaryByPeriod(
27
27
  const { domain, user, tx } = context.state
28
28
  const { t } = context
29
29
 
30
- const dataSet = await getRepository(DataSet).findOne({
30
+ var dataSets = await getRepository(DataSet).find({
31
31
  where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name: dataSetName },
32
32
  relations: ['dataKeySet']
33
33
  })
34
34
 
35
+ // Prioritize the dataset in the current domain
36
+ const dataSet = dataSets.find(ds => ds.domainId === domain.id) || dataSets.find(ds => ds.domainId === domain.parentId)
37
+
35
38
  if (!dataSet) {
36
39
  throw new Error(t('error.dataset not found', { dataSetName }))
37
40
  }