@things-factory/worklist 10.1.159 → 10.1.165

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worklist",
3
- "version": "10.1.159",
3
+ "version": "10.1.165",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "exports": {
@@ -54,15 +54,15 @@
54
54
  "@operato/moment-timezone-es": "^10.0.0",
55
55
  "@operato/p13n": "^10.0.0",
56
56
  "@operato/popup": "^10.15.0",
57
- "@things-factory/attachment-base": "^10.1.159",
58
- "@things-factory/auth-base": "^10.1.159",
59
- "@things-factory/board-service": "^10.1.159",
60
- "@things-factory/context-ui": "^10.1.157",
61
- "@things-factory/i18n-base": "^10.1.159",
62
- "@things-factory/organization": "^10.1.159",
63
- "@things-factory/personalization": "^10.1.159",
64
- "@things-factory/scheduler-client": "^10.1.159",
65
- "@things-factory/shell": "^10.1.157"
57
+ "@things-factory/attachment-base": "^10.1.165",
58
+ "@things-factory/auth-base": "^10.1.165",
59
+ "@things-factory/board-service": "^10.1.165",
60
+ "@things-factory/context-ui": "^10.1.165",
61
+ "@things-factory/i18n-base": "^10.1.165",
62
+ "@things-factory/organization": "^10.1.165",
63
+ "@things-factory/personalization": "^10.1.165",
64
+ "@things-factory/scheduler-client": "^10.1.165",
65
+ "@things-factory/shell": "^10.1.165"
66
66
  },
67
- "gitHead": "fc15cdcb18e562ca1e723a1e1bf042f9582cbbfb"
67
+ "gitHead": "d9e3774d70561b063e4f1d10c387caf721d99b61"
68
68
  }
@@ -64,9 +64,9 @@ describe('work door sentences', () => {
64
64
  const sentence = doorSentence(ko, door({ whenNoLine: 'refuse', whenNoLineBecause: 'approval-is-the-act' }))
65
65
 
66
66
  assert.ok(sentence.includes('「자재 정의 변경 승인」 에 결재자가 없습니다'), sentence)
67
- assert.ok(sentence.includes('올릴 수 없습니다'), sentence)
67
+ assert.ok(sentence.includes('상신할 수 없습니다'), sentence)
68
68
  assert.ok(sentence.includes('승인 자체가 이 업무의 일'), sentence)
69
- assert.ok(!sentence.includes('자기 건을 승인'), sentence)
69
+ assert.ok(!sentence.includes('상신자의 승인'), sentence)
70
70
  })
71
71
 
