@things-factory/dataset 6.2.33 → 6.2.34

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 (50) hide show
  1. package/client/activities/{activity-data-collect-assign-edit.ts → activity-data-review-edit.ts} +2 -2
  2. package/client/activities/{activity-data-collect-assign-view.ts → activity-data-review-view.ts} +2 -2
  3. package/client/bootstrap.ts +2 -2
  4. package/client/pages/data-set/data-set-list-page.ts +22 -3
  5. package/dist-client/activities/{activity-data-collect-assign-view.d.ts → activity-data-review-edit.d.ts} +2 -2
  6. package/dist-client/activities/{activity-data-collect-assign-view.js → activity-data-review-edit.js} +10 -10
  7. package/dist-client/activities/activity-data-review-edit.js.map +1 -0
  8. package/dist-client/activities/{activity-data-collect-assign-edit.d.ts → activity-data-review-view.d.ts} +2 -2
  9. package/dist-client/activities/{activity-data-collect-assign-edit.js → activity-data-review-view.js} +10 -10
  10. package/dist-client/activities/activity-data-review-view.js.map +1 -0
  11. package/dist-client/bootstrap.d.ts +2 -2
  12. package/dist-client/bootstrap.js +2 -2
  13. package/dist-client/bootstrap.js.map +1 -1
  14. package/dist-client/pages/data-set/data-set-list-page.js +22 -3
  15. package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
  16. package/dist-client/tsconfig.tsbuildinfo +1 -1
  17. package/dist-server/activities/{activity-data-collect-assign.js → activity-data-review.js} +16 -28
  18. package/dist-server/activities/activity-data-review.js.map +1 -0
  19. package/dist-server/activities/activity-ooc-review.js +2 -3
  20. package/dist-server/activities/activity-ooc-review.js.map +1 -1
  21. package/dist-server/activities/index.js +4 -3
  22. package/dist-server/activities/index.js.map +1 -1
  23. package/dist-server/controllers/create-data-sample.js +7 -7
  24. package/dist-server/controllers/create-data-sample.js.map +1 -1
  25. package/dist-server/service/data-set/data-set-mutation.js +5 -5
  26. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  27. package/dist-server/service/data-set/data-set-query.js +5 -5
  28. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  29. package/dist-server/service/data-set/data-set-type.js +10 -2
  30. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  31. package/dist-server/service/data-set/data-set.js +6 -1
  32. package/dist-server/service/data-set/data-set.js.map +1 -1
  33. package/dist-server/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +10 -10
  35. package/server/activities/{activity-data-collect-assign.ts → activity-data-review.ts} +18 -35
  36. package/server/activities/activity-ooc-review.ts +2 -3
  37. package/server/activities/index.ts +4 -3
  38. package/server/controllers/create-data-sample.ts +7 -7
  39. package/server/service/data-set/data-set-mutation.ts +5 -5
  40. package/server/service/data-set/data-set-query.ts +5 -6
  41. package/server/service/data-set/data-set-type.ts +8 -2
  42. package/server/service/data-set/data-set.ts +5 -1
  43. package/translations/en.json +4 -3
  44. package/translations/ja.json +3 -2
  45. package/translations/ko.json +3 -2
  46. package/translations/ms.json +120 -106
  47. package/translations/zh.json +3 -2
  48. package/dist-client/activities/activity-data-collect-assign-edit.js.map +0 -1
  49. package/dist-client/activities/activity-data-collect-assign-view.js.map +0 -1
  50. package/dist-server/activities/activity-data-collect-assign.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/dataset",
3
- "version": "6.2.33",
3
+ "version": "6.2.34",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -37,19 +37,19 @@
37
37
  "@operato/shell": "^1.0.1",
38
38
  "@operato/styles": "^1.0.0",
39
39
  "@operato/utils": "^1.0.1",
40
- "@things-factory/auth-base": "^6.2.33",
41
- "@things-factory/aws-base": "^6.2.33",
42
- "@things-factory/board-service": "^6.2.33",
40
+ "@things-factory/auth-base": "^6.2.34",
41
+ "@things-factory/aws-base": "^6.2.34",
42
+ "@things-factory/board-service": "^6.2.34",
43
43
  "@things-factory/env": "^6.2.33",
