@dssp/dkpi 1.0.0-alpha.65 → 1.0.0-alpha.67

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 (82) hide show
  1. package/_index.html +0 -5
  2. package/dist-client/components/kpi-2d-lookup-chart.d.ts +63 -0
  3. package/dist-client/components/kpi-2d-lookup-chart.js +470 -0
  4. package/dist-client/components/kpi-2d-lookup-chart.js.map +1 -0
  5. package/dist-client/google-map/common-google-map.js +10 -8
  6. package/dist-client/google-map/common-google-map.js.map +1 -1
  7. package/dist-client/pages/kpi-admin/dssp-kpi-list-page.d.ts +22 -0
  8. package/dist-client/pages/kpi-admin/dssp-kpi-list-page.js +57 -0
  9. package/dist-client/pages/kpi-admin/dssp-kpi-list-page.js.map +1 -0
  10. package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.d.ts +20 -0
  11. package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.js +445 -0
  12. package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.js.map +1 -0
  13. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.d.ts +6 -5
  14. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js +47 -68
  15. package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js.map +1 -1
  16. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.d.ts +3 -2
  17. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js +79 -122
  18. package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js.map +1 -1
  19. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.d.ts +3 -2
  20. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js +71 -107
  21. package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js.map +1 -1
  22. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.d.ts +4 -0
  23. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js +246 -28
  24. package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js.map +1 -1
  25. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.d.ts +4 -0
  26. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js +22 -207
  27. package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js.map +1 -1
  28. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.d.ts +2 -0
  29. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js +84 -25
  30. package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js.map +1 -1
  31. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.d.ts +16 -0
  32. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js +261 -31
  33. package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js.map +1 -1
  34. package/dist-client/pages/kpi-dashboard/kpi-dashboard.d.ts +4 -0
  35. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +66 -4
  36. package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -1
  37. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +1 -2
  38. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +1 -2
  39. package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +1 -1
  40. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +1 -2
  41. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +1 -2
  42. package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +1 -1
  43. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.d.ts +1 -2
  44. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js +1 -2
  45. package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js.map +1 -1
  46. package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +1 -2
  47. package/dist-client/pages/kpi-value/kpi-value-list-page.js +1 -2
  48. package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -1
  49. package/dist-client/pages/sv-project-detail.d.ts +1 -0
  50. package/dist-client/pages/sv-project-detail.js +26 -13
  51. package/dist-client/pages/sv-project-detail.js.map +1 -1
  52. package/dist-client/pages/sv-project-list.js +6 -6
  53. package/dist-client/pages/sv-project-list.js.map +1 -1
  54. package/dist-client/route.d.ts +1 -1
  55. package/dist-client/route.js +4 -0
  56. package/dist-client/route.js.map +1 -1
  57. package/dist-client/tsconfig.tsbuildinfo +1 -1
  58. package/dist-client/viewparts/menu-tools.d.ts +1 -2
  59. package/dist-client/viewparts/menu-tools.js +1 -2
  60. package/dist-client/viewparts/menu-tools.js.map +1 -1
  61. package/dist-server/scripts/calculate-kpi-scores.js +65 -3
  62. package/dist-server/scripts/calculate-kpi-scores.js.map +1 -1
  63. package/dist-server/scripts/load-grade-data-migration.d.ts +4 -0
  64. package/dist-server/scripts/load-grade-data-migration.js +95 -10
  65. package/dist-server/scripts/load-grade-data-migration.js.map +1 -1
  66. package/dist-server/scripts/propagate-parent-kpi-values.js +58 -4
  67. package/dist-server/scripts/propagate-parent-kpi-values.js.map +1 -1
  68. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +6 -0
  69. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +57 -7
  70. package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +1 -1
  71. package/dist-server/service/kpi-stat/kpi-stat-query.d.ts +8 -5
  72. package/dist-server/service/kpi-stat/kpi-stat-query.js +228 -11
  73. package/dist-server/service/kpi-stat/kpi-stat-query.js.map +1 -1
  74. package/dist-server/service/kpi-stat/kpi-stat-types.d.ts +13 -0
  75. package/dist-server/service/kpi-stat/kpi-stat-types.js +51 -1
  76. package/dist-server/service/kpi-stat/kpi-stat-types.js.map +1 -1
  77. package/dist-server/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +54 -54
  79. package/schema.graphql +95 -58
  80. package/things-factory.config.js +3 -1
  81. package/views/auth-page.html +0 -1
  82. package/views/public/home.html +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dssp/dkpi",
