@dssp/supervision 1.0.0-alpha.76 → 1.0.0-alpha.78

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 (62) hide show
  1. package/dist-client/pages/building-inspection/building-inspection-list.js +2 -2
  2. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  3. package/dist-client/pages/building-inspection/building-inspection-management.d.ts +9 -0
  4. package/dist-client/pages/building-inspection/building-inspection-management.js +303 -47
  5. package/dist-client/pages/building-inspection/building-inspection-management.js.map +1 -1
  6. package/dist-client/pages/building-inspection/component/field-document/field-document-constants.d.ts +18 -0
  7. package/dist-client/pages/building-inspection/component/field-document/field-document-constants.js +630 -0
  8. package/dist-client/pages/building-inspection/component/field-document/field-document-constants.js.map +1 -0
  9. package/dist-client/pages/building-inspection/component/field-document/field-document-detail-popup.d.ts +10 -0
  10. package/dist-client/pages/building-inspection/component/field-document/field-document-detail-popup.js +219 -0
  11. package/dist-client/pages/building-inspection/component/field-document/field-document-detail-popup.js.map +1 -0
  12. package/dist-client/pages/building-inspection/component/field-document/field-document-list-panel.d.ts +25 -0
  13. package/dist-client/pages/building-inspection/component/field-document/field-document-list-panel.js +545 -0
  14. package/dist-client/pages/building-inspection/component/field-document/field-document-list-panel.js.map +1 -0
  15. package/dist-client/pages/building-inspection/component/field-document/field-document-popup.d.ts +39 -0
  16. package/dist-client/pages/building-inspection/component/field-document/field-document-popup.js +675 -0
  17. package/dist-client/pages/building-inspection/component/field-document/field-document-popup.js.map +1 -0
  18. package/dist-client/pages/building-inspection/component/inspection-event-provider.d.ts +3 -2
  19. package/dist-client/pages/building-inspection/component/inspection-event-provider.js +129 -34
  20. package/dist-client/pages/building-inspection/component/inspection-event-provider.js.map +1 -1
  21. package/dist-client/pages/checklist-template/construction-checklist-template-list.js +9 -14
  22. package/dist-client/pages/checklist-template/construction-checklist-template-list.js.map +1 -1
  23. package/dist-client/pages/project-checklist/project-checklist-management.d.ts +2 -0
  24. package/dist-client/pages/project-checklist/project-checklist-management.js +24 -2
  25. package/dist-client/pages/project-checklist/project-checklist-management.js.map +1 -1
  26. package/dist-client/tsconfig.tsbuildinfo +1 -1
  27. package/dist-server/service/building-inspection/building-inspection-mutation.js +30 -0
  28. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  29. package/dist-server/service/building-inspection/building-inspection-query.d.ts +5 -1
  30. package/dist-server/service/building-inspection/building-inspection-query.js +114 -0
  31. package/dist-server/service/building-inspection/building-inspection-query.js.map +1 -1
  32. package/dist-server/service/building-inspection/building-inspection-type.d.ts +4 -0
  33. package/dist-server/service/building-inspection/building-inspection-type.js +15 -1
  34. package/dist-server/service/building-inspection/building-inspection-type.js.map +1 -1
  35. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js +10 -0
  36. package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js.map +1 -1
  37. package/dist-server/service/field-document/field-document-auto-file.d.ts +21 -0
  38. package/dist-server/service/field-document/field-document-auto-file.js +47 -0
  39. package/dist-server/service/field-document/field-document-auto-file.js.map +1 -0
  40. package/dist-server/service/field-document/field-document-mutation.d.ts +9 -0
  41. package/dist-server/service/field-document/field-document-mutation.js +136 -0
  42. package/dist-server/service/field-document/field-document-mutation.js.map +1 -0
  43. package/dist-server/service/field-document/field-document-query.d.ts +14 -0
  44. package/dist-server/service/field-document/field-document-query.js +120 -0
  45. package/dist-server/service/field-document/field-document-query.js.map +1 -0
  46. package/dist-server/service/field-document/field-document-summary-service.d.ts +2 -0
  47. package/dist-server/service/field-document/field-document-summary-service.js +55 -0
  48. package/dist-server/service/field-document/field-document-summary-service.js.map +1 -0
  49. package/dist-server/service/field-document/field-document-type.d.ts +23 -0
  50. package/dist-server/service/field-document/field-document-type.js +84 -0
  51. package/dist-server/service/field-document/field-document-type.js.map +1 -0
  52. package/dist-server/service/field-document/field-document.d.ts +29 -0
  53. package/dist-server/service/field-document/field-document.js +127 -0
  54. package/dist-server/service/field-document/field-document.js.map +1 -0
  55. package/dist-server/service/field-document/index.d.ts +5 -0
  56. package/dist-server/service/field-document/index.js +9 -0
  57. package/dist-server/service/field-document/index.js.map +1 -0
  58. package/dist-server/service/index.d.ts +2 -1
  59. package/dist-server/service/index.js +4 -0
  60. package/dist-server/service/index.js.map +1 -1
  61. package/dist-server/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +2 -2