44
- "@things-factory/organization": "^6.2.33",
45
- "@things-factory/scheduler-client": "^6.2.33",
46
- "@things-factory/shell": "^6.2.33",
47
- "@things-factory/work-shift": "^6.2.33",
48
- "@things-factory/worklist": "^6.2.33",
44
+ "@things-factory/organization": "^6.2.34",
45
+ "@things-factory/scheduler-client": "^6.2.34",
46
+ "@things-factory/shell": "^6.2.34",
47
+ "@things-factory/work-shift": "^6.2.34",
48
+ "@things-factory/worklist": "^6.2.34",
49
49
  "cron-parser": "^4.3.0",
50
50
  "moment-timezone": "^0.5.40",
51
51
  "simple-statistics": "^7.8.3",
52
52
  "statistics": "^3.3.0"
53
53
  },
54
- "gitHead": "9fe5ab84786e99bc45027820fc50d3c5eca9600f"
54
+ "gitHead": "c1bf972f4b3b088638923bbf62badb572e1e6401"
55
55
  }
@@ -1,49 +1,32 @@
1
- import { NewDataSample } from 'service/data-sample/data-sample-type'
2
- import { In } from 'typeorm'
1
+ import { ActivityInstance, ActivityInstanceStatus, UpdateActivityInstanceStateAddendum } from '@things-factory/worklist'
3
2
 
4
- import {
5
- Activity,
6
- ActivityInstance,
7
- ActivityInstanceStatus,
8
- UpdateActivityInstanceStateAddendum
9
- } from '@things-factory/worklist'
10
-
11
- import { createDataSample } from '../controllers/create-data-sample'
3
+ import { DataOocStatus } from '../service/data-ooc/data-ooc'
4
+ import { DataSample } from '../service/data-sample/data-sample'
12
5
 
13
6
  async function callback(
14
7
  activityInstance: ActivityInstance,
15
8
  addendum: UpdateActivityInstanceStateAddendum,
16
9
  context: ResolverContext
17
10
  ) {
18
- const { domain, tx } = context.state
11
+ const { domain, tx, user } = context.state
19
12
  const { input, output, state } = activityInstance
20
13
 
21
14
  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 Assign Data'
25
- })) as Activity
26
-
27
- const data = output
15
+ var dataSample = await tx.getRepository(DataSample).findOne({
16
+ where: { domain: { id: domain.id }, id: input?.dataSample?.id }
17
+ })
28
18
 
29
- if (activity) {
30
- const dataSample: NewDataSample = {
31
- dataSet: {
32
- id: input.dataSetId
33
- },
34
- data
35
- }
36
-
37
- await createDataSample(dataSample, context)
38
- } else {
39
- console.error('Collect Assign Data Activity not installed.')
40
- }
19
+ dataSample = await tx.getRepository(DataSample).save({
20
+ ...dataSample,
21
+ output,
22
+ state: DataOocStatus.REVIEWED
23
+ })
41
24
  }
42
25
  }
43
26
 
44
- export const ActivityDataCollectAssign = {
45
- name: 'Collect Assign Data',
46
- description: 'Tasks assigned for data collection',
27
+ export const ActivityDataReview = {
28
+ name: 'Data Review',
29
+ description: 'Tasks for data review',
47
30
  release: '1.0.0',
48
31
  provider: 'hatiolab.com',
49
32
  category: 'quality',
@@ -88,11 +71,11 @@ export const ActivityDataCollectAssign = {
88
71
  }
89
72
  ],
90
73
  uiType: 'custom-element',
91
- uiSource: 'activity-data-collect-assign-edit',
74
+ uiSource: 'activity-data-review-edit',
92
75
  viewType: 'custom-element',
93
- viewSource: 'activity-data-collect-assign-view',
76
+ viewSource: 'activity-data-review-view',
94
77
  reportType: 'custom-element',
95
- reportSource: 'activity-data-collect-assign-view',
78
+ reportSource: 'activity-data-review-view',
96
79
  thumbnail: '/assets/images/data-collect.png',
97
80
  callback /* Called when there is a change in the lifecycle of a task (activity-instance). */
98
81
  }
@@ -36,7 +36,7 @@ async function callback(
36
36
  })
37
37
 
38
38
  const dataSet = dataOoc.dataSet
39
- const { assignees, approvalLine, outlierApprovalLine } = dataSet
39
+ const { assignees, outlierApprovalLine } = dataSet
40
40
 