3
- "version": "1.0.0-alpha.65",
3
+ "version": "1.0.0-alpha.67",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "scripts": {
19
19
  "serve": "things-factory dkpi",
20
- "serve:dev": "npm run build:server && concurrently -k -r \"npm run build:client:watch\" \"things-factory-dev dkpi\"",
20
+ "serve:dev": "npm run build:server && concurrently -k -r \"npm run build:client:watch\" \"things-factory-dev dkpi --webpack ../../webpack.config.dev.js\"",
21
21
  "copy:files": "copyfiles -e \"./client/**/*.{ts,js,json}\" -u 1 \"./client/**/*\" dist-client",
22
22
  "build": "npm run build:server && npm run build:client",
23
23
  "build:client": "npm run clean:client && npm run copy:files && tsc --p ./client/tsconfig.json",
@@ -48,60 +48,60 @@
48
48
  "docker:push": "docker image push hatiolab/dkpi:latest && docker image push hatiolab/dkpi:$npm_package_version"
49
49
  },
50
50
  "dependencies": {
51
- "@dssp/project": "^1.0.0-alpha.64",
52
- "@material/web": "^2.1.0",
53
- "@operato/chart": "^9.0.0",
54
- "@operato/gantt": "^9.0.0",
55
- "@operato/scene-auth": "^9.0.0",
56
- "@operato/scene-chartjs": "^9.0.0",
57
- "@operato/scene-clock": "^9.0.0",
58
- "@operato/scene-data-transform": "^9.0.0",
59
- "@operato/scene-form": "^9.0.0",
60
- "@operato/scene-gauge": "^9.0.0",
61
- "@operato/scene-grist": "^9.0.0",
62
- "@operato/scene-half-roundrect": "^9.0.0",
63
- "@operato/scene-image-slider": "^9.0.0",
64
- "@operato/scene-integration": "^9.0.0",
65
- "@operato/scene-legend": "^9.0.0",
66
- "@operato/scene-news-ticker": "^9.0.0",
67
- "@operato/scene-progressbar": "^9.0.0",
68
- "@operato/scene-random": "^9.0.0",
69
- "@operato/scene-switch": "^9.0.0",
70
- "@operato/scene-tab": "^9.0.0",
71
- "@operato/scene-table": "^9.0.0",
72
- "@operato/scene-timer": "^9.0.0",
73
- "@things-factory/api": "^9.0.0",
74
- "@things-factory/apptool-base": "^9.0.0",
75
- "@things-factory/apptool-ui": "^9.0.0",
76
- "@things-factory/auth-base": "^9.0.0",
77
- "@things-factory/auth-ui": "^9.0.0",
78
- "@things-factory/board-service": "^9.0.0",
79
- "@things-factory/board-ui": "^9.0.0",
80
- "@things-factory/code-ui": "^9.0.0",
81
- "@things-factory/context-ui": "^9.0.0",
82
- "@things-factory/dashboard": "^9.0.0",
83
- "@things-factory/dataset": "^9.0.0",
84
- "@things-factory/evaluation": "^9.0.0",
85
- "@things-factory/export-ui": "^9.0.0",
86
- "@things-factory/help": "^9.0.0",
87
- "@things-factory/i18n-base": "^9.0.0",
88
- "@things-factory/integration-base": "^9.0.0",
89
- "@things-factory/integration-ui": "^9.0.0",
90
- "@things-factory/kpi": "^9.0.0",
91
- "@things-factory/lite-menu": "^9.0.0",
92
- "@things-factory/more-base": "^9.0.0",
93
- "@things-factory/more-ui": "^9.0.0",
94
- "@things-factory/notification": "^9.0.0",
95
- "@things-factory/resource-ui": "^9.0.0",
96
- "@things-factory/setting-base": "^9.0.0",
97
- "@things-factory/setting-ui": "^9.0.0",
98
- "@things-factory/shell": "^9.0.0",
99
- "@things-factory/system": "^9.0.0",
51
+ "@dssp/project": "^1.0.0-alpha.66",
52
+ "@material/web": "^2.4.0",
53
+ "@operato/chart": "^10.0.0-beta",
54
+ "@operato/gantt": "^10.0.0-beta",
55
+ "@operato/scene-auth": "^10.0.0-beta",
56
+ "@operato/scene-chartjs": "^10.0.0-beta",
57
+ "@operato/scene-clock": "^10.0.0-beta",
58
+ "@operato/scene-data-transform": "^10.0.0-beta",
59
+ "@operato/scene-form": "^10.0.0-beta",
60
+ "@operato/scene-gauge": "^10.0.0-beta",
61
+ "@operato/scene-grist": "^10.0.0-beta",
62
+ "@operato/scene-half-roundrect": "^10.0.0-beta",
63
+ "@operato/scene-image-slider": "^10.0.0-beta",
64
+ "@operato/scene-integration": "^10.0.0-beta",
65
+ "@operato/scene-legend": "^10.0.0-beta",
66
+ "@operato/scene-news-ticker": "^10.0.0-beta",
67
+ "@operato/scene-progressbar": "^10.0.0-beta",
68
+ "@operato/scene-random": "^10.0.0-beta",
69
+ "@operato/scene-switch": "^10.0.0-beta",
70
+ "@operato/scene-tab": "^10.0.0-beta",
71
+ "@operato/scene-table": "^10.0.0-beta",
72
+ "@operato/scene-timer": "^10.0.0-beta",
73
+ "@things-factory/api": "^10.0.0-beta",
74
+ "@things-factory/apptool-base": "^10.0.0-beta",
75
+ "@things-factory/apptool-ui": "^10.0.0-beta",
76
+ "@things-factory/auth-base": "^10.0.0-beta",
77
+ "@things-factory/auth-ui": "^10.0.0-beta",
78
+ "@things-factory/board-service": "^10.0.0-beta",
79
+ "@things-factory/board-ui": "^10.0.0-beta",
80
+ "@things-factory/code-ui": "^10.0.0-beta",
81
+ "@things-factory/context-ui": "^10.0.0-beta",
82
+ "@things-factory/dashboard": "^10.0.0-beta",
83
+ "@things-factory/dataset": "^10.0.0-beta",
84
+ "@things-factory/evaluation": "^10.0.0-beta",
85
+ "@things-factory/export-ui": "^10.0.0-beta",
86
+ "@things-factory/help": "^10.0.0-beta",
87
+ "@things-factory/i18n-base": "^10.0.0-beta",
88
+ "@things-factory/integration-base": "^10.0.0-beta",
89
+ "@things-factory/integration-ui": "^10.0.0-beta",
90
+ "@things-factory/kpi": "^10.0.0-beta",
91
+ "@things-factory/lite-menu": "^10.0.0-beta",
92
+ "@things-factory/more-base": "^10.0.0-beta",
93
+ "@things-factory/more-ui": "^10.0.0-beta",
94
+ "@things-factory/notification": "^10.0.0-beta",
95
+ "@things-factory/resource-ui": "^10.0.0-beta",
96
+ "@things-factory/setting-base": "^10.0.0-beta",
97
+ "@things-factory/setting-ui": "^10.0.0-beta",
98
+ "@things-factory/shell": "^10.0.0-beta",
99
+ "@things-factory/system": "^10.0.0-beta",
100
100
  "moment": "2.30.1",
101
- "puppeteer": "^24.5.0"
101
+ "puppeteer": "^24.39.0"
102
102
  },