72
72
  it('keeps the self-approval sentence for a door that runs on an empty line', () => {
@@ -77,15 +77,15 @@ describe('work door sentences', () => {
77
77
 
78
78
  assert.equal(
79
79
  sentence,
80
- '「작업지시 우선순위 변경」 에 결재자가 없습니다. 이 단계는 서지 않고, 올린 사람이 올리는 순간 자기 건을 승인한 것이 됩니다.'
80
+ '「작업지시 우선순위 변경」에 결재자가 지정되지 않았습니다. 결재 단계를 거치지 않으며, 상신 즉시 상신자의 승인으로 처리됩니다.'
81
81
  )
82
82
  })
83
83
 
84
84
  it('says a door that follows its history depends on how the record stood', () => {
85
85
  const sentence = doorSentence(ko, door({ whenNoLine: 'as-established', whenNoLineBecause: 'approval-is-the-act' }))
86
86
 
87
- assert.ok(sentence.includes('결재를 거쳐 선 건은'), sentence)
88
- assert.ok(!sentence.includes('자기 건을 승인'), sentence)
87
+ assert.ok(sentence.includes('결재를 통해 생성된 건은'), sentence)
88
+ assert.ok(!sentence.includes('상신자의 승인'), sentence)
89
89
  })
90
90
 
91
91
  /** A door with no declaration says only what is known - it does not guess a consequence. */
@@ -96,7 +96,7 @@ describe('work door sentences', () => {
96
96
  it('says where the line is set when a door follows another door', () => {
97
97
  const sentence = doorSentence(ko, door({ followsLabelKey: 'activity.station-screen-release.label', whenNoLine: 'run' }))
98
98
 
99
- assert.ok(sentence.includes('「화면 발행 승인」 의 결재선을 따르므로'), sentence)
99
+ assert.ok(sentence.includes('「화면 발행 승인」의 결재선을 사용합니다'), sentence)
100
100
  })
101
101
 
102
102
  it('shows the empty-line declaration on a filled row, with the reason for a refusing door', () => {
@@ -105,15 +105,15 @@ describe('work door sentences', () => {
105
105
  door({ standing: 'on', reason: 'line-filled', approvers: 1, whenNoLine: 'refuse', whenNoLineBecause: 'irreversible' })
106
106
  )
107
107
 
108
- assert.equal(tag, '결재선이 비면 올릴 수 없습니다 (되돌릴 수 없는 일)')
108
+ assert.equal(tag, '결재선이 비면 상신할 수 없습니다 (되돌릴 수 없는 일)')
109
109
  /* An empty row's sentence already says it; saying it twice is noise. */
110
110
  assert.equal(whenNoLineTag(ko, door({ whenNoLine: 'refuse', whenNoLineBecause: 'irreversible' })), '')
111
111
  assert.equal(whenNoLineTag(ko, door({ kind: 'assignment', standing: 'on', reason: 'assignee-bound' })), '')
112
112
  })
113
113
 
114
114
  it('keeps the other rows in their Korean wording', () => {
115
- assert.ok(doorSentence(ko, door({ reason: 'role-empty' })).includes('역할에 사람이 없습니다'))
116
- assert.ok(doorSentence(ko, door({ reason: 'person-absent' })).includes('지목한 사람이 이 사업장에 없습니다'))
115
+ assert.ok(doorSentence(ko, door({ reason: 'role-empty' })).includes('역할을 보유한 사용자가 없습니다'))
116
+ assert.ok(doorSentence(ko, door({ reason: 'person-absent' })).includes('지정 결재자가 이 사업장에 등록되어 있지 않습니다'))
117
117
  assert.ok(doorSentence(ko, door({ kind: 'assignment', reason: 'no-assignee' })).includes('아무에게도 가지 않습니다'))
118
118
  assert.ok(
119
119
  doorSentence(ko, door({ kind: 'assignment', standing: 'on', reason: 'assignee-bound', assigneeRole: 'MAINTENANCE-LEAD' })).includes(
@@ -121,7 +121,7 @@ describe('work door sentences', () => {
121
121
  )
122
122
  )
123
123
  assert.ok(doorSentence(ko, door({ standing: 'on', reason: 'line-filled', approvers: 2 })).includes('결재자 2명'))
124
- assert.ok(doorSentence(ko, door({ standing: 'missing', reason: 'missing' })).includes('세우지 못한 것'))
124
+ assert.ok(doorSentence(ko, door({ standing: 'missing', reason: 'missing' })).includes('등록 실패'))
125
125
  assert.ok(
126
126
  doorSentence(ko, door({ standing: 'not-used', reason: 'not-used', notUsedBecause: '폐기는 본사가 처리합니다' })).includes(
127
127
  '폐기는 본사가 처리합니다'
@@ -189,7 +189,7 @@ describe('work door summary', () => {
189
189
  })
190
190
 
191
191
  it('names a door that never installed as a defect', () => {
192
- assert.ok(doorsSummary(ko, counts({ on: 1, missing: 1, todo: 1 })).includes('설정이 아니라 결함'))
192
+ assert.ok(doorsSummary(ko, counts({ on: 1, missing: 1, todo: 1 })).includes('시스템 오류를 확인해야 합니다'))
193
193
  })
194
194
 
195
195
  /** Zero doors is a different fact from "none of them stand" and must not be reported as it. */
@@ -24,19 +24,19 @@
24
24
  "button.submit": "제출",
25
25
  "button.unschedule-task": "스케쥴 해제",
26
26
  "error.activity not found": "이 작업템플릿({activity})을 찾을 수 없습니다.",
27
- "error.activity-approval cannot be judged by the person who raised it": "이 건은 올린 사람이 결재할 수 없습니다. 다른 결재자가 없으면 관리자에게 결재선에 결재자를 넣어 달라고 하십시오.",
27
+ "error.activity-approval cannot be judged by the person who raised it": "상신자는 본인이 상신한 건을 결재할 수 없습니다. 다른 결재자가 없으면 관리자에게 결재자 추가를 요청해 주세요.",
28
28
  "error.activity-approval is already terminated": "이 승인 작업({activityApproval})는 이미 종료({actual})되었습니다.",
29
29
  "error.activity-approval is reference only": "참조로 받은 건이라 승인하거나 반려할 수 없습니다. 의견은 남길 수 있습니다.",
30
30
  "error.activity-approval not found": "이 승인 작업({activityApproval})을 찾을 수 없습니다.",
31
- "error.activity-approval delegate to self": "이미 본인의 결재입니다. 넘길 다른 사람을 고르십시오.",
31
+ "error.activity-approval delegate to self": "이미 본인에게 배정된 결재입니다. 위임할 다른 사용자를 선택해 주세요.",
32
32
  "error.activity-approval delegate outside domain": "이 사업장에 없는 사람에게는 넘길 수 없습니다.",
33
- "error.activity-approval delegate to issuer": "올린 사람은 이 건을 승인할 수 없어서 그 사람에게는 넘길 수 없습니다.",
33
+ "error.activity-approval delegate to issuer": "상신자는 본인이 상신한 건을 승인할 수 없으므로 결재를 위임받을 수 없습니다.",
34
34
  "error.activity-approval taken by someone else": "다른 분이 먼저 처리했습니다. 목록을 새로 읽어 주십시오.",
35
- "error.activity-instance belongs to someone else": "{id} 는 다른 사람이 쓴 초안입니다. 쓴 사람이나 업무를 관리하는 사람만 고치고 내보낼 수 있습니다.",
35
+ "error.activity-instance belongs to someone else": "{id}은(는) 다른 사용자가 작성한 초안입니다. 작성자 또는 업무 관리자만 수정하고 제출할 수 있습니다.",
36
36
  "error.activity-instance is addressed to another role": "{id} 는 다른 역할에 할당된 업무입니다. 그 역할을 가진 사람만 선택할 수 있습니다.",
37
37
  "error.activity-instance is already issued": "이 작업({id})은 이미 {state} 상태로 제기되었습니다.",
38
38
  "error.activity-instance is already terminated": "이 작업({id})는 이미 {state} 상태로 종료되었습니다.",
39
- "error.activity-instance approval line is set": "이 업무는 결재선이 정해져 있습니다. 결재선은 업무 상세에서 바꿉니다.",
39
+ "error.activity-instance approval line is set": "이 업무에는 결재선이 지정되어 있습니다. 업무 상세 화면에서 결재선을 변경해 주세요.",
40
40
  "error.activity-instance assignee not in this domain": "이 사업장 사람이 아닙니다: {emails}",
41
41
  "error.activity-instance draft is gone": "이 초안은 그사이 발행되었거나 버려졌습니다. 목록을 새로 읽어 주십시오.",
42
42
  "error.activity-instance not found": "이 작업({activityInstance})을 찾을 수 없습니다.",
@@ -224,43 +224,43 @@
224
224
  "text.discard-draft-confirm": "이 초안을 버릴까요?",
225
225
  "text.discard-draft-for-good": "버린 초안은 되살릴 수 없습니다.",
226
226
  "text.door-because-assignee-bound": "「{label}」 은 {role} 가 받습니다.",
227
- "text.door-because-follows": "「{label}」 의 결재선을 따르므로, 결재선은 그 문에서 정합니다.",
227
+ "text.door-because-follows": "「{label}」의 결재선을 사용합니다. 해당 업무에서 결재선을 설정해 주세요.",
228
228
  "text.door-because-line-empty": "「{label}」 에 결재자가 없습니다.",
229
- "text.door-because-line-empty-as-established": "「{label}」 에 결재자가 없습니다. 결재를 거쳐 선 건은 결재선을 채우기 전에는 올릴 수 없고, 결재 없이 선 건은 올리는 즉시 반영됩니다.",
230
- "text.door-because-line-empty-refuse": "「{label}」 에 결재자가 없습니다. 결재선을 채우기 전에는 이 업무를 올릴 수 없습니다({why}).",
231
- "text.door-because-line-empty-run": "「{label}」 에 결재자가 없습니다. 이 단계는 서지 않고, 올린 사람이 올리는 순간 자기 건을 승인한 것이 됩니다.",
229
+ "text.door-because-line-empty-as-established": "「{label}」에 결재자가 지정되지 않았습니다. 결재를 통해 생성된 건은 결재자를 지정해야 상신할 수 있으며, 결재 없이 생성된 건은 상신 즉시 반영됩니다.",
230
+ "text.door-because-line-empty-refuse": "「{label}」 에 결재자가 없습니다. 결재선을 채우기 전에는 이 업무를 상신할 수 없습니다({why}).",
231
+ "text.door-because-line-empty-run": "「{label}」에 결재자가 지정되지 않았습니다. 결재 단계를 거치지 않으며, 상신 즉시 상신자의 승인으로 처리됩니다.",
232
232
  "text.door-because-line-filled": "「{label}」 은 결재자 {count}명을 지납니다.",
233
- "text.door-because-missing": "「{label}」 양식이 이 사업장에 서지 않았습니다. 사업장이 안 쓰기로 한 것이 아니라 세우지 못한 것이므로 기동 기록을 보십시오.",
233
+ "text.door-because-missing": "「{label}」 양식이 이 사업장에 등록되지 않았습니다. 사용 중지 설정이 아니라 등록 실패로 인한 문제이므로 서버 기동 로그를 확인해 주세요.",
234
234
  "text.door-because-no-assignee": "「{label}」 을 받을 역할이 묶이지 않았습니다. 이 업무는 만들어져도 아무에게도 가지 않습니다.",
235
235
  "text.door-because-not-used": "「{label}」 은 이 사업장이 쓰지 않기로 한 업무입니다 — {reason}",
236
- "text.door-because-person-absent": "「{label}」 의 결재선이 지목한 사람이 이 사업장에 없습니다. 다른 사람을 지목하거나 그 사람을 넣어야 이 단계가 섭니다.",
237
- "text.door-because-role-empty": "「{label}」 의 결재선이 지목한 역할에 사람이 없습니다. 결재선은 정해져 있으니 그 역할에 사람을 넣어야 이 단계가 섭니다.",
236
+ "text.door-because-person-absent": "「{label}」의 지정 결재자가 이 사업장에 등록되어 있지 않습니다. 다른 결재자를 지정하거나 해당 사용자를 사업장에 등록해야 이 단계를 진행할 수 있습니다.",
237
+ "text.door-because-role-empty": "「{label}」의 결재선에 지정된 역할을 보유한 사용자가 없습니다. 해당 역할을 사용자에게 부여해야 이 단계를 진행할 수 있습니다.",
238
238
  "text.door-refuses-because-approval-is-the-act": "승인 자체가 이 업무의 일",
239
239
  "text.door-refuses-because-irreversible": "되돌릴 수 없는 일",
240
240
  "text.door-refuses-because-lowers-a-control": "걸려 있는 통제를 낮추는 일",
241
- "text.door-when-no-line-as-established": "결재선이 비면 그 건이 어떻게 섰는지에 따릅니다",
242
- "text.door-when-no-line-refuse": "결재선이 비면 올릴 수 없습니다",
243
- "text.door-when-no-line-run": "결재선이 비면 올리는 즉시 반영됩니다",
241
+ "text.door-when-no-line-as-established": "결재선이 없으면 해당 업무의 생성 시점에 정해진 처리 방식을 따릅니다.",
242
+ "text.door-when-no-line-refuse": "결재선이 비면 상신할 수 없습니다",
243
+ "text.door-when-no-line-run": "결재선이 없으면 상신 즉시 반영됩니다.",
244
244
  "text.draft-discarded": "초안을 버렸습니다.",
245
245
  "text.activity-activated": "{name} 을 이 $t(term.domain)에서 쓰도록 켰습니다.",
246
246
  "text.activity-change-failed": "{name} 을 바꾸지 못했습니다: {why}",
247
247
  "text.activity-change-not-allowed": "{name} 을 바꿀 권한이 없습니다. 관리자에게 업무 활동 권한을 요청하십시오.",
248
248
  "text.activity-deactivated": "{name} 을 껐습니다. 이 업무는 더 이상 올라오지 않습니다.",
249
249
  "text.activity-draft-how": "제목과 설명을 입력하고 초안저장을 선택하면 편집 화면으로 이동합니다.",
250
- "text.activity-draft-where": "초안은 「내가 올린 것」 목록에 있고, {action} 전까지 수정할 수 있습니다.",
250
+ "text.activity-draft-where": "초안은 「내 상신 목록」에 있으며, {action} 전까지 수정할 수 있습니다.",
251
251
  "text.activity-guide-unwritten": "이 업무의 설명이 아직 준비되지 않았습니다.",
252
252
  "text.activity-in-use-here": "사용 중",
253
253
  "text.activity-step": "{n}단계",
254
254
  "text.activity-line-none": "결재선이 지정되지 않았습니다.",
255
255
  "text.activity-line-not-built": "아직 만들어지지 않은 업무라 켤 수 없습니다.",
256
- "text.activity-line-not-installed": "사용을 켜야 결재선을 지정할 수 있습니다.",
256
+ "text.activity-line-not-installed": "업무 사용을 활성화해야 결재선을 지정할 수 있습니다.",
257
257
  "text.activity-no-panels": "이 앱에는 추가 설정이 없습니다",
258
258
  "text.activity-not-found": "그 업무를 찾을 수 없습니다 ({name})",
259
259
  "text.activity-not-in-use-here": "미사용",
260
260
  "text.activity_instance_aborted_successfully": "업무인스턴스가 정상적으로 중단되었습니다.",
261
261
  "text.and-n-more": "{n}건 더",
262
262
  "text.and-n-more-fields": "(외 {n}개 항목)",
263
- "text.approval-comment-hint": "승인은 의견 없이도 할 수 있습니다. 반려하려면 이유를 적어야 합니다.",
263
+ "text.approval-comment-hint": "승인 의견은 선택 사항입니다. 반려하려면 사유를 입력해 주세요.",
264
264
  "text.approval-is-irreversible": "승인하면 되돌릴 수 없습니다.",
265
265
  "text.approval-is-reversible": "승인한 뒤에 되돌릴 수 있습니다.",
266
266
  "text.approval-line-steps": "{n}단계",
@@ -274,7 +274,7 @@
274
274
  "text.copy-payload": "이 값을 원문(JSON)으로 복사합니다",
275
275
  "text.decision-keys-count": "판단 항목 {n}개",
276
276
  "text.door-filled-from": "{name} 에서 정했습니다",
277
- "text.door-form-from": "{name} 의 양식입니다 — 여기서는 못 고칩니다",
277
+ "text.door-form-from": "{name}의 양식입니다. 이 화면에서는 수정할 수 없습니다.",
278
278
  "text.door-kind-approval": "결재",
279
279
  "text.door-kind-assignment": "배정",
280
280
  "text.door-standing-missing": "양식 없음",
@@ -301,11 +301,11 @@
301
301
  "text.handed-over-on-this-day": "기한이 없습니다. 이 날 받았습니다",
302
302
  "text.installable-activities": "설치 가능 업무",
303
303
  "text.it-did-not-go-through": "처리하지 못했습니다: {said}",
304
- "text.model-in-out": "받는 값 {taking}개 · 적어 낼 값 {giving}개",
304
+ "text.model-in-out": "입력값 {taking}개 · 출력값 {giving}개",
305
305
  "text.no activity thread info": "업무활동 정보가 없습니다.",
306
306
  "text.no-activity-fields": "입력할 항목이 없습니다",
307
307
  "text.no-activity-fields-why": "위의 정보를 확인하고 제출하십시오.",
308
- "text.no-activity-thread-why": "목록에서 다시 골라 주세요. 이미 완료되었거나 다른 사람에게 넘어간 건일 수 있습니다.",
308
+ "text.no-activity-thread-why": "목록에서 다시 선택해 주세요. 이미 완료되었거나 다른 사람에게 넘어간 건일 수 있습니다.",
309
309
  "text.no-approval-content": "승인 대상 내용이 없습니다",
310
310
  "text.no-approval-content-why": "아래 타임라인의 상신 사유와 이력을 보고 판단하십시오.",
311
311
  "text.no-approval-description": "새 건이 올라오면 여기에 표시됩니다.",
@@ -336,15 +336,15 @@
336
336
  "text.task_is_saved_successfully": "업무가 성공적으로 저장되었습니다.",
337
337
  "text.task_is_started_successfully": "업무가 성공적으로 시작되었습니다.",
338
338
  "text.timeline-count": "{count}건",
339
- "text.work-doors-lead": "승인·배정 단계마다 결재자와 받는 사람이 정해졌는지 보여 줍니다. 결재자가 없을 때 결재는 업무마다 올리는 즉시 반영되거나 올릴 수 없게 되고, 배정은 아무에게도 가지 않습니다.",
339
+ "text.work-doors-lead": "승인·배정 단계별로 결재자와 담당자의 지정 여부를 확인합니다. 결재자가 없으면 업무 설정에 따라 상신 즉시 처리되거나 상신이 제한됩니다. 담당자가 없는 배정 단계는 배정되지 않습니다.",
340
340
  "text.work-doors-next-line": "업무 양식 {count}개에 결재선을 지정하십시오 —",
341
341
  "text.work-doors-next-seats": "역할 {offered}개 중 {standing}개가 설정되어 있습니다. 결재선에 쓸 역할을 먼저 설정하십시오 —",
342
342
  "text.work-doors-summary-all-on": "업무 문 {count}개가 다 서 있습니다.",
343
343
  "text.work-doors-summary-done-not-used": "채울 것이 남지 않았습니다. 업무 문 {on}개가 서 있고 {notUsed}개는 이 사업장이 쓰지 않기로 한 것입니다.",
344
- "text.work-doors-summary-missing": "{count}개는 양식이 아예 서지 않았습니다. 이것은 설정이 아니라 결함입니다.",
344
+ "text.work-doors-summary-missing": "양식 {count}개가 등록되지 않았습니다. 설정 상태가 아니라 시스템 오류를 확인해야 합니다.",
345
345
  "text.work-doors-summary-none": "이 제품이 세우는 업무 양식이 없습니다.",
346
346
  "text.work-doors-summary-not-used": "{count}개는 이 사업장이 쓰지 않기로 한 것이라 세지 않았습니다.",
347
- "text.work-doors-summary-off": "{count}개는 양식은 섰는데 받을 사람이 없습니다 — 누가 할지 이 사업장이 아직 정하지 않은 것입니다.",
347
+ "text.work-doors-summary-off": "양식 {count}개에 담당자가 지정되지 않았습니다. 이 사업장에서 담당자를 지정해 주세요.",
348
348
  "text.work-doors-summary-todo": "채울 것이 {count}개 남았습니다.",
349
349
  "text.write-your-comment-as-reference": "의견을 적어 주십시오.",
350
350
  "title.activity": "업무",
@@ -377,7 +377,7 @@
377
377
  "title.approval pending list": "내 결재함",
378
378
  "title.assigned list": "나의 연관 업무 현황",
379
379
  "title.done list": "완료",
380
- "title.draft list": "내가 올린 것",
380
+ "title.draft list": "내 상신 목록",
381
381
  "title.edit duration": "소요시간 편집",
382
382
  "title.import activity-approval": "결재 가져오기",
383
383
  "title.import activity-stats": "업무 통계 가져오기",