@@ -14,6 +14,7 @@ import './component/inspection-document/photo-album-popup';
14
14
  import './component/inspection-document/inspection-request-document';
15
15
  import './component/inspection-document/inspection-result-notification';
16
16
  import './component/image-preview-popup';
17
+ import './component/field-document/field-document-popup';
17
18
  import { CommonGristStyles, ScrollbarStyles } from '@operato/styles';
18
19
  import { PageView, navigate } from '@operato/shell';
19
20
  import { css, html } from 'lit';
@@ -44,7 +45,7 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
44
45
  this.project = Object.assign({}, this.defaultProject);
45
46
  this.selectedBuilding = {};
46
47
  this.building = {};
47
- this.currentFloor = -1;
48
+ this.currentFloor = 1;
48
49
  this.buildingLevelId = '';
49
50
  this.buildingInspectionSummary = {};
50
51
  this.selectedYearMonth = moment().tz('Asia/Seoul').format('YYYY-MM');
@@ -53,10 +54,33 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
53
54
  this.viewMode = 'calendar';
54
55
  }
55
56
  get context() {
57
+ var _a;
56
58
  return {
57
- title: '업무 대시보드'
59
+ title: ((_a = this.project) === null || _a === void 0 ? void 0 : _a.name) ? `업무 대시보드 - ${this.project.name}` : '업무 대시보드'
58
60
  };
59
61
  }
