@dssp/dssp 1.0.0-alpha.66 → 1.0.0-alpha.74
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/config/config.development.js +2 -1
- package/config/config.production.js +2 -1
- package/db_back.sqlite +0 -0
- package/dist-client/entries/auth/checkin.d.ts +38 -0
- package/dist-client/entries/auth/checkin.js +546 -0
- package/dist-client/entries/auth/checkin.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/schema.graphql +601 -5
- package/translations/en.json +5 -1
- package/translations/ko.json +5 -1
package/schema.graphql
CHANGED
|
@@ -838,6 +838,7 @@ type Attachment {
|
|
|
838
838
|
refType: String
|
|
839
839
|
size: String!
|
|
840
840
|
tags: Object
|
|
841
|
+
thumbnail: String
|
|
841
842
|
updatedAt: DateTimeISO!
|
|
842
843
|
updater: User
|
|
843
844
|
}
|
|
@@ -1146,6 +1147,16 @@ type Board {
|
|
|
1146
1147
|
"""A list of play groups that this board is a part of."""
|
|
1147
1148
|
playGroups: [PlayGroup!]
|
|
1148
1149
|
|
|
1150
|
+
"""
|
|
1151
|
+
Sort order for display. Lower values appear first. Supports fractional values for insertion.
|
|
1152
|
+
"""
|
|
1153
|
+
sortOrder: Float
|
|
1154
|
+
|
|
1155
|
+
"""
|
|
1156
|
+
Source ImportSession id (board-import) when this board was generated from a drawing/image import.
|
|
1157
|
+
"""
|
|
1158
|
+
sourceImportSessionId: String
|
|
1159
|
+
|
|
1149
1160
|
"""The state of the board, can be 'draft' or 'released'."""
|
|
1150
1161
|
state: String
|
|
1151
1162
|
|
|
@@ -1165,6 +1176,120 @@ type Board {
|
|
|
1165
1176
|
version: Float
|
|
1166
1177
|
}
|
|
1167
1178
|
|
|
1179
|
+
input BoardAIChatInput {
|
|
1180
|
+
"""
|
|
1181
|
+
Component categories to surface (e.g. ["3D", "form"]). Subset filter for groupings exposed in component-schemas.
|
|
1182
|
+
"""
|
|
1183
|
+
categories: [String!]
|
|
1184
|
+
|
|
1185
|
+
"""
|
|
1186
|
+
Component schemas — array of { type, description?, group?, properties? } so the LLM knows valid props per type.
|
|
1187
|
+
"""
|
|
1188
|
+
componentSchemas: JSON
|
|
1189
|
+
|
|
1190
|
+
"""Current BoardModel JSON."""
|
|
1191
|
+
currentBoard: JSON
|
|
1192
|
+
|
|
1193
|
+
"""
|
|
1194
|
+
Component types the LLM is allowed to emit (e.g. ["rect", "label"]). Constrains generation to the current solution.
|
|
1195
|
+
"""
|
|
1196
|
+
knownTypes: [String!]
|
|
1197
|
+
|
|
1198
|
+
"""
|
|
1199
|
+
Max output tokens override per LLM call. Falls back to assistant default when omitted.
|
|
1200
|
+
"""
|
|
1201
|
+
maxTokens: Float
|
|
1202
|
+
|
|
1203
|
+
"""
|
|
1204
|
+
Explicit #mention picks from popup — {token, refid}. User text stays clean (#token only); these picks let server resolve deterministically without exposing refid in the user-visible message. Tokens not in this list fall back to free name/id/type matching.
|
|
1205
|
+
"""
|
|
1206
|
+
mentions: [BoardAIMentionPickInput!]
|
|
1207
|
+
|
|
1208
|
+
"""
|
|
1209
|
+
Conversation history (latest user message at the end). For persisted sessions, only the last user message is appended; older are loaded from DB.
|
|
1210
|
+
"""
|
|
1211
|
+
messages: [BoardAILLMMessageInput!]!
|
|
1212
|
+
|
|
1213
|
+
"""
|
|
1214
|
+
AI model identifier override (e.g. "claude-opus-4-7"). Falls back to the configured default when omitted.
|
|
1215
|
+
"""
|
|
1216
|
+
model: String
|
|
1217
|
+
|
|
1218
|
+
"""
|
|
1219
|
+
Capability scopes the AI is allowed to use (e.g. 'create', 'edit', 'style'). Filters which tools are exposed to the LLM.
|
|
1220
|
+
"""
|
|
1221
|
+
scopes: [String!]
|
|
1222
|
+
|
|
1223
|
+
"""
|
|
1224
|
+
Refids of components currently selected in the modeller (universal numeric handle, things-scene auto-assigned). For "selected" / "선택한" intent. Note: distinct from `id` which is a data-binding name.
|
|
1225
|
+
"""
|
|
1226
|
+
selectedRefids: [Int!]
|
|
1227
|
+
|
|
1228
|
+
"""
|
|
1229
|
+
ChatSession id. Omit for ad-hoc (no persistence). When given, messages/patches are persisted.
|
|
1230
|
+
"""
|
|
1231
|
+
sessionId: String
|
|
1232
|
+
|
|
1233
|
+
"""
|
|
1234
|
+
Sampling temperature override. Falls back to assistant default when omitted.
|
|
1235
|
+
"""
|
|
1236
|
+
temperature: Float
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
type BoardAIChatOutput {
|
|
1240
|
+
"""
|
|
1241
|
+
Ephemeral scene actions (selection/view/mode) — sequence of BoardActionOp. Applied via board-action-execute event on the host. Distinct from `patch` which carries persistent model changes.
|
|
1242
|
+
"""
|
|
1243
|
+
actions: JSON
|
|
1244
|
+
|
|
1245
|
+
"""Persisted ChatMessage id of the AI reply."""
|
|
1246
|
+
assistantMessageId: String
|
|
1247
|
+
|
|
1248
|
+
"""AI client identifier (provider:model)."""
|
|
1249
|
+
clientId: String!
|
|
1250
|
+
|
|
1251
|
+
"""Clarifying question when input is ambiguous."""
|
|
1252
|
+
followUp: String
|
|
1253
|
+
|
|
1254
|
+
"""BoardEditPatch."""
|
|
1255
|
+
patch: JSON
|
|
1256
|
+
|
|
1257
|
+
"""Persisted PatchEntry id (when patch was generated)."""
|
|
1258
|
+
patchId: String
|
|
1259
|
+
|
|
1260
|
+
"""Conversational reply."""
|
|
1261
|
+
reply: String!
|
|
1262
|
+
|
|
1263
|
+
"""Echo of session id (when persisted)."""
|
|
1264
|
+
sessionId: String
|
|
1265
|
+
|
|
1266
|
+
"""
|
|
1267
|
+
Tool usages collected during agentic loop — sequence of {name, arguments, result, kind}. UI fold-able box for transparency / debug.
|
|
1268
|
+
"""
|
|
1269
|
+
toolUsages: JSON
|
|
1270
|
+
|
|
1271
|
+
"""Persisted ChatMessage id of the user input."""
|
|
1272
|
+
userMessageId: String
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
input BoardAILLMMessageInput {
|
|
1276
|
+
"""Message content"""
|
|
1277
|
+
content: String!
|
|
1278
|
+
|
|
1279
|
+
"""Role: 'user' or 'assistant'"""
|
|
1280
|
+
role: String!
|
|
1281
|
+
}
|
|
1282
|
+
|
|
1283
|
+
input BoardAIMentionPickInput {
|
|
1284
|
+
"""
|
|
1285
|
+
Refid explicitly picked from popup. Server uses this for deterministic resolution — bypasses fallback name/id/type matching for this token.
|
|
1286
|
+
"""
|
|
1287
|
+
refid: Int!
|
|
1288
|
+
|
|
1289
|
+
"""Token used by user (e.g. "경광등1" — the part after #)."""
|
|
1290
|
+
token: String!
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1168
1293
|
"""Represents a board that a user has marked as a favorite."""
|
|
1169
1294
|
type BoardFavorite {
|
|
1170
1295
|
"""The timestamp when the board was created."""
|
|
@@ -1200,6 +1325,16 @@ type BoardFavorite {
|
|
|
1200
1325
|
"""A list of play groups that this board is a part of."""
|
|
1201
1326
|
playGroups: [PlayGroup!]
|
|
1202
1327
|
|
|
1328
|
+
"""
|
|
1329
|
+
Sort order for display. Lower values appear first. Supports fractional values for insertion.
|
|
1330
|
+
"""
|
|
1331
|
+
sortOrder: Float
|
|
1332
|
+
|
|
1333
|
+
"""
|
|
1334
|
+
Source ImportSession id (board-import) when this board was generated from a drawing/image import.
|
|
1335
|
+
"""
|
|
1336
|
+
sourceImportSessionId: String
|
|
1337
|
+
|
|
1203
1338
|
"""The state of the board, can be 'draft' or 'released'."""
|
|
1204
1339
|
state: String
|
|
1205
1340
|
|
|
@@ -1297,6 +1432,16 @@ type BoardList {
|
|
|
1297
1432
|
total: Int!
|
|
1298
1433
|
}
|
|
1299
1434
|
|
|
1435
|
+
type BoardMetaSuggestion {
|
|
1436
|
+
"""
|
|
1437
|
+
Suggested detailed description — combines user prompt, AI importStrategy narrative, and category distribution stats.
|
|
1438
|
+
"""
|
|
1439
|
+
description: String!
|
|
1440
|
+
|
|
1441
|
+
"""Suggested short board name (collision-free with current domain)."""
|
|
1442
|
+
name: String!
|
|
1443
|
+
}
|
|
1444
|
+
|
|
1300
1445
|
"""Input for updating (patching) an existing board."""
|
|
1301
1446
|
input BoardPatch {
|
|
1302
1447
|
"""The new description for the board."""
|
|
@@ -1505,6 +1650,7 @@ type BuildingInspection {
|
|
|
1505
1650
|
creator: User
|
|
1506
1651
|
deletedAt: DateTimeISO
|
|
1507
1652
|
drawingMarker: String
|
|
1653
|
+
failCount: Float
|
|
1508
1654
|
id: ID!
|
|
1509
1655
|
manager: ProjectManagerOutput
|
|
1510
1656
|
memo: String
|
|
@@ -1573,6 +1719,7 @@ type BuildingInspectionHistory {
|
|
|
1573
1719
|
createdAt: DateTimeISO
|
|
1574
1720
|
creator: User
|
|
1575
1721
|
drawingMarker: String
|
|
1722
|
+
failCount: Float
|
|
1576
1723
|
id: ID!
|
|
1577
1724
|
loggedAt: DateTimeISO
|
|
1578
1725
|
manager: ProjectManagerOutput
|
|
@@ -1602,6 +1749,9 @@ type BuildingInspectionSummary {
|
|
|
1602
1749
|
"""검측 통과 수"""
|
|
1603
1750
|
pass: Int!
|
|
1604
1751
|
|
|
1752
|
+
"""재검측 대기 수 (failCount > 0 인 WAIT/OVERALL_WAIT)"""
|
|
1753
|
+
reWait: Int
|
|
1754
|
+
|
|
1605
1755
|
"""검측 요청 수"""
|
|
1606
1756
|
request: Int!
|
|
1607
1757
|
|
|
@@ -1636,6 +1786,9 @@ input BuildingInspectionsOfBuildingLevel {
|
|
|
1636
1786
|
input BuildingInspectionsOfProject {
|
|
1637
1787
|
limit: Float
|
|
1638
1788
|
projectId: String!
|
|
1789
|
+
|
|
1790
|
+
"""상태 필터 (WAIT, REQUEST, FAIL, RE_WAIT, PASS)"""
|
|
1791
|
+
statusFilter: String
|
|
1639
1792
|
}
|
|
1640
1793
|
|
|
1641
1794
|
"""층 정보"""
|
|
@@ -1683,6 +1836,113 @@ input BuildingPatch {
|
|
|
1683
1836
|
name: String
|
|
1684
1837
|
}
|
|
1685
1838
|
|
|
1839
|
+
"""A single chat message in a ChatSession."""
|
|
1840
|
+
type ChatMessage {
|
|
1841
|
+
"""Message content"""
|
|
1842
|
+
content: String!
|
|
1843
|
+
|
|
1844
|
+
"""Creation timestamp."""
|
|
1845
|
+
createdAt: DateTimeISO
|
|
1846
|
+
|
|
1847
|
+
"""User who triggered this message."""
|
|
1848
|
+
creator: User
|
|
1849
|
+
|
|
1850
|
+
"""Soft delete timestamp."""
|
|
1851
|
+
deletedAt: DateTimeISO
|
|
1852
|
+
id: ID
|
|
1853
|
+
|
|
1854
|
+
"""
|
|
1855
|
+
Id of the message this one is in-response-to / continues. Enables linear / branching / tree structures.
|
|
1856
|
+
"""
|
|
1857
|
+
parentMessageId: String
|
|
1858
|
+
|
|
1859
|
+
"""ImportSession.id this message triggered (if any)."""
|
|
1860
|
+
relatedImportSessionId: String
|
|
1861
|
+
|
|
1862
|
+
"""PatchEntry.id this message triggered (if any)."""
|
|
1863
|
+
relatedPatchId: String
|
|
1864
|
+
|
|
1865
|
+
"""'user' | 'assistant' | 'system'"""
|
|
1866
|
+
role: String!
|
|
1867
|
+
|
|
1868
|
+
"""
|
|
1869
|
+
Tool usage trace — array of {name, arguments, result, kind}. Only on assistant messages.
|
|
1870
|
+
"""
|
|
1871
|
+
toolUsagesJson: JSON
|
|
1872
|
+
|
|
1873
|
+
"""Last update timestamp (relevant once message editing is supported)."""
|
|
1874
|
+
updatedAt: DateTimeISO
|
|
1875
|
+
|
|
1876
|
+
"""Last user to update this message (for future edit support)."""
|
|
1877
|
+
updater: User
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
"""AI 협력 세션 — Board 와 결합. 한 보드에 여러 세션 가능 (thread / 사용자별 / 컨텍스트별 등 미래 확장)."""
|
|
1881
|
+
type ChatSession {
|
|
1882
|
+
aiClientId: String
|
|
1883
|
+
|
|
1884
|
+
"""
|
|
1885
|
+
Connected Board id. Multiple sessions per board allowed (future: threads / per-user / contexts).
|
|
1886
|
+
"""
|
|
1887
|
+
boardId: String
|
|
1888
|
+
createdAt: DateTimeISO
|
|
1889
|
+
|
|
1890
|
+
"""User who created this session."""
|
|
1891
|
+
creator: User
|
|
1892
|
+
domain: Domain
|
|
1893
|
+
id: ID
|
|
1894
|
+
|
|
1895
|
+
"""Compressed summary of older messages (for token saving)."""
|
|
1896
|
+
lastSummary: String
|
|
1897
|
+
|
|
1898
|
+
"""User-given name of this session (tab label / identification)."""
|
|
1899
|
+
name: String
|
|
1900
|
+
updatedAt: DateTimeISO
|
|
1901
|
+
|
|
1902
|
+
"""User who last updated this session."""
|
|
1903
|
+
updater: User
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
"""
|
|
1907
|
+
Participant of a ChatSession — links a User to a session with a role. Foundation for multi-user chat / per-user filtering / member display.
|
|
1908
|
+
"""
|
|
1909
|
+
type ChatSessionParticipant {
|
|
1910
|
+
"""Joined-at timestamp."""
|
|
1911
|
+
createdAt: DateTimeISO
|
|
1912
|
+
|
|
1913
|
+
"""
|
|
1914
|
+
User who created this participant record (typically session owner who invited).
|
|
1915
|
+
"""
|
|
1916
|
+
creator: User
|
|
1917
|
+
|
|
1918
|
+
"""Soft delete (= left session) timestamp."""
|
|
1919
|
+
deletedAt: DateTimeISO
|
|
1920
|
+
|
|
1921
|
+
"""Domain to which this participant belongs."""
|
|
1922
|
+
domain: Domain
|
|
1923
|
+
|
|
1924
|
+
"""Unique participant id."""
|
|
1925
|
+
id: ID!
|
|
1926
|
+
|
|
1927
|
+
"""Last seen / activity timestamp (presence indicator)."""
|
|
1928
|
+
lastSeenAt: DateTimeISO
|
|
1929
|
+
|
|
1930
|
+
"""Role of this participant: owner | member | viewer."""
|
|
1931
|
+
role: String!
|
|
1932
|
+
|
|
1933
|
+
"""The ChatSession this participation belongs to."""
|
|
1934
|
+
session: ChatSession
|
|
1935
|
+
|
|
1936
|
+
"""Last update timestamp (role change / lastSeenAt bump)."""
|
|
1937
|
+
updatedAt: DateTimeISO
|
|
1938
|
+
|
|
1939
|
+
"""Last user to update this participant record (e.g., role change)."""
|
|
1940
|
+
updater: User
|
|
1941
|
+
|
|
1942
|
+
"""The user participating in the session."""
|
|
1943
|
+
user: User
|
|
1944
|
+
}
|
|
1945
|
+
|
|
1686
1946
|
type Checklist {
|
|
1687
1947
|
buildingInspection: BuildingInspection!
|
|
1688
1948
|
checklistAttachments(description: String): [Attachment!]!
|
|
@@ -3517,6 +3777,27 @@ type DomainList {
|
|
|
3517
3777
|
total: Int
|
|
3518
3778
|
}
|
|
3519
3779
|
|
|
3780
|
+
"""An ownership record binding a User to a Domain (multi-owner support)."""
|
|
3781
|
+
type DomainOwner {
|
|
3782
|
+
"""Domain that the user owns."""
|
|
3783
|
+
domain: Domain!
|
|
3784
|
+
|
|
3785
|
+
"""When the ownership was granted."""
|
|
3786
|
+
grantedAt: DateTimeISO!
|
|
3787
|
+
|
|
3788
|
+
"""User who granted this ownership (audit)."""
|
|
3789
|
+
grantedBy: User
|
|
3790
|
+
|
|
3791
|
+
"""Unique identifier."""
|
|
3792
|
+
id: ID!
|
|
3793
|
+
|
|
3794
|
+
"""Optional reason/memo for granting ownership."""
|
|
3795
|
+
reason: String
|
|
3796
|
+
|
|
3797
|
+
"""User who owns the domain."""
|
|
3798
|
+
user: User!
|
|
3799
|
+
}
|
|
3800
|
+
|
|
3520
3801
|
"""Input type for updating an existing domain entity."""
|
|
3521
3802
|
input DomainPatch {
|
|
3522
3803
|
"""Additional attributes for the domain in key-value pairs."""
|
|
@@ -4076,6 +4357,70 @@ input GroupPatch {
|
|
|
4076
4357
|
name: String
|
|
4077
4358
|
}
|
|
4078
4359
|
|
|
4360
|
+
input ImportBoardAsyncInput {
|
|
4361
|
+
"""Apply Stage 4 (data binding)."""
|
|
4362
|
+
applyBinding: Boolean
|
|
4363
|
+
|
|
4364
|
+
"""
|
|
4365
|
+
Attachment id of the source drawing file (uploaded via attachment-base).
|
|
4366
|
+
"""
|
|
4367
|
+
attachmentId: String!
|
|
4368
|
+
|
|
4369
|
+
"""ChatSession id when triggered from board-ai chat."""
|
|
4370
|
+
chatSessionId: String
|
|
4371
|
+
|
|
4372
|
+
"""Flip Y axis (CAD Y-up → scene Y-down)."""
|
|
4373
|
+
flipY: Boolean
|
|
4374
|
+
|
|
4375
|
+
"""Normalize coordinates so minX,minY=0"""
|
|
4376
|
+
normalizeOrigin: Boolean
|
|
4377
|
+
|
|
4378
|
+
"""Adapter parse options (excludeLayers, maxEntities, ...)."""
|
|
4379
|
+
parseOptions: JSON
|
|
4380
|
+
|
|
4381
|
+
"""Scale factor (e.g. 1 for mm:1unit)."""
|
|
4382
|
+
scale: Float
|
|
4383
|
+
|
|
4384
|
+
"""Registry scopes to use (board-import)."""
|
|
4385
|
+
scopes: [String!]
|
|
4386
|
+
|
|
4387
|
+
"""
|
|
4388
|
+
User-provided context / hints about the drawing — passed to VLM as additional guidance. e.g. "fab lithography zone, central rectangles are stockers, thin lines are OHT rails."
|
|
4389
|
+
"""
|
|
4390
|
+
userPrompt: String
|
|
4391
|
+
}
|
|
4392
|
+
|
|
4393
|
+
"""도면 → 보드 변환 작업의 영속 단위 (비동기 진행상태 추적)."""
|
|
4394
|
+
type ImportSession {
|
|
4395
|
+
"""Attachment id (the source drawing file)"""
|
|
4396
|
+
attachmentId: String!
|
|
4397
|
+
|
|
4398
|
+
"""ChatSession id when triggered from chat (board-ai)."""
|
|
4399
|
+
chatSessionId: String
|
|
4400
|
+
completedAt: DateTimeISO
|
|
4401
|
+
createdAt: DateTimeISO
|
|
4402
|
+
creator: User
|
|
4403
|
+
domain: Domain
|
|
4404
|
+
id: ID
|
|
4405
|
+
message: String
|
|
4406
|
+
|
|
4407
|
+
"""Options used (parsed JSON)."""
|
|
4408
|
+
options: JSON
|
|
4409
|
+
|
|
4410
|
+
"""Progress percentage 0..100"""
|
|
4411
|
+
progress: Float!
|
|
4412
|
+
|
|
4413
|
+
"""Result (parsed JSON): { boardModel, stats, warnings }."""
|
|
4414
|
+
result: JSON
|
|
4415
|
+
|
|
4416
|
+
"""queued | parsing | mapping | assembling | binding | completed | failed"""
|
|
4417
|
+
status: String!
|
|
4418
|
+
|
|
4419
|
+
"""Total entities counted (when known)."""
|
|
4420
|
+
totalEntities: Int
|
|
4421
|
+
updatedAt: DateTimeISO
|
|
4422
|
+
}
|
|
4423
|
+
|
|
4079
4424
|
"""
|
|
4080
4425
|
Enumeration for inherited value types: None, Only, or Include. Used to specify how values are inherited in queries or filters.
|
|
4081
4426
|
"""
|
|
@@ -4249,6 +4594,11 @@ enum IssueStatus {
|
|
|
4249
4594
|
STATUS_B
|
|
4250
4595
|
}
|
|
4251
4596
|
|
|
4597
|
+
"""
|
|
4598
|
+
The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
|
|
4599
|
+
"""
|
|
4600
|
+
scalar JSON @specifiedBy(url: "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf")
|
|
4601
|
+
|
|
4252
4602
|
"""
|
|
4253
4603
|
A field whose value is a JSON Web Token (JWT): https://jwt.io/introduction.
|
|
4254
4604
|
"""
|
|
@@ -4329,6 +4679,11 @@ type Kpi {
|
|
|
4329
4679
|
"""
|
|
4330
4680
|
scoreFormula: String
|
|
4331
4681
|
|
|
4682
|
+
"""
|
|
4683
|
+
value → score 변환 방식. NONE: 미설정, DIRECT: value=score(변환 없음), FORMULA: scoreFormula 수식, LOOKUP: grade table(1D), CUSTOM: 2D 룩업 등 특수 변환.
|
|
4684
|
+
"""
|
|
4685
|
+
scoreType: KpiScoreType
|
|
4686
|
+
|
|
4332
4687
|
"""Current state of the KPI (DRAFT, RELEASED, ARCHIVED)."""
|
|
4333
4688
|
state: String
|
|
4334
4689
|
targetValue: Float
|
|
@@ -4353,6 +4708,11 @@ type Kpi {
|
|
|
4353
4708
|
orgScope: String
|
|
4354
4709
|
): KpiValue
|
|
4355
4710
|
|
|
4711
|
+
"""
|
|
4712
|
+
value 획득 방식. MEASURED: 외부 시스템 수집 측정값, ASSESSED: 감리자 직접 평가(1~5), CALCULATED: formula 자동 계산, COMPOSITE: 다차원 룩업 결과.
|
|
4713
|
+
"""
|
|
4714
|
+
valueType: KpiValueType
|
|
4715
|
+
|
|
4356
4716
|
"""
|
|
4357
4717
|
Version number of the KPI. Increments on each modification. When the KPI is released, a snapshot is saved in kpi-history and the status becomes RELEASED. Editing after release increases the version and sets status to DRAFT.
|
|
4358
4718
|
"""
|
|
@@ -4521,7 +4881,7 @@ input KpiMetricPatch {
|
|
|
4521
4881
|
"""데이터 수집 방식"""
|
|
4522
4882
|
collectType: KpiMetricCollectType
|
|
4523
4883
|
cuFlag: String
|
|
4524
|
-
|
|
4884
|
+
dataSet: ObjectRef
|
|
4525
4885
|
description: String
|
|
4526
4886
|
fieldName: String
|
|
4527
4887
|
id: ID
|
|
@@ -4764,6 +5124,9 @@ input KpiPatch {
|
|
|
4764
5124
|
"""
|
|
4765
5125
|
scoreFormula: String
|
|
4766
5126
|
|
|
5127
|
+
"""value → score 변환 방식."""
|
|
5128
|
+
scoreType: KpiScoreType
|
|
5129
|
+
|
|
4767
5130
|
"""Current state of the KPI (DRAFT, RELEASED, ARCHIVED)."""
|
|
4768
5131
|
state: KpiStatus
|
|
4769
5132
|
|
|
@@ -4773,6 +5136,9 @@ input KpiPatch {
|
|
|
4773
5136
|
"""Timezone for the KPI schedule."""
|
|
4774
5137
|
timezone: String
|
|
4775
5138
|
|
|
5139
|
+
"""value 획득 방식."""
|
|
5140
|
+
valueType: KpiValueType
|
|
5141
|
+
|
|
4776
5142
|
"""
|
|
4777
5143
|
Visualization options and metadata for this KPI, such as color, icon, thresholds, unit, decimal places, etc.
|
|
4778
5144
|
"""
|
|
@@ -4896,6 +5262,16 @@ input KpiScopePatch {
|
|
|
4896
5262
|
validationPattern: String
|
|
4897
5263
|
}
|
|
4898
5264
|
|
|
5265
|
+
"""
|
|
5266
|
+
value → score 변환 방식. DIRECT: value=score(변환 없음), FORMULA: scoreFormula 수식 적용, LOOKUP: grade table(1D) 매핑, CUSTOM: 2D 룩업 등 특수 변환.
|
|
5267
|
+
"""
|
|
5268
|
+
enum KpiScoreType {
|
|
5269
|
+
CUSTOM
|
|
5270
|
+
DIRECT
|
|
5271
|
+
FORMULA
|
|
5272
|
+
LOOKUP
|
|
5273
|
+
}
|
|
5274
|
+
|
|
4899
5275
|
"""
|
|
4900
5276
|
KPI Statistics Entity - Stores comprehensive statistical information for KPIs and Categories including central tendency measures (mean, median), dispersion metrics (standard deviation, variance), range indicators (min, max), and percentile distributions (25th, 75th percentiles, IQR). Supports both KPI and Category targets with flexible period-based aggregation (daily, weekly, monthly, yearly). Includes extensible JSON fields for additional metrics and metadata for calculation tracking.
|
|
4901
5277
|
"""
|
|
@@ -5166,6 +5542,16 @@ input KpiValuePatch {
|
|
|
5166
5542
|
version: Int
|
|
5167
5543
|
}
|
|
5168
5544
|
|
|
5545
|
+
"""
|
|
5546
|
+
value 획득 방식. MEASURED: 외부 시스템 수집 측정값, ASSESSED: 감리자 직접 평가(1~5), CALCULATED: formula 자동 계산, COMPOSITE: 다차원 복합 입력 결과.
|
|
5547
|
+
"""
|
|
5548
|
+
enum KpiValueType {
|
|
5549
|
+
ASSESSED
|
|
5550
|
+
CALCULATED
|
|
5551
|
+
COMPOSITE
|
|
5552
|
+
MEASURED
|
|
5553
|
+
}
|
|
5554
|
+
|
|
5169
5555
|
type KpiValuesObject {
|
|
5170
5556
|
kpiName: String!
|
|
5171
5557
|
value: Float!
|
|
@@ -5307,6 +5693,33 @@ input ManagerPatch {
|
|
|
5307
5693
|
userId: ID
|
|
5308
5694
|
}
|
|
5309
5695
|
|
|
5696
|
+
input MaterializeImportSessionInput {
|
|
5697
|
+
"""Optional Board description."""
|
|
5698
|
+
description: String
|
|
5699
|
+
|
|
5700
|
+
"""Optional Group id to attach the Board to."""
|
|
5701
|
+
groupId: ID
|
|
5702
|
+
|
|
5703
|
+
"""New Board name."""
|
|
5704
|
+
name: String!
|
|
5705
|
+
|
|
5706
|
+
"""ImportSession id (must be in completed state)."""
|
|
5707
|
+
sessionId: ID!
|
|
5708
|
+
|
|
5709
|
+
"""
|
|
5710
|
+
Base64 thumbnail. If omitted, board-service default empty thumbnail is used.
|
|
5711
|
+
"""
|
|
5712
|
+
thumbnail: String
|
|
5713
|
+
|
|
5714
|
+
"""Board type — 'main' | 'sub' | 'popup'. Default 'main'."""
|
|
5715
|
+
type: String
|
|
5716
|
+
|
|
5717
|
+
"""
|
|
5718
|
+
ImportSession 의 결과 시안 중 하나의 id. 'as-is' / 'scene' / 'auto-fit'. 미지정 시 default variant (보통 'scene') 사용.
|
|
5719
|
+
"""
|
|
5720
|
+
variantId: String
|
|
5721
|
+
}
|
|
5722
|
+
|
|
5310
5723
|
"""Entity for Menu"""
|
|
5311
5724
|
type Menu {
|
|
5312
5725
|
buttons: [MenuButton!]!
|
|
@@ -5685,6 +6098,9 @@ type Mutation {
|
|
|
5685
6098
|
username: String!
|
|
5686
6099
|
): Boolean!
|
|
5687
6100
|
|
|
6101
|
+
"""Add a user as owner of the current domain."""
|
|
6102
|
+
addDomainOwner(reason: String, username: String!): DomainOwner!
|
|
6103
|
+
|
|
5688
6104
|
"""To apply to all building inspection"""
|
|
5689
6105
|
applyToAllBuildingInspection(buildingInspectionId: String!): Boolean!
|
|
5690
6106
|
|
|
@@ -5705,6 +6121,14 @@ type Mutation {
|
|
|
5705
6121
|
"""
|
|
5706
6122
|
attachContact(contactId: String!, id: String!): Employee!
|
|
5707
6123
|
|
|
6124
|
+
"""
|
|
6125
|
+
썸네일이 없는 기존 첨부파일들에 대해 서버에서 썸네일을 일괄 생성한다. 한 호출당 limit 개까지만 처리하며, remaining > 0 이면 반복 호출 필요.
|
|
6126
|
+
"""
|
|
6127
|
+
backfillAttachmentThumbnails(limit: Int = 20): ThumbnailBackfillResult!
|
|
6128
|
+
|
|
6129
|
+
"""AI 주도 보드 모델링 — 자연어 채팅으로 보드 생성·구조편집·스타일링. sessionId 로 영속 컨텍스트."""
|
|
6130
|
+
boardAIChat(input: BoardAIChatInput!): BoardAIChatOutput!
|
|
6131
|
+
|
|
5708
6132
|
"""Bulk create or update KPI org-scope mappings."""
|
|
5709
6133
|
bulkUpsertKpiOrgScopes(
|
|
5710
6134
|
"""Array of org-scope mapping data for bulk upsert."""
|
|
@@ -5793,6 +6217,16 @@ type Mutation {
|
|
|
5793
6217
|
"""Create Daily Worklog by projectId+date"""
|
|
5794
6218
|
createBuildingInspectionDailyWorklog(patch: BuildingInspectionDailyWorklogNew!): BuildingInspectionDailyWorklog!
|
|
5795
6219
|
|
|
6220
|
+
"""
|
|
6221
|
+
Always create a new AI chat session for a board (no idempotent reuse). For multi-session UX — 새 탭 열기.
|
|
6222
|
+
"""
|
|
6223
|
+
createChatSession(
|
|
6224
|
+
boardId: String!
|
|
6225
|
+
|
|
6226
|
+
"""Optional name (defaults to auto-generated `세션 N`)."""
|
|
6227
|
+
name: String
|
|
6228
|
+
): ChatSession!
|
|
6229
|
+
|
|
5796
6230
|
"""To create new ChecklistItemComment"""
|
|
5797
6231
|
createChecklistItemComment(checklistItemComment: NewChecklistItemComment!): ChecklistItemComment!
|
|
5798
6232
|
|
|
@@ -6524,6 +6958,9 @@ type Mutation {
|
|
|
6524
6958
|
"""To delete multiple WorkerTypes"""
|
|
6525
6959
|
deleteWorkerTypes(ids: [String!]!): Boolean!
|
|
6526
6960
|
|
|
6961
|
+
"""프로젝트 테넌트 강등 (Domain soft-delete, Project.code 보존)"""
|
|
6962
|
+
demoteProjectTenant(projectId: String!): Boolean!
|
|
6963
|
+
|
|
6527
6964
|
"""
|
|
6528
6965
|
Detaches an existing contact from an employee. The employee is identified by their ID.
|
|
6529
6966
|
"""
|
|
@@ -6597,6 +7034,9 @@ type Mutation {
|
|
|
6597
7034
|
attributes: [AttributeSetPatch!]!
|
|
6598
7035
|
): Boolean!
|
|
6599
7036
|
|
|
7037
|
+
"""도면 → 보드 변환을 비동기로 시작. 즉시 ImportSession 반환, 백그라운드에서 처리."""
|
|
7038
|
+
importBoardAsync(input: ImportBoardAsyncInput!): ImportSession!
|
|
7039
|
+
|
|
6600
7040
|
"""Imports multiple boards from JSON files."""
|
|
6601
7041
|
importBoards(files: [Upload!]!, groupId: String!, overwrite: Boolean!): [Board!]!
|
|
6602
7042
|
|
|
@@ -6740,6 +7180,11 @@ type Mutation {
|
|
|
6740
7180
|
|
|
6741
7181
|
"""Removes one or more boards from a play group."""
|
|
6742
7182
|
leavePlayGroup(boardIds: [String!]!, id: String!): PlayGroup!
|
|
7183
|
+
|
|
7184
|
+
"""
|
|
7185
|
+
완료된 ImportSession 의 결과 boardModel 을 새 Board entity 로 영속화한다. 검수 단계 (사용자/AI 가 import 결과를 확인 후 명시적으로 호출) 에서 사용. Board.state="draft" 로 생성되므로 release mutation 으로 별도 발행 필요.
|
|
7186
|
+
"""
|
|
7187
|
+
materializeImportSession(input: MaterializeImportSessionInput!): Board!
|
|
6743
7188
|
multipleUpload(files: [Upload!]!): [Attachment!]!
|
|
6744
7189
|
|
|
6745
7190
|
"""
|
|
@@ -6747,12 +7192,20 @@ type Mutation {
|
|
|
6747
7192
|
"""
|
|
6748
7193
|
pickActivityInstance(id: String!): ActivityThread
|
|
6749
7194
|
|
|
7195
|
+
"""프로젝트를 테넌트로 승격 (관리번호 발번 + project 카테고리 Domain 생성)"""
|
|
7196
|
+
promoteProjectToTenant(projectId: String!): Project!
|
|
7197
|
+
|
|
6750
7198
|
"""기존 KPI Value 인스턴스를 현재 formula/metric 값으로 재계산"""
|
|
6751
7199
|
recalculateKpiValue(id: String!): KpiValue!
|
|
6752
7200
|
|
|
6753
7201
|
"""Recalculate scores for all KpiValues of a specific KPI"""
|
|
6754
7202
|
recalculateScoresForKpi(kpiId: String!): Boolean!
|
|
6755
7203
|
|
|
7204
|
+
"""
|
|
7205
|
+
Record a patch from user direct edit. Adds a system message so AI sees the change next turn.
|
|
7206
|
+
"""
|
|
7207
|
+
recordDirectPatch(ops: JSON!, sessionId: String!, summary: String): PatchEntry!
|
|
7208
|
+
|
|
6756
7209
|
"""Record a metric value by metric name, value, meta, and org."""
|
|
6757
7210
|
recordKpiMetricValue(
|
|
6758
7211
|
"""Extended or non-numeric information (JSON)."""
|
|
@@ -6804,8 +7257,17 @@ type Mutation {
|
|
|
6804
7257
|
|
|
6805
7258
|
"""Release a KPI and create a version history."""
|
|
6806
7259
|
releaseKpi(id: String!): Kpi!
|
|
7260
|
+
|
|
7261
|
+
"""Remove a user from the owners of the current domain."""
|
|
7262
|
+
removeDomainOwner(reason: String, username: String!): Boolean!
|
|
7263
|
+
|
|
7264
|
+
"""Rename a ChatSession (tab label)."""
|
|
7265
|
+
renameChatSession(name: String!, sessionId: String!): Boolean!
|
|
6807
7266
|
renewApplicationAccessToken(id: String!, scope: String!): AccessToken!
|
|
6808
7267
|
|
|
7268
|
+
"""Reorders a board between two adjacent boards by ID."""
|
|
7269
|
+
reorderBoard(id: String!, nextId: String, prevId: String): Boolean!
|
|
7270
|
+
|
|
6809
7271
|
"""Sets the custom playback order for boards in a play group."""
|
|
6810
7272
|
reorderPlayGroup(boardIds: [String!]!, id: String!): PlayGroup!
|
|
6811
7273
|
|
|
@@ -6826,6 +7288,9 @@ type Mutation {
|
|
|
6826
7288
|
"""Revert a KPI to a specific historical version."""
|
|
6827
7289
|
revertKpiVersion(id: String!, version: Float!): Kpi!
|
|
6828
7290
|
|
|
7291
|
+
"""Mark a patch as reverted (does not undo, only flags)."""
|
|
7292
|
+
revertPatch(patchId: String!): Boolean!
|
|
7293
|
+
|
|
6829
7294
|
"""
|
|
6830
7295
|
Runs a new scenario instance once and returns the result after it finishes.
|
|
6831
7296
|
"""
|
|
@@ -6845,6 +7310,11 @@ type Mutation {
|
|
|
6845
7310
|
"""To start ActivityThread"""
|
|
6846
7311
|
startActivityThread(id: String!, output: Object, reason: String): ActivityThread
|
|
6847
7312
|
|
|
7313
|
+
"""
|
|
7314
|
+
Start (or get existing) AI chat session for a board. Idempotent — returns first existing or creates one.
|
|
7315
|
+
"""
|
|
7316
|
+
startBoardAISession(boardId: String!): ChatSession!
|
|
7317
|
+
|
|
6848
7318
|
"""
|
|
6849
7319
|
Starts automated data collection scheduling for the specified dataset. This mutation registers a cron-based schedule that automatically triggers data collection tasks according to the dataset configuration.
|
|
6850
7320
|
"""
|
|
@@ -8006,6 +8476,9 @@ input NewKpi {
|
|
|
8006
8476
|
"""
|
|
8007
8477
|
scoreFormula: String
|
|
8008
8478
|
|
|
8479
|
+
"""value → score 변환 방식."""
|
|
8480
|
+
scoreType: KpiScoreType
|
|
8481
|
+
|
|
8009
8482
|
"""Current state of the KPI (DRAFT, RELEASED, ARCHIVED)."""
|
|
8010
8483
|
state: KpiStatus
|
|
8011
8484
|
|
|
@@ -8015,6 +8488,9 @@ input NewKpi {
|
|
|
8015
8488
|
"""Timezone for the KPI schedule."""
|
|
8016
8489
|
timezone: String
|
|
8017
8490
|
|
|
8491
|
+
"""value 획득 방식."""
|
|
8492
|
+
valueType: KpiValueType
|
|
8493
|
+
|
|
8018
8494
|
"""
|
|
8019
8495
|
Visualization options and metadata for this KPI, such as color, icon, thresholds, unit, decimal places, etc.
|
|
8020
8496
|
"""
|
|
@@ -8039,8 +8515,8 @@ input NewKpiMetric {
|
|
|
8039
8515
|
"""데이터 수집 방식"""
|
|
8040
8516
|
collectType: KpiMetricCollectType
|
|
8041
8517
|
|
|
8042
|
-
"""
|
|
8043
|
-
|
|
8518
|
+
"""Source dataset for this metric."""
|
|
8519
|
+
dataSet: ObjectRef
|
|
8044
8520
|
|
|
8045
8521
|
"""User-friendly name or description of the metric."""
|
|
8046
8522
|
description: String
|
|
@@ -9189,6 +9665,26 @@ type PasswordRule {
|
|
|
9189
9665
|
useTightPattern: Boolean
|
|
9190
9666
|
}
|
|
9191
9667
|
|
|
9668
|
+
"""One board edit operation history (cascade-deleted with ChatSession)."""
|
|
9669
|
+
type PatchEntry {
|
|
9670
|
+
"""AI confidence 0..1 (null for user-direct)."""
|
|
9671
|
+
confidence: Float
|
|
9672
|
+
createdAt: DateTimeISO
|
|
9673
|
+
id: ID
|
|
9674
|
+
|
|
9675
|
+
"""BoardEditOp[] (parsed JSON array)."""
|
|
9676
|
+
opsJson: JSON!
|
|
9677
|
+
|
|
9678
|
+
"""Whether this patch was reverted."""
|
|
9679
|
+
reverted: Boolean!
|
|
9680
|
+
|
|
9681
|
+
"""'ai' | 'user-direct' | 'import'"""
|
|
9682
|
+
source: String!
|
|
9683
|
+
|
|
9684
|
+
"""Short human summary of this patch."""
|
|
9685
|
+
summary: String
|
|
9686
|
+
}
|
|
9687
|
+
|
|
9192
9688
|
"""Logs the request and response payloads for API interactions."""
|
|
9193
9689
|
type PayloadLog {
|
|
9194
9690
|
"""The timestamp when the log entry was created."""
|
|
@@ -9453,6 +9949,8 @@ input ProfileInput {
|
|
|
9453
9949
|
"""프로젝트"""
|
|
9454
9950
|
type Project {
|
|
9455
9951
|
buildingComplex: BuildingComplex
|
|
9952
|
+
buildingUsage: String
|
|
9953
|
+
code: String
|
|
9456
9954
|
completeReport: Attachment
|
|
9457
9955
|
createdAt: DateTimeISO
|
|
9458
9956
|
creator: User
|
|
@@ -9474,10 +9972,14 @@ type Project {
|
|
|
9474
9972
|
robotProgressRate: Float
|
|
9475
9973
|
rootTasks: [Task!]
|
|
9476
9974
|
scheduleTable: Attachment
|
|
9975
|
+
sectorType: String
|
|
9477
9976
|
startDate: String
|
|
9478
9977
|
state: String!
|
|
9479
9978
|
structuralSafetyRate: Float
|
|
9480
9979
|
tasks: [Task!]
|
|
9980
|
+
|
|
9981
|
+
"""활성 테넌트 Domain (extType=project). 미승격 또는 강등 상태이면 null"""
|
|
9982
|
+
tenantDomain: Domain
|
|
9481
9983
|
totalProgress: Float
|
|
9482
9984
|
updatedAt: DateTimeISO
|
|
9483
9985
|
updater: User
|
|
@@ -9505,6 +10007,9 @@ input ProjectPatch {
|
|
|
9505
10007
|
"""연관된 건물 복합체 정보 (선택 사항)"""
|
|
9506
10008
|
buildingComplex: BuildingComplexPatch
|
|
9507
10009
|
|
|
10010
|
+
"""건물 용도 (RESIDENTIAL: 주거, NON_RESIDENTIAL: 비주거)"""
|
|
10011
|
+
buildingUsage: String
|
|
10012
|
+
|
|
9508
10013
|
"""프로젝트 문서 네이밍"""
|
|
9509
10014
|
documentNaming: String
|
|
9510
10015
|
|
|
@@ -9532,6 +10037,9 @@ input ProjectPatch {
|
|
|
9532
10037
|
"""로봇 작업 진행율 (%)"""
|
|
9533
10038
|
robotProgressRate: Float
|
|
9534
10039
|
|
|
10040
|
+
"""발주 유형 (PUBLIC: 공공, PRIVATE: 민간)"""
|
|
10041
|
+
sectorType: String
|
|
10042
|
+
|
|
9535
10043
|
"""프로젝트 착공일정"""
|
|
9536
10044
|
startDate: String
|
|
9537
10045
|
|
|
@@ -9967,8 +10475,14 @@ type Query {
|
|
|
9967
10475
|
sortings: [Sorting!]
|
|
9968
10476
|
): AuthProviderList!
|
|
9969
10477
|
|
|
9970
|
-
"""
|
|
9971
|
-
board
|
|
10478
|
+
"""
|
|
10479
|
+
Finds a single board by its ID. If cachedUpdatedAt matches, model is omitted.
|
|
10480
|
+
"""
|
|
10481
|
+
board(
|
|
10482
|
+
"""Client cache timestamp — if matches, model field is omitted"""
|
|
10483
|
+
cachedUpdatedAt: String
|
|
10484
|
+
id: String!
|
|
10485
|
+
): Board!
|
|
9972
10486
|
|
|
9973
10487
|
"""Finds a single board by its name."""
|
|
9974
10488
|
boardByName(name: String!): Board
|
|
@@ -10045,6 +10559,11 @@ type Query {
|
|
|
10045
10559
|
sortings: [Sorting!]
|
|
10046
10560
|
): BoardList!
|
|
10047
10561
|
|
|
10562
|
+
"""
|
|
10563
|
+
Retrieves boards that have been updated or soft-deleted since the given timestamp.
|
|
10564
|
+
"""
|
|
10565
|
+
boardsUpdatedSince(since: DateTimeISO!): [Board!]!
|
|
10566
|
+
|
|
10048
10567
|
"""To fetch a building"""
|
|
10049
10568
|
building(id: String!): Building
|
|
10050
10569
|
|
|
@@ -10106,6 +10625,28 @@ type Query {
|
|
|
10106
10625
|
"""To fetch a building level"""
|
|
10107
10626
|
buildingLevel(id: String!): BuildingLevel
|
|
10108
10627
|
|
|
10628
|
+
"""List chat messages of a session, oldest first."""
|
|
10629
|
+
chatMessages(limit: Int = 100, offset: Int = 0, sessionId: String!): [ChatMessage!]!
|
|
10630
|
+
|
|
10631
|
+
"""List patch entries of a session, newest first."""
|
|
10632
|
+
chatPatches(limit: Int = 100, sessionId: String!): [PatchEntry!]!
|
|
10633
|
+
|
|
10634
|
+
"""Get AI chat session by id."""
|
|
10635
|
+
chatSession(id: String!): ChatSession
|
|
10636
|
+
|
|
10637
|
+
"""
|
|
10638
|
+
Get AI chat session by board id (returns first match — backward compat single-session lookup).
|
|
10639
|
+
"""
|
|
10640
|
+
chatSessionByBoard(boardId: String!): ChatSession
|
|
10641
|
+
|
|
10642
|
+
"""List participants of a ChatSession (members / owner)."""
|
|
10643
|
+
chatSessionParticipants(sessionId: String!): [ChatSessionParticipant!]!
|
|
10644
|
+
|
|
10645
|
+
"""
|
|
10646
|
+
List all AI chat sessions for a board (oldest first). Multi-session support — UI 탭으로 표시.
|
|
10647
|
+
"""
|
|
10648
|
+
chatSessionsByBoard(boardId: String!): [ChatSession!]!
|
|
10649
|
+
|
|
10109
10650
|
"""
|
|
10110
10651
|
Checks if the system is configured to provide a default password for new users.
|
|
10111
10652
|
"""
|
|
@@ -10801,11 +11342,24 @@ type Query {
|
|
|
10801
11342
|
sortings: [Sorting!]
|
|
10802
11343
|
): DomainLinkList!
|
|
10803
11344
|
|
|
11345
|
+
"""List owners of the current domain."""
|
|
11346
|
+
domainOwners: [DomainOwner!]!
|
|
11347
|
+
|
|
10804
11348
|
"""
|
|
10805
11349
|
Fetches the list of available domain types from configuration. Only superusers are granted this privilege.
|
|
10806
11350
|
"""
|
|
10807
11351
|
domainTypes: [String!]!
|
|
10808
11352
|
|
|
11353
|
+
"""
|
|
11354
|
+
List users in the current domain for `@` mention popup. board-ai 권한이면 누구나 멘션용 검색 가능 (관리자 전용 users() 와 별도).
|
|
11355
|
+
"""
|
|
11356
|
+
domainUsersForMention(
|
|
11357
|
+
limit: Int = 50
|
|
11358
|
+
|
|
11359
|
+
"""Substring to match against name/email (case-insensitive). Empty → all."""
|
|
11360
|
+
query: String
|
|
11361
|
+
): [User!]!
|
|
11362
|
+
|
|
10809
11363
|
"""
|
|
10810
11364
|
Fetches all domain entities with pagination and filtering options. Only superusers are granted this privilege.
|
|
10811
11365
|
"""
|
|
@@ -11026,6 +11580,12 @@ type Query {
|
|
|
11026
11580
|
"""To query whether I have the given permission"""
|
|
11027
11581
|
hasPrivilege(category: String!, privilege: String!): Boolean!
|
|
11028
11582
|
|
|
11583
|
+
"""Get import session progress."""
|
|
11584
|
+
importSession(id: String!): ImportSession
|
|
11585
|
+
|
|
11586
|
+
"""List recent import sessions for a chat session."""
|
|
11587
|
+
importSessionsByChatSession(chatSessionId: String!): [ImportSession!]!
|
|
11588
|
+
|
|
11029
11589
|
"""BuildingInspection By ChecklistItemId"""
|
|
11030
11590
|
inspectionByChecklistItemId: BuildingInspection!
|
|
11031
11591
|
|
|
@@ -11088,6 +11648,9 @@ type Query {
|
|
|
11088
11648
|
invitation(email: EmailAddress!, reference: String!, type: String!): Invitation!
|
|
11089
11649
|
invitations(reference: String!, type: String!): InvitationList!
|
|
11090
11650
|
|
|
11651
|
+
"""Check if a user is an owner of the current domain."""
|
|
11652
|
+
isDomainOwner(username: String!): Boolean!
|
|
11653
|
+
|
|
11091
11654
|
"""To fetch a Issue"""
|
|
11092
11655
|
issue(id: String!): Issue
|
|
11093
11656
|
|
|
@@ -11948,6 +12511,14 @@ type Query {
|
|
|
11948
12511
|
sortings: [Sorting!]
|
|
11949
12512
|
): StepList!
|
|
11950
12513
|
|
|
12514
|
+
"""
|
|
12515
|
+
도메인 안에서 충돌하지 않는 Board name + 상세 description 제안. name 은 짧고 심플 (30자 이내, 충돌 회피 (n) suffix), description 은 자세히 (사용자 prompt + AI importStrategy + 카테고리 분포 통계 합성).
|
|
12516
|
+
"""
|
|
12517
|
+
suggestBoardMeta(input: SuggestBoardNameInput!): BoardMetaSuggestion!
|
|
12518
|
+
|
|
12519
|
+
"""@deprecated suggestBoardMeta 사용 권장. 단순 string name 만 반환하는 구버전 query."""
|
|
12520
|
+
suggestBoardName(input: SuggestBoardNameInput!): String!
|
|
12521
|
+
|
|
11951
12522
|
"""To fetch the list of activities that I can report on"""
|
|
11952
12523
|
supervisableActivities(
|
|
11953
12524
|
"""An array of filter conditions to apply to the list query."""
|
|
@@ -12888,6 +13459,16 @@ type Subscription {
|
|
|
12888
13459
|
scenarioQueueState: ScenarioQueueState!
|
|
12889
13460
|
}
|
|
12890
13461
|
|
|
13462
|
+
input SuggestBoardNameInput {
|
|
13463
|
+
"""명시 hint. session 정보보다 우선. 사용자가 직접 적은 메모를 기반으로 추천받고 싶을 때."""
|
|
13464
|
+
hint: String
|
|
13465
|
+
|
|
13466
|
+
"""
|
|
13467
|
+
ImportSession id — 있으면 거기서 userPrompt / VLM reasoning / attachment.name 추출.
|
|
13468
|
+
"""
|
|
13469
|
+
sessionId: ID
|
|
13470
|
+
}
|
|
13471
|
+
|
|
12891
13472
|
"""Entity for Supervisor"""
|
|
12892
13473
|
type Supervisor {
|
|
12893
13474
|
active: Boolean
|
|
@@ -13189,6 +13770,21 @@ input ThemePatch {
|
|
|
13189
13770
|
value: Object
|
|
13190
13771
|
}
|
|
13191
13772
|
|
|
13773
|
+
"""썸네일 백필 결과"""
|
|
13774
|
+
type ThumbnailBackfillResult {
|
|
13775
|
+
"""이번 호출에서 처리 시도한 첨부 개수"""
|
|
13776
|
+
attempted: Int!
|
|
13777
|
+
|
|
13778
|
+
"""실패(생성 실패/콘텐츠 없음 등) 개수"""
|
|
13779
|
+
failed: Int!
|
|
13780
|
+
|
|
13781
|
+
"""이번 처리 후에도 남아있는 썸네일 미생성 후보 개수 (대략치). 0 이면 완료"""
|
|
13782
|
+
remaining: Int!
|
|
13783
|
+
|
|
13784
|
+
"""썸네일 생성·저장 성공 개수"""
|
|
13785
|
+
succeeded: Int!
|
|
13786
|
+
}
|
|
13787
|
+
|
|
13192
13788
|
input UpdateBuildingInspection {
|
|
13193
13789
|
drawingMarker: String
|
|
13194
13790
|
id: String!
|