41
41
  /* dataOoc Review 결과를 dataOoc 엔티티에 반영한다. */
42
42
  dataOoc = await tx.getRepository(DataOoc).save({
@@ -59,8 +59,7 @@ async function callback(
59
59
  instruction: correctiveInstruction
60
60
  },
61
61
  assignees,
62
- approvalLine,
63
- outlierApprovalLine
62
+ approvalLine: outlierApprovalLine
64
63
  }
65
64
 
66
65
  await issue(activityInstance, context)
@@ -1,10 +1,11 @@
1
1
  import { ActivityInstallations } from '@things-factory/worklist'
2
2
 
3
- import { ActivityOocReview } from './activity-ooc-review'
4
- import { ActivityOocResolve } from './activity-ooc-resolve'
5
3
  import { ActivityDataCollect } from './activity-data-collect'
4
+ import { ActivityDataReview } from './activity-data-review'
5
+ import { ActivityOocResolve } from './activity-ooc-resolve'
6
+ import { ActivityOocReview } from './activity-ooc-review'
6
7
 
7
8
  /* activity templates installation */
8
- ;[ActivityOocReview, ActivityOocResolve, ActivityDataCollect].forEach(template => {
9
+ ;[ActivityOocReview, ActivityOocResolve, ActivityDataCollect, ActivityDataReview].forEach(template => {
9
10
  ActivityInstallations.installActivityTemplate(template)
10
11
  })
@@ -262,10 +262,10 @@ export async function createDataSample(dataSample: NewDataSample, context: Resol
262
262
  } catch (err) {
263
263
  logger.error('Notification', err)
264
264
  }
265
- } else {
265
+ } else if(dataSet.requiresReview) {
266
266
  const activity = (await tx.getRepository(Activity).findOneBy({
267
267
  domain: { id: domain.id },
268
- name: 'Collect Assign Data'
268
+ name: 'Data Review'
269
269
  })) as Activity
270
270
 
271
271
  if (activity) {
@@ -279,7 +279,7 @@ export async function createDataSample(dataSample: NewDataSample, context: Resol
279
279
  if (assignees && assignees instanceof Array && assignees.length > 0) {
280
280
  result.dataItems = dataItems
281
281
  const activityInstance = {
282
- name: `[Data Collect 검토] ${dataSet.name}`,
282
+ name: `[Data 검토] ${dataSet.name}`,
283
283
  description: dataSet.description,
284
284
  activityId: activity.id,
285
285
  dueAt: new Date(collectedAt.getTime() + 24 * 60 * 60 * 1000),
@@ -294,11 +294,11 @@ export async function createDataSample(dataSample: NewDataSample, context: Resol
294
294
  await issue(activityInstance, context)
295
295
  } else {
296
296
  console.error(
297
- `Assignees are not set. So Data Collect Review task for ${dataSet.name}(${dataSet.id}) could not be issued.`
297
+ `Assignees are not set. So Data Review task for ${dataSet.name}(${dataSet.id}) could not be issued.`
298
298
  )
299
299
  }
300
300
  } else {
301
- console.error('Data Collect Review Activity not installed.')
301
+ console.error('Data Review Activity not installed.')
302
302
  }
303
303
 
304
304
  try {
@@ -311,8 +311,8 @@ export async function createDataSample(dataSample: NewDataSample, context: Resol
311
311
  notification: {
312
312
  domain,
313
313
  type: 'info',
314
- title: `[Data Collect Review] ${dataSet.name}`,
315
- body: `Data Collect Review occurred on '${dataSet.name}'`,
314
+ title: `[Data Review] ${dataSet.name}`,
315
+ body: `Data Review occurred on '${dataSet.name}'`,
316
316
  url: getRedirectSubdomainPath(context, domain.subdomain, `/data-set/${dataSet.id}`),
317
317
  timestamp: collectedAt
318
318
  }
@@ -13,19 +13,19 @@ import { DataSetPatch, NewDataSet } from './data-set-type'
13
13
  const crypto = require('crypto')
14
14
 
15
15
  function getApprovalLineValue(patch: NewDataSet | DataSetPatch): ApprovalLineItem[] {
16
- const { approvalLine } = patch
16
+ const { reviewApprovalLine } = patch
17
17
 
18
- if (!('approvalLine' in patch)) {
19
- /* approvalLine이 언급되지 않았다면, 업데이트하지 않는다. */
18
+ if (!('reviewApprovalLine' in patch)) {
19
+ /* reviewApprovalLine 언급되지 않았다면, 업데이트하지 않는다. */
20
20
  return
21
21
  }
22
22
 
23
- if (!approvalLine || !(approvalLine instanceof Array)) {
23
+ if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {
24
24
  /* approvalLine의 값이 없거나 배열이 아니라면, 클리어시킨다. */
25
25
  return null
26
26
  }
27
27
 
28
- return approvalLine
28
+ return reviewApprovalLine
29
29
  .map(m => {
30
30
  return {
31
31
  type: m.type,
@@ -1,13 +1,12 @@
1
- import { In } from 'typeorm'
2
1
  import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+ import { In } from 'typeorm'
3
3
 
4
4
  import { Attachment } from '@things-factory/attachment-base'
5
5
  import { Role, User } from '@things-factory/auth-base'
6
6
  import { Board } from '@things-factory/board-service'
7
- import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
8
7
  import { ApprovalLineItem } from '@things-factory/organization'
8
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
9
9
  import { AssigneeItem } from '@things-factory/worklist'
10
- import { Application, getSchedules } from '@things-factory/scheduler-client'
11
10
 
12
11
  import { DataKeySet } from '../data-key-set/data-key-set'
13
12
  import { DataSample } from '../data-sample/data-sample'
@@ -203,15 +202,15 @@ export class DataSetQuery {
203
202
  @FieldResolver(type => [ApprovalLineItem])
204
203
  async approvalLine(@Root() dataSet: DataSet, @Ctx() context: ResolverContext): Promise<ApprovalLineItem[]> {
205
204
  const { domain, user } = context.state
206
- const { approvalLine } = dataSet
205
+ const { reviewApprovalLine } = dataSet
207
206
 
208
- if (!approvalLine || !(approvalLine instanceof Array)) {
207
+ if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {
209
208
  return null
210
209
  }
211
210
 
212
211
  var approvalLineItems = []
213
212
 
214
- for (let item of approvalLine) {
213
+ for (let item of reviewApprovalLine) {
215
214
  // "value" deprecated. to be removed
216
215
  var { type, approver, value } = item
217
216
  var id = approver?.id || value
@@ -30,7 +30,7 @@ export class NewDataSet {
30
30
  assignees?: AssigneeItem[]
31
31
 
32
32
  @Field(type => ScalarObject, { nullable: true })
33
- approvalLine?: ApprovalLineItem[]
33
+ reviewApprovalLine?: ApprovalLineItem[]
34
34
 
35
35
  @Field(type => ScalarObject, { nullable: true })
36
36
  outlierApprovalLine?: ApprovalLineItem[]
@@ -56,6 +56,9 @@ export class NewDataSet {
56
56
  @Field({ nullable: true })
57
57
  timezone?: string
58
58
 
59
+ @Field({ nullable: true })
60
+ requiresReview?: boolean
61
+
59
62
  @Field({ nullable: true })
60
63
  entryType?: DataSetEntryType
61
64
 
@@ -105,7 +108,7 @@ export class DataSetPatch {
105
108
  assignees?: AssigneeItem[]
106
109
 
107
110
  @Field(type => ScalarObject, { nullable: true })
108
- approvalLine?: ApprovalLineItem[]
111
+ reviewApprovalLine?: ApprovalLineItem[]
109
112
 
110
113
  @Field(type => ScalarObject, { nullable: true })
111
114
  outlierApprovalLine?: ApprovalLineItem[]
@@ -131,6 +134,9 @@ export class DataSetPatch {
131
134
  @Field({ nullable: true })
132
135
  timezone?: string
133
136
 
137
+ @Field({ nullable: true })
138
+ requiresReview?: boolean
139
+
134
140
  @Field({ nullable: true })
135
141
  entryType?: DataSetEntryType
136
142
 
@@ -154,7 +154,7 @@ export class DataSet {
154
154
  nullable: true,
155
155
  description: 'Approval line for confrim of the dataset'
156
156
  })
157
- approvalLine?: ApprovalLineItem[]
157
+ reviewApprovalLine?: ApprovalLineItem[]
158
158
 
159
159
  @Column('simple-json', { nullable: true })
160
160
  @Field(type => [ApprovalLineItem], {
@@ -214,6 +214,10 @@ export class DataSet {
214
214
  @Field({ nullable: true })
215
215
  timezone?: string
216
216
 
217
+ @Column({ nullable: true })
218
+ @Field({ nullable: true })
219
+ requiresReview?: boolean
220
+
217
221
  @Column({ nullable: true })
218
222
  @Field({ nullable: true })
219
223
  scheduleId?: string
@@ -1,13 +1,11 @@
1
1
  {
2
- "label.group-by data-keys": "group by each data-keys",
3
2
  "button.corrected": "corrected",
4
3
  "button.request-archive": "request archive",
5
4
  "button.reviewed": "reviewed",
6
5
  "error.dataset not found": "Cannot find dataSet with the given name({dataSetName})",
7
6
  "error.summary not supported": "The given dataSet({dataSetName}) does not support reports for {period}",
8
7
  "field.appliance": "appliance",
9
- "field.approval-line": "approval line",
10
- "field.outlier-approval-line": "outlier approval line",
8
+ "field.review-approval-line": "review approval line",
11
9
  "field.assignees": "assignees",
12
10
  "field.collected-at": "collected at",
13
11
  "field.corrected-at": "corrected at",
@@ -49,6 +47,8 @@
49
47
  "field.ooc": "out of control limit",
50
48
  "field.oos": "out of critical limit",
51
49
  "field.options": "options",
50
+ "field.outlier-approval-line": "outlier approval line",
51
+ "field.requires-review": "requires review",
52
52
  "field.partition-keys": "partition keys",
53
53
  "field.prev-schedule": "previous schedule",
54
54
  "field.quota": "sampling #",
@@ -78,6 +78,7 @@
78
78
  "label.critical-limits": "critical limits",
79
79
  "label.data-set-type": "type",
80
80
  "label.end-date": "end date",
81
+ "label.group-by data-keys": "group by each data-keys",
81
82
  "label.maximum value": "maximum value",
82
83
  "label.minimum value": "minimum value",
83
84
  "label.pass-limits": "pass limits",
@@ -5,8 +5,7 @@
5
5
  "error.dataset not found": "指定された名前の({dataSetName})データセットが見つかりません",
6
6
  "error.summary not supported": "指定されたデータセット({dataSetName})は{period}のレポートに対応していません",
7
7
  "field.appliance": "アプライアンス",
8
- "field.approval-line": "決済ライン",
9
- "field.outlier-approval-line": "異常承認ライン",
8
+ "field.review-approval-line": "決済ライン",
10
9
  "field.assignees": "譲渡人リスト",
11
10
  "field.collected-at": "取集日時",
12
11
  "field.corrected-at": "措置時間",
@@ -48,6 +47,8 @@
48
47
  "field.ooc": "管理限界離脱有無",
49
48
  "field.oos": "許容限界離脱有無",
50
49
  "field.options": "選択オプション",
50
+ "field.outlier-approval-line": "異常承認ライン",
51
+ "field.requires-review": "見直しが必要",
51
52
  "field.partition-keys": "パーティション キー",
52
53
  "field.prev-schedule": "以前の収集計画",
53
54
  "field.quota": "サンプル数",
@@ -5,8 +5,7 @@
5
5
  "error.dataset not found": "주어진 이름의({dataSetName}) dataSet을 찾을 수 없습니다",
6
6
  "error.summary not supported": "주어진 dataSet({dataSetName})은 {period}의 레포트가 지원되지 않습니다",
7
7
  "field.appliance": "어플라이언스",
8
- "field.approval-line": "결재라인",
9
- "field.outlier-approval-line": "이상치 결재라인",
8
+ "field.review-approval-line": "결재라인",
10
9
  "field.assignees": "할당자 목록",
11
10
  "field.collected-at": "수집일시",
12
11
  "field.corrected-at": "조치 시간",
@@ -48,6 +47,8 @@
48
47
  "field.ooc": "관리한계 이탈여부",
49
48
  "field.oos": "허용한계 이탈여부",
50
49
  "field.options": "선택옵션",
50
+ "field.outlier-approval-line": "이상치 결재라인",
51
+ "field.requires-review": "검토 요청",
51
52
  "field.partition-keys": "파티션 키",
52
53
  "field.prev-schedule": "이전 수집계획",
53
54
  "field.quota": "샘플수",