@dssp/dssp 1.0.10 → 1.0.12

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/schema.graphql CHANGED
@@ -82,6 +82,11 @@ type Activity {
82
82
  multiple: String
83
83
  name: String
84
84
  priority: Float
85
+
86
+ """
87
+ true when a rejection closes the case for good — it cannot be restarted
88
+ """
89
+ rejectionIsFinal: Boolean
85
90
  reportSource: String
86
91
 
87
92
  """The type of report to be shown when a task is approved"""
@@ -126,6 +131,11 @@ type ActivityApproval {
126
131
  approver: User
127
132
  approverRole: Role
128
133
  comment: String
134
+
135
+ """
136
+ When the opinion was said. Empty means nothing was said — silence is not consent.
137
+ """
138
+ commentedAt: DateTimeISO
129
139
  createdAt: DateTimeISO
130
140
  creator: User
131
141
  derivedApprovals: [ActivityApproval!]!
@@ -138,6 +148,11 @@ type ActivityApproval {
138
148
 
139
149
  """delegator approval"""
140
150
  originalApproval: ActivityApproval
151
+
152
+ """
153
+ In what capacity: approval decides, reference only comments. Empty means approval.
154
+ """
155
+ participation: String
141
156
  round: Float
142
157
  terminatedAt: DateTimeISO
143
158
  terminator: User
@@ -152,14 +167,31 @@ type ActivityApprovalList {
152
167
  }
153
168
 
154
169
  type ActivityEvent {
170
+ basis: ActivityEventDateBasis
155
171
  date: DateTimeISO
156
172
  id: String
157
173
  name: String
158
174
  priority: Float
159
- state: String
175
+ state: ActivityEventStatus
160
176
  type: String
161
177
  }
162
178
 
179
+ """what the date of an Activity Event means"""
180
+ enum ActivityEventDateBasis {
181
+ Due
182
+ HandedOver
183
+ Terminated
184
+ }
185
+
186
+ """state enumeration of a Activity Event"""
187
+ enum ActivityEventStatus {
188
+ Aborted
189
+ Approved
190
+ Done
191
+ Pending
192
+ Rejected
193
+ }
194
+
163
195
  """Entity for ActivityInstance"""
164
196
  type ActivityInstance {
165
197
  activity: Activity
@@ -190,6 +222,9 @@ type ActivityInstance {
190
222
  priority: Float
191
223
  reason: String
192
224
  refBy: String
225
+
226
+ """true when a rejection closes this case for good"""
227
+ rejectionIsFinal: Boolean
193
228
  startedAt: DateTimeISO
194
229
  starter: User
195
230
  state: String
@@ -297,6 +332,14 @@ input ActivityInstanceIssue {
297
332
  priority: Float
298
333
  reason: String
299
334
  refBy: String
335
+
336
+ """true when a rejection closes this case for good"""
337
+ rejectionIsFinal: Boolean
338
+
339
+ """
340
+ true when the caller expects this to go through an approval line — issuing fails if the line is empty
341
+ """
342
+ requireApproval: Boolean
300
343
  supervisoryRole: ObjectRef
301
344
  threadsMax: Int
302
345
  threadsMin: Int
@@ -352,6 +395,11 @@ input ActivityPatch {
352
395
  multiple: String
353
396
  name: String
354
397
  priority: Float
398
+
399
+ """
400
+ true when a rejection closes the case for good — it cannot be restarted
401
+ """
402
+ rejectionIsFinal: Boolean
355
403
  reportSource: String
356
404
  reportType: String
357
405
  schedule: String
@@ -369,6 +417,37 @@ input ActivityPatch {
369
417
  viewType: String
370
418
  }
371
419
 
420
+ """What the registering module declares about an installable activity"""
421
+ type ActivityReadiness {
422
+ """What is still missing, when the stage is partial"""
423
+ gaps: [String!]
424
+
425
+ """Result of the last recorded run of those tests"""
426
+ lastRun: ActivityTestRecord
427
+
428
+ """Anything a reader needs that the fields above do not carry"""
429
+ notes: String
430
+
431
+ """Working, partial, or declared only"""
432
+ stage: ActivityReadinessStage
433
+
434
+ """
435
+ Repo-relative test files that cover this activity. Named so the claim can be checked.
436
+ """
437
+ tests: [String!]
438
+ }
439
+
440
+ """
441
+ how far along an installable activity is, as declared by the module that registers it
442
+ """
443
+ enum ActivityReadinessStage {
444
+ Declared
445
+ NotWorklist
446
+ Partial
447
+ Planned
448
+ Working
449
+ }
450
+
372
451
  """Entity for ActivitySearchKeyItem"""
373
452
  type ActivitySearchKeyItem {
374
453
  description: String
@@ -436,6 +515,21 @@ input ActivityTemplatePatch {
436
515
  visibility: String
437
516
  }
438
517
 
518
+ """Recorded result of the test run that covers an installable activity"""
519
+ type ActivityTestRecord {
520
+ """When that run happened, ISO 8601"""
521
+ at: String
522
+
523
+ """The command that produced this record"""
524
+ command: String
525
+
526
+ """How many of the covering tests passed"""
527
+ passed: Float
528
+
529
+ """How many covering tests ran"""
530
+ total: Float
531
+ }
532
+
439
533
  """Entity for ActivityThread"""
440
534
  type ActivityThread {
441
535
  activityApprovals: [ActivityApproval!]!
@@ -778,6 +872,8 @@ type ApprovalLine {
778
872
  """Entity for approval line item"""
779
873
  type ApprovalLineItem {
780
874
  approver: OrgMemberTarget
875
+ notifyAfter: Int
876
+ participation: ApprovalParticipation
781
877
  type: String
782
878
  value: String
783
879
  }
@@ -816,6 +912,14 @@ input ApprovalLinePatch {
816
912
  ownerType: ApprovalLineOwnerType
817
913
  }
818
914
 
915
+ """
916
+ in what capacity this member joins the approval line: approval decides, reference only comments
917
+ """
918
+ enum ApprovalParticipation {
919
+ Approval
920
+ Reference
921
+ }
922
+
819
923
  type AssigneeItem {
820
924
  assignee: OrgMemberTarget
821
925
  type: OrgMemberTargetType
@@ -1934,6 +2038,17 @@ input BuildingPatch {
1934
2038
  name: String
1935
2039
  }
1936
2040
 
2041
+ """채팅 실시간 이벤트"""
2042
+ type ChatEvent {
2043
+ action: String
2044
+ event: String!
2045
+ lastReadAt: DateTimeISO
2046
+ message: ChatRoomMessage
2047
+ messageId: ID
2048
+ roomId: ID!
2049
+ userId: ID
2050
+ }
2051
+
1937
2052
  """A single chat message in a ChatSession."""
1938
2053
  type ChatMessage {
1939
2054
  """Message content"""
@@ -1980,6 +2095,59 @@ type ChatMessage {
1980
2095
  updater: User
1981
2096
  }
1982
2097
 
2098
+ """채팅 대화방"""
2099
+ type ChatRoom {
2100
+ createdAt: DateTimeISO
2101
+ creator: User
2102
+ domain: Domain
2103
+ id: ID!
2104
+ lastMessageAt: DateTimeISO
2105
+ lastMessagePreview: String
2106
+
2107
+ """대화방 멤버 목록"""
2108
+ members: [ChatRoomMember!]!
2109
+ name: String
2110
+
2111
+ """내가 안 읽은 메시지 수"""
2112
+ unreadCount: Float!
2113
+ updatedAt: DateTimeISO
2114
+ }
2115
+
2116
+ """채팅 대화방 멤버"""
2117
+ type ChatRoomMember {
2118
+ createdAt: DateTimeISO
2119
+ domain: Domain
2120
+ id: ID!
2121
+ lastReadAt: DateTimeISO
2122
+
2123
+ """온라인 여부 (하트비트 60초 이내)"""
2124
+ online: Boolean!
2125
+ room: ChatRoom
2126
+ user: User
2127
+ }
2128
+
2129
+ """채팅 메시지"""
2130
+ type ChatRoomMessage {
2131
+ """첨부파일 목록"""
2132
+ attachments: [Attachment!]!
2133
+ createdAt: DateTimeISO
2134
+ deletedAt: DateTimeISO
2135
+ domain: Domain
2136
+ editedAt: DateTimeISO
2137
+ id: ID!
2138
+ message: String
2139
+ replyTo: ChatRoomMessage
2140
+ room: ChatRoom
2141
+ sender: User
2142
+ type: ChatRoomMessageType
2143
+ }
2144
+
2145
+ """채팅 메시지 타입 (TEXT=일반, SYSTEM=초대/나가기/이름변경 안내)"""
2146
+ enum ChatRoomMessageType {
2147
+ SYSTEM
2148
+ TEXT
2149
+ }
2150
+
1983
2151
  """AI 협력 세션 — Board 와 결합. 한 보드에 여러 세션 가능 (thread / 사용자별 / 컨텍스트별 등 미래 확장)."""
1984
2152
  type ChatSession {
1985
2153
  aiClientId: String
@@ -4840,8 +5008,21 @@ input InspectionPartPatch {
4840
5008
  type InstallableActivity {
4841
5009
  activity: Activity
4842
5010
  activityType: String
5011
+
5012
+ """
5013
+ How many approval steps this activity has in this domain. Steps, not people; references excluded.
5014
+ """
5015
+ approvalSteps: Int
4843
5016
  category: String
4844
5017
  description: String
5018
+
5019
+ """
5020
+ What this work is, for the person who receives it. Plain sentences or i18n keys.
5021
+ """
5022
+ guide: [String!]
5023
+
5024
+ """What to call this work on screen, when the key is not readable"""
5025
+ label: String
4845
5026
  model: [ActivityModelItem!]
4846
5027
 
4847
5028
  """
@@ -4853,6 +5034,7 @@ type InstallableActivity {
4853
5034
 
4854
5035
  """Provider information of the Activity"""
4855
5036
  provider: String
5037
+ readiness: ActivityReadiness
4856
5038
 
4857
5039
  """Release information of the Activity"""
4858
5040
  release: String
@@ -6472,6 +6654,9 @@ type Mutation {
6472
6654
  """Add a user as owner of the current domain."""
6473
6655
  addDomainOwner(reason: String, username: String!): DomainOwner!
6474
6656
 
6657
+ """To announce a work shift arrangement that starts later"""
6658
+ announceWorkShift(effectiveFrom: DateTimeISO!, patches: [WorkShiftPatch!]!): WorkShiftRevision!
6659
+
6475
6660
  """
6476
6661
  Append a system note to a session — context that did not come from a participant typing (e.g. a conversation carried over from another surface, an external state change). The AI sees it as part of the shared history.
6477
6662
  """
@@ -6533,6 +6718,12 @@ type Mutation {
6533
6718
  calculateRegionalStatistics(periodType: KpiPeriodType! = MONTH, valueDate: String!): [KpiStatistic!]!
6534
6719
  cancelInvitation(email: EmailAddress!, reference: String!, type: String!): Boolean!
6535
6720
 
6721
+ """To cancel an announced work shift arrangement"""
6722
+ cancelWorkShiftAnnouncement(id: String!): Boolean!
6723
+
6724
+ """온라인 상태 하트비트"""
6725
+ chatHeartbeat: Boolean!
6726
+
6536
6727
  """To clear translations cache"""
6537
6728
  clearTranslationsCache: Boolean!
6538
6729
 
@@ -6609,6 +6800,9 @@ type Mutation {
6609
6800
  """Create Daily Worklog by projectId+date"""
6610
6801
  createBuildingInspectionDailyWorklog(patch: BuildingInspectionDailyWorklogNew!): BuildingInspectionDailyWorklog!
6611
6802
 
6803
+ """대화방 생성 (1:1은 기존 방이 있으면 재사용)"""
6804
+ createChatRoom(name: String, userIds: [String!]!): ChatRoom!
6805
+
6612
6806
  """To create new ChecklistItemComment"""
6613
6807
  createChecklistItemComment(checklistItemComment: NewChecklistItemComment!): ChecklistItemComment!
6614
6808
 
@@ -6934,6 +7128,9 @@ type Mutation {
6934
7128
  """To delete multiple Buildings"""
6935
7129
  deleteBuildings(ids: [String!]!): Boolean!
6936
7130
 
7131
+ """메시지 삭제 (본인 메시지만, 소프트 삭제)"""
7132
+ deleteChatRoomMessage(id: String!): Boolean!
7133
+
6937
7134
  """To delete ChecklistItemComment"""
6938
7135
  deleteChecklistItemComment(id: String!): Boolean!
6939
7136
 
@@ -7570,6 +7767,9 @@ type Mutation {
7570
7767
  """The username or email of the user to inactivate."""
7571
7768
  username: String!
7572
7769
  ): Boolean!
7770
+
7771
+ """대화방에 멤버 초대"""
7772
+ inviteChatMembers(roomId: String!, userIds: [String!]!): Boolean!
7573
7773
  inviteCustomer(customerDomainName: String!): Boolean!
7574
7774
 
7575
7775
  """
@@ -7594,9 +7794,15 @@ type Mutation {
7594
7794
  """Adds one or more boards to a play group."""
7595
7795
  joinPlayGroup(boardIds: [String!]!, id: String!): PlayGroup!
7596
7796
 
7797
+ """대화방 나가기 (마지막 멤버가 나가면 방 삭제)"""
7798
+ leaveChatRoom(roomId: String!): Boolean!
7799
+
7597
7800
  """Removes one or more boards from a play group."""
7598
7801
  leavePlayGroup(boardIds: [String!]!, id: String!): PlayGroup!
7599
7802
 
7803
+ """대화방 읽음 처리 (읽음 워터마크 갱신)"""
7804
+ markChatRoomRead(roomId: String!): Boolean!
7805
+
7600
7806
  """
7601
7807
  Mark a session as read up to now for the current user. Idempotent. Distinct from presence (lastSeenAt) — a window can be open without being read.
7602
7808
  """
@@ -7695,6 +7901,9 @@ type Mutation {
7695
7901
  """
7696
7902
  renameAISession(name: String!, sessionId: String!): Boolean!
7697
7903
 
7904
+ """대화방 이름 변경"""
7905
+ renameChatRoom(name: String!, roomId: String!): ChatRoom!
7906
+
7698
7907
  """Rename a ChatSession (tab label)."""
7699
7908
  renameChatSession(name: String!, sessionId: String!): Boolean!
7700
7909
  renewApplicationAccessToken(id: String!, scope: String!): AccessToken!
@@ -7747,6 +7956,9 @@ type Mutation {
7747
7956
 
7748
7957
  """To save ActivityThread information"""
7749
7958
  saveActivityThread(id: String!, save: ActivityThreadSave!): ActivityThread!
7959
+
7960
+ """메시지 전송 (텍스트/첨부/답장)"""
7961
+ sendChatRoomMessage(files: [Upload!], message: String, replyToId: String, roomId: String!): ChatRoomMessage!
7750
7962
  sendInvitation(email: EmailAddress!, reference: String!, type: String!): Invitation!
7751
7963
  singleUpload(file: Upload!): Attachment!
7752
7964
 
@@ -7889,6 +8101,9 @@ type Mutation {
7889
8101
  """Update Daily Worklog"""
7890
8102
  updateBuildingInspectionDailyWorklog(patch: BuildingInspectionDailyWorklogPatch!): BuildingInspectionDailyWorklog!
7891
8103
 
8104
+ """메시지 수정 (본인 메시지만)"""
8105
+ updateChatRoomMessage(id: String!, message: String!): ChatRoomMessage!
8106
+
7892
8107
  """To modify ChecklistItemComment information"""
7893
8108
  updateChecklistItemComment(id: String!, patch: ChecklistItemCommentPatch!): ChecklistItemComment!
7894
8109
 
@@ -8361,6 +8576,11 @@ input NewActivity {
8361
8576
  multiple: String
8362
8577
  name: String!
8363
8578
  priority: Float
8579
+
8580
+ """
8581
+ true when a rejection closes the case for good — it cannot be restarted
8582
+ """
8583
+ rejectionIsFinal: Boolean
8364
8584
  reportSource: String
8365
8585
  reportType: String
8366
8586
  schedule: String
@@ -11065,6 +11285,28 @@ type Query {
11065
11285
  """Sorting options for the list query."""
11066
11286
  sortings: [Sorting!]
11067
11287
  ): ActivityApprovalList!
11288
+
11289
+ """
11290
+ To fetch the approvals where I am a reference — I may comment, I do not decide
11291
+ """
11292
+ approvalReferenceList(
11293
+ """An array of filter conditions to apply to the list query."""
11294
+ filters: [Filter!]
11295
+
11296
+ """Inherited value type for the list query."""
11297
+ inherited: InheritedValueType
11298
+
11299
+ """Pagination options for the list query."""
11300
+ pagination: Pagination
11301
+
11302
+ """
11303
+ A single free-text term matched across the fields the resolver declares as searchable (OR). Additive to filters: both are applied together. Prefer this over hand-assembling one search filter per field.
11304
+ """
11305
+ search: String
11306
+
11307
+ """Sorting options for the list query."""
11308
+ sortings: [Sorting!]
11309
+ ): ActivityApprovalList!
11068
11310
  attachment(id: String!): Attachment!
11069
11311
  attachments(
11070
11312
  """An array of filter conditions to apply to the list query."""
@@ -11349,9 +11591,21 @@ type Query {
11349
11591
  """List chat messages of a session, oldest first."""
11350
11592
  chatMessages(limit: Int = 100, offset: Int = 0, sessionId: String!): [ChatMessage!]!
11351
11593
 
11594
+ """현재 온라인인 유저 id 목록 (멤버 탭 온라인 표시용)"""
11595
+ chatOnlineUserIds: [String!]!
11596
+
11352
11597
  """List patch entries of a session, newest first."""
11353
11598
  chatPatches(limit: Int = 100, sessionId: String!): [PatchEntry!]!
11354
11599
 
11600
+ """대화방 단건 조회 (멤버만 가능)"""
11601
+ chatRoom(id: String!): ChatRoom!
11602
+
11603
+ """대화방 메시지 조회 (최신순, before 커서로 과거 페이징, searchText로 검색)"""
11604
+ chatRoomMessages(before: DateTimeISO, limit: Int, roomId: String!, searchText: String): [ChatRoomMessage!]!
11605
+
11606
+ """내가 멤버인 대화방 목록 (최근 메시지순)"""
11607
+ chatRooms: [ChatRoom!]!
11608
+
11355
11609
  """Get AI chat session by id."""
11356
11610
  chatSession(id: String!): ChatSession
11357
11611
 
@@ -11383,6 +11637,9 @@ type Query {
11383
11637
  """
11384
11638
  chatSessionsByBoard(boardId: String!): [ChatSession!]!
11385
11639
 
11640
+ """전체 안읽은 메시지 수 (플로팅 아이콘 뱃지용)"""
11641
+ chatUnreadTotal: Float!
11642
+
11386
11643
  """
11387
11644
  Checks if the system is configured to provide a default password for new users.
11388
11645
  """
@@ -13168,6 +13425,11 @@ type Query {
13168
13425
  sortings: [Sorting!]
13169
13426
  ): ApprovalLineList!
13170
13427
 
13428
+ """
13429
+ Fetches the caller's own employee records in this domain. Empty when the caller is not an employee.
13430
+ """
13431
+ myEmployees: [Employee!]!
13432
+
13171
13433
  """To fetch current user's Favorites"""
13172
13434
  myFavorites: [Favorite!]!
13173
13435
 
@@ -14056,6 +14318,26 @@ type Query {
14056
14318
  ): UserList!
14057
14319
  vendors: [Domain!]!
14058
14320
 
14321
+ """To fetch work shift arrangements that used to be in force"""
14322
+ workShiftRevisions(
14323
+ """An array of filter conditions to apply to the list query."""
14324
+ filters: [Filter!]
14325
+
14326
+ """Inherited value type for the list query."""
14327
+ inherited: InheritedValueType
14328
+
14329
+ """Pagination options for the list query."""
14330
+ pagination: Pagination
14331
+
14332
+ """
14333
+ A single free-text term matched across the fields the resolver declares as searchable (OR). Additive to filters: both are applied together. Prefer this over hand-assembling one search filter per field.
14334
+ """
14335
+ search: String
14336
+
14337
+ """Sorting options for the list query."""
14338
+ sortings: [Sorting!]
14339
+ ): WorkShiftRevisionList!
14340
+
14059
14341
  """To fetch multiple WorkShifts"""
14060
14342
  workShifts(
14061
14343
  """An array of filter conditions to apply to the list query."""
@@ -14977,6 +15259,9 @@ type Subscription {
14977
15259
  """
14978
15260
  boardPatchActivity(boardId: String!): PatchEntry!
14979
15261
 
15262
+ """채팅 실시간 이벤트 구독 — 내가 멤버인 대화방의 이벤트만 수신"""
15263
+ chatEvent: ChatEvent!
15264
+
14980
15265
  """
14981
15266
  Subscribes to chat messages (user / assistant / system) of a session for real-time group chat.
14982
15267
  """
@@ -15556,6 +15841,11 @@ type UsersAuthProviders {
15556
15841
  type WorkShift {
15557
15842
  createdAt: DateTimeISO
15558
15843
  creator: User
15844
+
15845
+ """
15846
+ Weekdays this shift runs on as a CSV of 0(Sun)..6(Sat). Empty means every day
15847
+ """
15848
+ daysOfWeek: String
15559
15849
  description: String
15560
15850
  domain: Domain!
15561
15851
  fromDate: Float
@@ -15581,6 +15871,10 @@ type WorkShiftList {
15581
15871
  }
15582
15872
 
15583
15873
  input WorkShiftPatch {
15874
+ """
15875
+ Weekdays this shift runs on as a CSV of 0(Sun)..6(Sat). Empty means every day
15876
+ """
15877
+ daysOfWeek: String
15584
15878
  description: String
15585
15879
  fromDate: Float!
15586
15880
  fromTime: String!
@@ -15589,6 +15883,24 @@ input WorkShiftPatch {
15589
15883
  toTime: String!
15590
15884
  }
15591
15885
 
15886
+ """A work shift arrangement that used to be in force"""
15887
+ type WorkShiftRevision {
15888
+ createdAt: DateTimeISO
15889
+ creator: User
15890
+ domain: Domain!
15891
+ effectiveFrom: DateTimeISO!
15892
+ effectiveTo: DateTimeISO
15893
+ id: ID!
15894
+
15895
+ """the shift set that was in force, as JSON text"""
15896
+ shifts: String!
15897
+ }
15898
+
15899
+ type WorkShiftRevisionList {
15900
+ items: [WorkShiftRevision!]!
15901
+ total: Int!
15902
+ }
15903
+
15592
15904
  """작업자 타입"""
15593
15905
  type WorkerType {
15594
15906
  createdAt: DateTimeISO