103
103
  "devDependencies": {
104
- "@things-factory/builder": "^9.0.0"
104
+ "@things-factory/builder": "^10.0.0-beta"
105
105
  },
106
- "gitHead": "e7630c25b9b7e1386342d864bc295e07db47afb6"
106
+ "gitHead": "e7e5fcce7dfa2c1f128b0ae878403b2b025608fa"
107
107
  }
package/schema.graphql CHANGED
@@ -3,15 +3,6 @@
3
3
  # !!! DO NOT MODIFY THIS FILE BY YOURSELF !!!
4
4
  # -----------------------------------------------
5
5
 
6
- input APIDocCompletionInput {
7
- code: String!
8
- language: String
9
- }
10
-
11
- type APIDocCompletionOutput {
12
- message: String
13
- }
14
-
15
6
  """Represents a pair of access and refresh tokens."""
16
7
  type AccessToken {
17
8
  """The access token for API authentication."""
@@ -1155,6 +1146,11 @@ type Board {
1155
1146
  """A list of play groups that this board is a part of."""
1156
1147
  playGroups: [PlayGroup!]
1157
1148
 
1149
+ """
1150
+ Sort order for display. Lower values appear first. Supports fractional values for insertion.
1151
+ """
1152
+ sortOrder: Float
1153
+
1158
1154
  """The state of the board, can be 'draft' or 'released'."""
1159
1155
  state: String
1160
1156
 
@@ -1209,6 +1205,11 @@ type BoardFavorite {
1209
1205
  """A list of play groups that this board is a part of."""
1210
1206
  playGroups: [PlayGroup!]
1211
1207
 
1208
+ """
1209
+ Sort order for display. Lower values appear first. Supports fractional values for insertion.
1210
+ """
1211
+ sortOrder: Float
1212
+
1212
1213
  """The state of the board, can be 'draft' or 'released'."""
1213
1214
  state: String
1214
1215
 
@@ -1514,6 +1515,7 @@ type BuildingInspection {
1514
1515
  creator: User
1515
1516
  deletedAt: DateTimeISO
1516
1517
  drawingMarker: String
1518
+ failCount: Float
1517
1519
  id: ID!
1518
1520
  manager: ProjectManagerOutput
1519
1521
  memo: String
@@ -1582,6 +1584,7 @@ type BuildingInspectionHistory {
1582
1584
  createdAt: DateTimeISO
1583
1585
  creator: User
1584
1586
  drawingMarker: String
1587
+ failCount: Float
1585
1588
  id: ID!
1586
1589
  loggedAt: DateTimeISO
1587
1590
  manager: ProjectManagerOutput
@@ -1611,6 +1614,9 @@ type BuildingInspectionSummary {
1611
1614
  """검측 통과 수"""
1612
1615
  pass: Int!
1613
1616
 
1617
+ """재검측 대기 수 (failCount > 0 인 WAIT/OVERALL_WAIT)"""
1618
+ reWait: Int
1619
+
1614
1620
  """검측 요청 수"""
1615
1621
  request: Int!
1616
1622
 
@@ -1645,6 +1651,9 @@ input BuildingInspectionsOfBuildingLevel {
1645
1651
  input BuildingInspectionsOfProject {
1646
1652
  limit: Float
1647
1653
  projectId: String!
1654
+
1655
+ """상태 필터 (WAIT, REQUEST, FAIL, RE_WAIT, PASS)"""
1656
+ statusFilter: String
1648
1657
  }
1649
1658
 
1650
1659
  """층 정보"""
@@ -1692,14 +1701,6 @@ input BuildingPatch {
1692
1701
  name: String
1693
1702
  }
1694
1703
 
1695
- input ChatCompletionInput {
1696
- content: String!
1697
- }
1698
-
1699
- type ChatCompletionOutput {
1700
- message: String
1701
- }
1702
-
1703
1704
  type Checklist {
1704
1705
  buildingInspection: BuildingInspection!
1705
1706
  checklistAttachments(description: String): [Attachment!]!
@@ -1989,16 +1990,6 @@ input ChecklistTypePatch {
1989
1990
  mainType: String
1990
1991
  }
1991
1992
 
1992
- input CodeDecipherInput {
1993
- code: String!
1994
- language: String
1995
- system: String
1996
- }
1997
-
1998
- type CodeDecipherOutput {
1999
- message: String
2000
- }
2001
-
2002
1993
  """Entity for CommonCode"""
2003
1994
  type CommonCode {
2004
1995
  createdAt: DateTimeISO
@@ -2502,15 +2493,18 @@ input DataItemPatch {
2502
2493
 
2503
2494
  """type enumeration of a data-item"""
2504
2495
  enum DataItemType {
2496
+ audio
2505
2497
  boolean
2506
2498
  date
2507
2499
  datetime
2508
2500
  file
2501
+ image
2509
2502
  number
2510
2503
  radio
2511
2504
  select
2512
2505
  signature
2513
2506
  text
2507
+ video
2514
2508
  }
2515
2509
 
2516
2510
  """
@@ -4100,16 +4094,6 @@ input GroupPatch {
4100
4094
  name: String
4101
4095
  }
4102
4096
 
4103
- input ImageCompletionInput {
4104
- count: Float!
4105
- description: String!
4106
- size: String!
4107
- }
4108
-
4109
- type ImageCompletionOutput {
4110
- images: String
4111
- }
4112
-
4113
4097
  """
4114
4098
  Enumeration for inherited value types: None, Only, or Include. Used to specify how values are inherited in queries or filters.
4115
4099
  """
@@ -4363,6 +4347,11 @@ type Kpi {
4363
4347
  """
4364
4348
  scoreFormula: String
4365
4349
 
4350
+ """
4351
+ Score calculation method type. NONE: parent KPI (aggregated from children), FORMULA: uses scoreFormula, LOOKUP: uses grades 1D table, CUSTOM: application-defined (e.g. 2D lookup, statistical distribution).
4352
+ """
4353
+ scoreType: KpiScoreType
4354
+
4366
4355
  """Current state of the KPI (DRAFT, RELEASED, ARCHIVED)."""
4367
4356
  state: String
4368
4357
  targetValue: Float
@@ -4434,6 +4423,7 @@ type KpiComprehensiveStats {
4434
4423
  }
4435
4424
 
4436
4425
  type KpiComprehensiveStatsByGeoGroup {
4426
+ address: String
4437
4427
  avgVal: Float!
4438
4428
  geoGroup: String
4439
4429
  kpiName: String
@@ -4829,6 +4819,9 @@ input KpiPatch {
4829
4819
  """
4830
4820
  scoreFormula: String
4831
4821
 
4822
+ """Score calculation method type for this KPI."""
4823
+ scoreType: KpiScoreType
4824
+
4832
4825
  """Current state of the KPI (DRAFT, RELEASED, ARCHIVED)."""
4833
4826
  state: KpiStatus
4834
4827
 
@@ -4865,6 +4858,19 @@ enum KpiPeriodType {
4865
4858
  YEAR
4866
4859
  }
4867
4860
 
4861
+ type KpiProjectStat {
4862
+ avgVal: Float!
4863
+ categoryName: String
4864
+ kpiName: String!
4865
+ maxVal: Float!
4866
+ medVal: Float!
4867
+ minVal: Float!
4868
+ projectCount: Int!
4869
+ q1Val: Float!
4870
+ q3Val: Float!
4871
+ stddevVal: Float!
4872
+ }
4873
+
4868
4874
  """
4869
4875
  Defines the meaning and metadata for each scope level (scope01~05) in KpiOrgScope
4870
4876
  """
@@ -4961,6 +4967,16 @@ input KpiScopePatch {
4961
4967
  validationPattern: String
4962
4968
  }
4963
4969
 
4970
+ """
4971
+ Score calculation method for KPI. NONE: parent KPI aggregated from children, FORMULA: uses scoreFormula, LOOKUP: uses grades 1D table, CUSTOM: application-defined.
4972
+ """
4973
+ enum KpiScoreType {
4974
+ CUSTOM
4975
+ FORMULA
4976
+ LOOKUP
4977
+ NONE
4978
+ }
4979
+
4964
4980
  """
4965
4981
  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.
4966
4982
  """
@@ -6875,6 +6891,9 @@ type Mutation {
6875
6891
  releaseKpi(id: String!): Kpi!
6876
6892
  renewApplicationAccessToken(id: String!, scope: String!): AccessToken!
6877
6893
 
6894
+ """Updates the sortOrder of a single board."""
6895
+ reorderBoard(id: String!, sortOrder: Float!): Boolean!
6896
+
6878
6897
  """Sets the custom playback order for boards in a play group."""
6879
6898
  reorderPlayGroup(boardIds: [String!]!, id: String!): PlayGroup!
6880
6899
 
@@ -8084,6 +8103,9 @@ input NewKpi {
8084
8103
  """
8085
8104
  scoreFormula: String
8086
8105
 
8106
+ """Score calculation method type for this KPI."""
8107
+ scoreType: KpiScoreType
8108
+
8087
8109
  """Current state of the KPI (DRAFT, RELEASED, ARCHIVED)."""
8088
8110
  state: KpiStatus
8089
8111
 
@@ -9531,6 +9553,7 @@ input ProfileInput {
9531
9553
  """프로젝트"""
9532
9554
  type Project {
9533
9555
  buildingComplex: BuildingComplex
9556
+ buildingUsage: String
9534
9557
  completeReport: Attachment
9535
9558
  createdAt: DateTimeISO
9536
9559
  creator: User
@@ -9552,6 +9575,7 @@ type Project {
9552
9575
  robotProgressRate: Float
9553
9576
  rootTasks: [Task!]
9554
9577
  scheduleTable: Attachment
9578
+ sectorType: String
9555
9579
  startDate: String
9556
9580
  state: String!
9557
9581
  structuralSafetyRate: Float
@@ -9583,6 +9607,9 @@ input ProjectPatch {
9583
9607
  """연관된 건물 복합체 정보 (선택 사항)"""
9584
9608
  buildingComplex: BuildingComplexPatch
9585
9609
 
9610
+ """건물 용도 (RESIDENTIAL: 주거, NON_RESIDENTIAL: 비주거)"""
9611
+ buildingUsage: String
9612
+
9586
9613
  """프로젝트 문서 네이밍"""
9587
9614
  documentNaming: String
9588
9615
 
@@ -9610,6 +9637,9 @@ input ProjectPatch {
9610
9637
  """로봇 작업 진행율 (%)"""
9611
9638
  robotProgressRate: Float
9612
9639
 
9640
+ """발주 유형 (PUBLIC: 공공, PRIVATE: 민간)"""
9641
+ sectorType: String
9642
+
9613
9643
  """프로젝트 착공일정"""
9614
9644
  startDate: String
9615
9645
 
@@ -9697,8 +9727,6 @@ type PropertySpec {
9697
9727
  }
9698
9728
 
9699
9729
  type Query {
9700
- APIDocCompletion(input: APIDocCompletionInput!): APIDocCompletionOutput!
9701
-
9702
9730
  """To fetch a ActionPlan"""
9703
9731
  actionPlan(id: String!): ActionPlan
9704
9732
 
@@ -10047,8 +10075,14 @@ type Query {
10047
10075
  sortings: [Sorting!]
10048
10076
  ): AuthProviderList!
10049
10077
 
10050
- """Finds a single board by its ID."""
10051
- board(id: String!): Board!
10078
+ """
10079
+ Finds a single board by its ID. If cachedUpdatedAt matches, model is omitted.
10080
+ """
10081
+ board(
10082
+ """Client cache timestamp — if matches, model field is omitted"""
10083
+ cachedUpdatedAt: String
10084
+ id: String!
10085
+ ): Board!
10052
10086
 
10053
10087
  """Finds a single board by its name."""
10054
10088
  boardByName(name: String!): Board
@@ -10125,6 +10159,11 @@ type Query {
10125
10159
  sortings: [Sorting!]
10126
10160
  ): BoardList!
10127
10161
 
10162
+ """
10163
+ Retrieves boards that have been updated or soft-deleted since the given timestamp.
10164
+ """
10165
+ boardsUpdatedSince(since: DateTimeISO!): [Board!]!
10166
+
10128
10167
  """To fetch a building"""
10129
10168
  building(id: String!): Building
10130
10169
 
@@ -10185,7 +10224,6 @@ type Query {
10185
10224
 
10186
10225
  """To fetch a building level"""
10187
10226
  buildingLevel(id: String!): BuildingLevel
10188
- chatCompletion(input: ChatCompletionInput!): ChatCompletionOutput!
10189
10227
 
10190
10228
  """
10191
10229
  Checks if the system is configured to provide a default password for new users.
@@ -10825,8 +10863,6 @@ type Query {
10825
10863
  """Sorting options for the list query."""
10826
10864
  sortings: [Sorting!]
10827
10865
  ): [DynamicDataSummary!]!
10828
- decipherCode(input: CodeDecipherInput!): CodeDecipherOutput!
10829
- decipherErrorCode(input: CodeDecipherInput!): CodeDecipherOutput!
10830
10866
 
10831
10867
  """To fetch a Department"""
10832
10868
  department(id: String!): Department
@@ -11108,8 +11144,6 @@ type Query {
11108
11144
 
11109
11145
  """To query whether I have the given permission"""
11110
11146
  hasPrivilege(category: String!, privilege: String!): Boolean!
11111
- i18nCompletion(input: i18nCompletionInput!): i18nCompletionOutput!
11112
- imageCompletion(input: ImageCompletionInput!): ImageCompletionOutput!
11113
11147
 
11114
11148
  """BuildingInspection By ChecklistItemId"""
11115
11149
  inspectionByChecklistItemId: BuildingInspection!
@@ -11290,6 +11324,11 @@ type Query {
11290
11324
  searchTerm: String
11291
11325
  ): [String!]!
11292
11326
 
11327
+ """
11328
+ Get KPI stats aggregated from project data with optional sectorType/buildingUsage filters
11329
+ """
11330
+ kpiProjectStats(buildingUsage: String, endYearMonth: String, kpiNamePattern: String, sectorType: String, startYearMonth: String): [KpiProjectStat!]!
11331
+
11293
11332
  """Fetch a scope dimension definition by ID"""
11294
11333
  kpiScope(id: String!): KpiScope
11295
11334
 
@@ -11353,14 +11392,20 @@ type Query {
11353
11392
  """Get KPI box plot statistics for Y-category KPIs by geo group"""
11354
11393
  kpiYValueComprehensiveStatsByGeoGroup(geoGroup: String): [KpiComprehensiveStatsByGeoGroup!]!
11355
11394
 
11395
+ """Get Y-level KPI statistics by geo_group code (sigungu)"""
11396
+ kpiYValueStatsByGeoGroup(endYearMonth: String, geoGroup: String!, startYearMonth: String): [KpiComprehensiveStats!]!
11397
+
11356
11398
  """Get KPI statistics for Y-category KPIs by specific metro area"""
11357
11399
  kpiYValueStatsByMetroArea(endYearMonth: String, metroArea: String!, startYearMonth: String): [KpiComprehensiveStats!]!
11358
11400
 
11359
11401
  """Get KPI box plot statistics for Z-category KPIs by metro area"""
11360
- kpiZValueComprehensiveStatsByGeoGroup(endYearMonth: String, geoGroup: String, kpiName: String, startYearMonth: String): [KpiComprehensiveStatsByGeoGroup!]!
11402
+ kpiZValueComprehensiveStatsByGeoGroup(buildingUsage: String, endYearMonth: String, geoGroup: String, kpiName: String, sectorType: String, startYearMonth: String): [KpiComprehensiveStatsByGeoGroup!]!
11361
11403
 
11362
11404
  """Get monthly KPI trend for Z-category KPIs by metro area"""
11363
- kpiZValueMonthlyTrendByGeoGroup(endYearMonth: String, kpiName: String, startYearMonth: String): [KpiMonthlyTrend!]!
11405
+ kpiZValueMonthlyTrendByGeoGroup(buildingUsage: String, endYearMonth: String, kpiName: String, sectorType: String, startYearMonth: String): [KpiMonthlyTrend!]!
11406
+
11407
+ """Get KPI statistics by sigungu (geo_group code) level"""
11408
+ kpiZValueStatsBySigungu(buildingUsage: String, endYearMonth: String, kpiName: String, sectorType: String, startYearMonth: String): [KpiComprehensiveStatsByGeoGroup!]!
11364
11409
 
11365
11410
  """To fetch multiple Kpis"""
11366
11411
  kpis(
@@ -12183,10 +12228,10 @@ type Query {
12183
12228
  ): ActivityThreadList!
12184
12229
 
12185
12230
  """Get KPI box plot statistics for Y-category KPIs for all projects"""
12186
- totalKpiYValueComprehensiveStats(endYearMonth: String, startYearMonth: String): [KpiComprehensiveStats!]!
12231
+ totalKpiYValueComprehensiveStats(buildingUsage: String, endYearMonth: String, sectorType: String, startYearMonth: String): [KpiComprehensiveStats!]!
12187
12232
 
12188
12233
  """Get KPI box plot statistics for Z-category KPIs for all projects"""
12189
- totalKpiZValueComprehensiveStats(endYearMonth: String, startYearMonth: String): [KpiComprehensiveStats!]!
12234
+ totalKpiZValueComprehensiveStats(buildingUsage: String, endYearMonth: String, sectorType: String, startYearMonth: String): [KpiComprehensiveStats!]!
12190
12235
 
12191
12236
  """Fetches a user by their email address within the current domain."""
12192
12237
  user(
@@ -13562,12 +13607,4 @@ input WorkerTypePatch {
13562
13607
  description: String
13563
13608
  id: ID
13564
13609
  name: String
13565
- }
13566
-
13567
- input i18nCompletionInput {
13568
- json: String!
13569
- }
13570
-
13571
- type i18nCompletionOutput {
13572
- message: String
13573
13610
  }
@@ -8,7 +8,9 @@ export default {
8
8
  { tagname: 'sv-project-list', page: 'project-list' },
9
9
  { tagname: 'sv-project-completed-list', page: 'project-completed-list' },
10
10
  { tagname: 'sv-project-detail', page: 'project-detail' },
11
- { tagname: 'sv-project-complete', page: 'project-complete' }
11
+ { tagname: 'sv-project-complete', page: 'project-complete' },
12
+ { tagname: 'dssp-kpi-list-page', page: 'kpi-list' },
13
+ { tagname: 'dssp-kpi-list-page', page: 'kpi-admin' }
12
14
  ],
13
15
  bootstrap
14
16
  }
@@ -69,7 +69,6 @@
69
69
  </noscript>
70
70
  <!-- Load webcomponents-loader.js to check and load any polyfills your browser needs -->
71
71
  <script src="/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
72
- <script src="/node_modules/web-animations-js/web-animations-next.min.js"></script>
73
72
  <!-- Built with love using PWA Starter Kit -->
74
73
 
75
74
  <script src="<%- elementScript %>"></script>
@@ -63,7 +63,6 @@
63
63
  <noscript> Please enable JavaScript to view this website. </noscript>
64
64
  <!-- Load webcomponents-loader.js to check and load any polyfills your browser needs -->
65
65
  <script src="/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
66
- <script src="/node_modules/web-animations-js/web-animations-next.min.js"></script>
67
66
  <!-- Built with love using PWA Starter Kit -->
68
67
 
69
68
  <script src="/public/home.js"></script>