62
+ // 동 미선택 시 프로젝트 전체 데이터 모드
63
+ get _isProjectMode() {
64
+ var _a;
65
+ return !((_a = this.selectedBuilding) === null || _a === void 0 ? void 0 : _a.id);
66
+ }
67
+ // 동 선택 + 층 미선택 시 동 전체 데이터 모드
68
+ get _isBuildingMode() {
69
+ var _a;
70
+ return !!((_a = this.selectedBuilding) === null || _a === void 0 ? void 0 : _a.id) && !this.buildingLevelId;
71
+ }
72
+ // 현재 데이터 스코프 표시 라벨
73
+ get _scopeLabel() {
74
+ var _a, _b, _c, _d;
75
+ if (this.buildingLevelId) {
76
+ const level = (_b = (_a = this.building) === null || _a === void 0 ? void 0 : _a.buildingLevels) === null || _b === void 0 ? void 0 : _b.find(l => l.id === this.buildingLevelId);
77
+ return `${((_c = this.selectedBuilding) === null || _c === void 0 ? void 0 : _c.name) || ''} ${(level === null || level === void 0 ? void 0 : level.floorDisplayName) || ''}층`;
78
+ }
79
+ if ((_d = this.selectedBuilding) === null || _d === void 0 ? void 0 : _d.id) {
80
+ return `${this.selectedBuilding.name} 전체`;
81
+ }
82
+ return '프로젝트 전체';
83
+ }
60
84
  render() {
61
85
  var _a, _b, _c, _d, _e, _f;
62
86
  const cards = ((_b = (_a = this.building) === null || _a === void 0 ? void 0 : _a.buildingLevels) === null || _b === void 0 ? void 0 : _b.map(({ mainDrawingImage, floor }) => {
@@ -117,9 +141,13 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
117
141
  </div>
118
142
 
119
143
  <div right-panel>
120
- ${this.buildingLevelId
144
+ ${this.buildingLevelId || this._isBuildingMode || this._isProjectMode
121
145
  ? html `
122
146
  <div inspection-container>
147
+ <div scope-header>
148
+ <h3>검측 현황</h3>
149
+ <span scope-label>${this._scopeLabel}</span>
150
+ </div>
123
151
  <div inspection>
124
152
  <div name bold>
125
153
  <md-icon slot="icon">fact_check</md-icon>
@@ -169,6 +197,9 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
169
197
  const month = (_c = (_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.month) === null || _b === void 0 ? void 0 : _b.toString()) === null || _c === void 0 ? void 0 : _c.padStart(2, '0');
170
198
  this.selectedYearMonth = `${year}-${month}`;
171
199
  this._refreshListGrists();
200
+ }}
201
+ @open-worklog=${(e) => {
202
+ this._openWorklogForDate(e.detail.date);
172
203
  }}
173
204
  ></ox-event-view>
174
205
  </div>
@@ -238,6 +269,19 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
238
269
  </div>
239
270
  `;
240
271
  }
272
+ updated(changedProperties) {
273
+ var _a;
274
+ super.updated(changedProperties);
275
+ // ox-grist shadow DOM 내부 #wrap의 overflow를 제어
276
+ (_a = this.renderRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('ox-grist').forEach(grist => {
277
+ var _a, _b;
278
+ const oxGrid = (_a = grist.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('ox-grid');
279
+ const gridBody = (_b = oxGrid === null || oxGrid === void 0 ? void 0 : oxGrid.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('ox-grid-body');
280
+ if (gridBody) {
281
+ gridBody.style.maxHeight = '150px';
282
+ }
283
+ });
284
+ }
241
285
  async pageUpdated(changes, lifecycle) {
242
286
  if (this.active) {
243
287
  this.projectId = lifecycle.resourceId || '';
@@ -294,6 +338,12 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
294
338
  },
295
339
  width: 200
296
340
  },
341
+ {
342
+ type: 'string',
343
+ name: 'createdDate',
344
+ header: '검측 등록일시',
345
+ width: 110
346
+ },
297
347
  {
298
348
  type: 'string',
299
349
  name: 'requestDate',
@@ -371,7 +421,7 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
371
421
  };
372
422
  }
373
423
  async _initProject(projectId = '') {
374
- var _a, _b, _c;
424
+ var _a;
375
425
  const response = await client.query({
376
426
  query: gql `
377
427
  query Project($id: String!) {
@@ -409,11 +459,12 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
409
459
  if (response.errors)
410
460
  return;
411
461
  this.project = (_a = response.data) === null || _a === void 0 ? void 0 : _a.project;
412
- // 첫번째 빌딩 선택
413
- this.selectedBuilding = (_c = (_b = this.project) === null || _b === void 0 ? void 0 : _b.buildingComplex) === null || _c === void 0 ? void 0 : _c.buildings[0];
414
- if (this.selectedBuilding) {
415
- await this._getBuilding(this.selectedBuilding.id);
416
- }
462
+ this.updateContext();
463
+ // 미선택 상태 프로젝트 전체 데이터 로드
464
+ this.selectedBuilding = {};
465
+ this.building = {};
466
+ this.buildingLevelId = '';
467
+ await this._initProjectLevel();
417
468
  }
418
469
  async _getBuilding(buildingId = '') {
419
470
  var _a;
@@ -456,15 +507,86 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
456
507
  }
457
508
  }
458
509
  async _onClickBuilding(building) {
510
+ var _a;
511
+ if (((_a = this.selectedBuilding) === null || _a === void 0 ? void 0 : _a.id) === building.id) {
512
+ // 토글: 이미 선택된 동 클릭 시 해제 → 프로젝트 전체 데이터
513
+ this.selectedBuilding = {};
514
+ this.building = {};
515
+ this.buildingLevelId = '';
516
+ this.currentFloor = 0;
517
+ await this._initProjectLevel();
518
+ return;
519
+ }
459
520
  this.selectedBuilding = Object.assign({}, building);
460
521
  this.buildingLevelId = '';
461
522
  this.buildingInspectionSummary = {};
462
523
  await this._getBuilding(this.selectedBuilding.id);
524
+ await this._initBuildingData(this.selectedBuilding.id);
463
525
  }
464
526
  async _onSelectFloor(levelId) {
465
527
  this.buildingLevelId = levelId;
466
528
  await this._initBuildingLevel(levelId);
467
529
  }
530
+ async _initProjectLevel() {
531
+ var _a;
532
+ if (!this.projectId)
533
+ return;
534
+ // 프로젝트 전체 검측 현황 조회
535
+ const response = await client.query({
536
+ query: gql `
537
+ query BuildingInspectionSummaryOfProject($projectId: String!) {
538
+ buildingInspectionSummaryOfProject(projectId: $projectId) {
539
+ wait
540
+ request
541
+ pass
542
+ fail
543
+ reWait
544
+ }
545
+ }
546
+ `,
547
+ variables: { projectId: this.projectId }
548
+ });
549
+ if (response.errors)
550
+ return;
551
+ this.buildingInspectionSummary = (_a = response.data) === null || _a === void 0 ? void 0 : _a.buildingInspectionSummaryOfProject;
552
+ // 달력 데이터 생성 (프로젝트 레벨 - buildingLevelId 없이)
553
+ this.calendarData = new InspectionEventProvider('', this.projectId);
554
+ await this.updateComplete;
555
+ // 일일 업무일지 조회
556
+ await this._fetchDailyWorklog(this.selectedDate);
557
+ // 목록 모드일 경우 그리스트 갱신
558
+ this._refreshListGrists();
559
+ }
560
+ async _initBuildingData(buildingId) {
561
+ var _a;
562
+ if (!buildingId)
563
+ return;
564
+ // 동 전체 검측 현황 조회
565
+ const response = await client.query({
566
+ query: gql `
567
+ query BuildingInspectionSummaryOfBuilding($buildingId: String!) {
568
+ buildingInspectionSummaryOfBuilding(buildingId: $buildingId) {
569
+ wait
570
+ request
571
+ pass
572
+ fail
573
+ reWait
574
+ }
575
+ }
576
+ `,
577
+ variables: { buildingId }
578
+ });
579
+ if (response.errors)
580
+ return;
581
+ this.buildingInspectionSummary = (_a = response.data) === null || _a === void 0 ? void 0 : _a.buildingInspectionSummaryOfBuilding;
582
+ // 달력 데이터 생성 (동 레벨)
583
+ this.calendarData = new InspectionEventProvider('', this.projectId, buildingId);
584
+ await this.updateComplete;
585
+ // 일일 업무일지 조회
586
+ await this._fetchDailyWorklog(this.selectedDate);
587
+ // 목록 모드일 경우 그리스트 갱신
588
+ this._refreshListGrists();
589
+ }
468
590
  async _initBuildingLevel(buildingLevelId) {
469
591
  var _a;
470
592
  const response = await client.query({
@@ -496,54 +618,147 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
496
618
  this._refreshListGrists();
497
619
  }
498
620
  async _fetchInspectionsByStatus(statuses, { page = 1, limit = 100 }, extraFilter) {
499
- var _a, _b;
500
- if (!this.buildingLevelId)
621
+ var _a, _b, _c, _d, _e, _f;
622
+ if (!this.buildingLevelId && !this._isBuildingMode && !this._isProjectMode)
501
623
  return { total: 0, records: [] };
502
- const response = await client.query({
503
- query: gql `
504
- query BuildingInspectionsOfBuildingLevel($params: BuildingInspectionsOfBuildingLevel!) {
505
- buildingInspectionsOfBuildingLevel(params: $params) {
506
- items {
507
- id
508
- status
509
- failCount
510
- requestDate
624
+ if ((this._isProjectMode || this._isBuildingMode) && !this.projectId)
625
+ return { total: 0, records: [] };
626
+ let items;
627
+ if (this.buildingLevelId) {
628
+ // 층 레벨 조회
629
+ const response = await client.query({
630
+ query: gql `
631
+ query BuildingInspectionsOfBuildingLevel($params: BuildingInspectionsOfBuildingLevel!) {
632
+ buildingInspectionsOfBuildingLevel(params: $params) {
633
+ items {
634
+ id
635
+ status
636
+ failCount
637
+ requestDate
638
+ createdAt
511
639
 
512
- checklist {
513
- checklistId: id
514
- name
515
- constructionType
516
- constructionDetailType
517
- location
518
- inspectionParts
519
- inspectionDrawingType
640
+ checklist {
641
+ checklistId: id
642
+ name
643
+ constructionType
644
+ constructionDetailType
645
+ location
646
+ inspectionParts
647
+ inspectionDrawingType
648
+
649
+ nameListAttachment {
650
+ id
651
+ name
652
+ fullpath
653
+ }
654
+ }
655
+ drawingMarker
656
+ }
657
+ total
658
+ }
659
+ }
660
+ `,
661
+ variables: {
662
+ params: {
663
+ buildingLevelId: this.buildingLevelId,
664
+ limit: 0
665
+ }
666
+ }
667
+ });
668
+ items = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.buildingInspectionsOfBuildingLevel) === null || _b === void 0 ? void 0 : _b.items) || [];
669
+ }
670
+ else if (this._isBuildingMode) {
671
+ // 동 레벨 조회
672
+ const response = await client.query({
673
+ query: gql `
674
+ query BuildingInspectionsOfBuilding($params: BuildingInspectionsOfBuilding!) {
675
+ buildingInspectionsOfBuilding(params: $params) {
676
+ items {
677
+ id
678
+ status
679
+ failCount
680
+ requestDate
681
+ createdAt
520
682
 
521
- nameListAttachment {
522
- id
683
+ checklist {
684
+ checklistId: id
523
685
  name
524
- fullpath
686
+ constructionType
687
+ constructionDetailType
688
+ location
689
+ inspectionParts
690
+ inspectionDrawingType
691
+
692
+ nameListAttachment {
693
+ id
694
+ name
695
+ fullpath
696
+ }
525
697
  }
698
+ drawingMarker
526
699
  }
527
- drawingMarker
700
+ total
528
701
  }
529
- total
530
702
  }
703
+ `,
704
+ variables: {
705
+ params: {
706
+ buildingId: this.selectedBuilding.id,
707
+ limit: 0
708
+ }
709
+ }
710
+ });
711
+ items = ((_d = (_c = response.data) === null || _c === void 0 ? void 0 : _c.buildingInspectionsOfBuilding) === null || _d === void 0 ? void 0 : _d.items) || [];
531
712
  }
532
- `,
533
- variables: {
534
- params: {
535
- buildingLevelId: this.buildingLevelId,
536
- limit: 0
713
+ else {
714
+ // 프로젝트 레벨 조회 (동 미선택 시)
715
+ const response = await client.query({
716
+ query: gql `
717
+ query BuildingInspectionsOfProject($params: BuildingInspectionsOfProject!) {
718
+ buildingInspectionsOfProject(params: $params) {
719
+ items {
720
+ id
721
+ status
722
+ failCount
723
+ requestDate
724
+ createdAt
725
+
726
+ checklist {
727
+ checklistId: id
728
+ name
729
+ constructionType
730
+ constructionDetailType
731
+ location
732
+ inspectionParts
733
+ inspectionDrawingType
734
+
735
+ nameListAttachment {
736
+ id
737
+ name
738
+ fullpath
739
+ }
537
740
  }
741
+ drawingMarker
742
+ }
743
+ total
538
744
  }
539
- });
540
- let items = ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.buildingInspectionsOfBuildingLevel) === null || _b === void 0 ? void 0 : _b.items) || [];
745
+ }
746
+ `,
747
+ variables: {
748
+ params: {
749
+ projectId: this.projectId,
750
+ limit: 0
751
+ }
752
+ }
753
+ });
754
+ items = ((_f = (_e = response.data) === null || _e === void 0 ? void 0 : _e.buildingInspectionsOfProject) === null || _f === void 0 ? void 0 : _f.items) || [];
755
+ }
541
756
  // 상태별 필터링
542
757
  items = items.filter(item => statuses.includes(item.status));
543
758
  if (extraFilter) {
544
759
  items = items.filter(extraFilter);
545
760
  }
546
- items = items.map(item => (Object.assign(Object.assign(Object.assign({}, item), item.checklist), { statusDisplay: (item.failCount > 0 ? BUILDING_INSPECTION_RE_STATUS_DISPLAY : BUILDING_INSPECTION_STATUS_DISPLAY)[item.status], requestDate: this._formatDateTime(item.requestDate) })));
761
+ items = items.map(item => (Object.assign(Object.assign(Object.assign({}, item), item.checklist), { statusDisplay: (item.failCount > 0 ? BUILDING_INSPECTION_RE_STATUS_DISPLAY : BUILDING_INSPECTION_STATUS_DISPLAY)[item.status], createdDate: this._formatDate(item.createdAt), requestDate: this._formatDateTime(item.requestDate) })));
547
762
  return {
548
763
  total: items.length,
549
764
  records: items
@@ -606,6 +821,27 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
606
821
  return '';
607
822
  }
608
823
  }
824
+ _formatDate(date) {
825
+ if (!date)
826
+ return '';
827
+ try {
828
+ const parsed = typeof date === 'string' && /^\d+$/.test(date) ? new Date(Number(date)) : new Date(date);
829
+ return new Intl.DateTimeFormat('ko-KR', {
830
+ timeZone: 'Asia/Seoul',
831
+ year: 'numeric',
832
+ month: '2-digit',
833
+ day: '2-digit'
834
+ }).format(parsed);
835
+ }
836
+ catch (_a) {
837
+ return '';
838
+ }
839
+ }
840
+ async _openWorklogForDate(date) {
841
+ this.selectedDate = date;
842
+ await this._fetchDailyWorklog(date);
843
+ this._openDailyWorklogPopup();
844
+ }
609
845
  _openDailyWorklogPopup() {
610
846
  const date = this.selectedDate;
611
847
  openPopup(html `<daily-worklog-popup
@@ -662,9 +898,12 @@ let BuildingInspectionManagement = class BuildingInspectionManagement extends Sc
662
898
  ></inspection-with-checklist-create-popup>
663
899
  `, { backdrop: true, size: 'large', title: '검측 등록' });
664
900
  }
665
- // TODO: 현장 문서 확인 기능 구현
666
901
  _openFieldDocuments() {
667
- notify({ message: '현장 문서 확인 기능은 준비 중입니다.', level: 'info' });
902
+ openPopup(html `<field-document-popup .projectId=${this.projectId}></field-document-popup>`, {
903
+ backdrop: true,
904
+ size: 'full',
905
+ title: '현장 문서 확인'
906
+ });
668
907
  }
669
908
  async _openDrawingPopup(buildingInspection) {
670
909
  const drawingImageProvider = new DrawingImageProvider();
@@ -1005,6 +1244,25 @@ BuildingInspectionManagement.styles = [
1005
1244
  overflow: hidden;
1006
1245
  }
1007
1246
 
1247
+ div[scope-header] {
1248
+ display: flex;
1249
+ align-items: center;
1250
+ gap: var(--spacing-medium, 8px);
1251
+ margin-bottom: var(--spacing-small, 4px);
1252
+
1253
+ h3 {
1254
+ margin: 0;
1255
+ }
1256
+
1257
+ span[scope-label] {
1258
+ font-size: 12px;
1259
+ color: #888;
1260
+ background: #f0f0f0;
1261
+ padding: 2px 8px;
1262
+ border-radius: 4px;
1263
+ }
1264
+ }
1265
+
1008
1266
  div[inspection-container] {
1009
1267
  gap: var(--spacing-medium, 8px);
1010
1268
  display: flex;
@@ -1124,7 +1382,7 @@ BuildingInspectionManagement.styles = [
1124
1382
  div[list-section] {
1125
1383
  display: flex;
1126
1384
  flex-direction: column;
1127
- gap: var(--spacing-small, 4px);
1385
+ gap: 6px;
1128
1386
 
1129
1387
  h3[section-title] {
1130
1388
  color: #e15757;
@@ -1142,9 +1400,7 @@ BuildingInspectionManagement.styles = [
1142
1400
  }
1143
1401
 
1144
1402
  ox-grist {
1145
- overflow-y: auto;
1146
- flex: 1;
1147
- min-height: 150px;
1403
+ padding: 0px 16px 10px;
1148
1404
  }
1149
1405
 
1150
1406
  div[action-buttons] {