@dssp/supervision 1.0.0-alpha.1 → 1.0.0-alpha.16

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 (193) hide show
  1. package/dist-client/pages/action-plan/action-plan-importer.js.map +1 -1
  2. package/dist-client/pages/action-plan/action-plan-list-page.js.map +1 -1
  3. package/dist-client/pages/building-inspection/building-inspection-detail-camera.js.map +1 -1
  4. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js.map +1 -1
  5. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.d.ts +0 -1
  6. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js +16 -11
  7. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js.map +1 -1
  8. package/dist-client/pages/building-inspection/building-inspection-list.d.ts +2 -2
  9. package/dist-client/pages/building-inspection/building-inspection-list.js +2 -1
  10. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  11. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js.map +1 -1
  12. package/dist-client/pages/building-inspection/component/inspection-event-provider.js +3 -3
  13. package/dist-client/pages/building-inspection/component/inspection-event-provider.js.map +1 -1
  14. package/dist-client/pages/building-inspection/inspection-create-popup.js +8 -5
  15. package/dist-client/pages/building-inspection/inspection-create-popup.js.map +1 -1
  16. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.d.ts +46 -0
  17. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js +930 -0
  18. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js.map +1 -0
  19. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.d.ts +2 -0
  20. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js +736 -0
  21. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js.map +1 -0
  22. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.d.ts +1 -0
  23. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.js +304 -0
  24. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.js.map +1 -0
  25. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.d.ts +15 -0
  26. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.js +430 -0
  27. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.js.map +1 -0
  28. package/dist-client/pages/checklist/attachment-list-popup.js.map +1 -1
  29. package/dist-client/pages/checklist/checklist-view.d.ts +6 -0
  30. package/dist-client/pages/checklist/checklist-view.js +291 -185
  31. package/dist-client/pages/checklist/checklist-view.js.map +1 -1
  32. package/dist-client/pages/checklist/comment-list-popup.js.map +1 -1
  33. package/dist-client/pages/checklist/file-preview-popup.js.map +1 -1
  34. package/dist-client/pages/checklist-template/checklist-template-item.js +8 -3
  35. package/dist-client/pages/checklist-template/checklist-template-item.js.map +1 -1
  36. package/dist-client/pages/checklist-template/checklist-template-list.js +1 -1
  37. package/dist-client/pages/checklist-template/checklist-template-list.js.map +1 -1
  38. package/dist-client/pages/checklist-template/checklist-type-management.d.ts +2 -2
  39. package/dist-client/pages/checklist-template/checklist-type-management.js.map +1 -1
  40. package/dist-client/pages/issue/issue-importer.js.map +1 -1
  41. package/dist-client/pages/issue/issue-list-page.js.map +1 -1
  42. package/dist-client/pages/project-report/project-report-importer.js.map +1 -1
  43. package/dist-client/pages/project-report/project-report-list-page.js.map +1 -1
  44. package/dist-client/pages/supervisor/supervisor-importer.js.map +1 -1
  45. package/dist-client/pages/supervisor/supervisor-list-page.js.map +1 -1
  46. package/dist-client/route.d.ts +1 -1
  47. package/dist-client/route.js +3 -0
  48. package/dist-client/route.js.map +1 -1
  49. package/dist-client/stt/speech-to-text.d.ts +36 -0
  50. package/dist-client/stt/speech-to-text.js +89 -0
  51. package/dist-client/stt/speech-to-text.js.map +1 -0
  52. package/dist-client/stt/stt-utils.d.ts +28 -0
  53. package/dist-client/stt/stt-utils.js +146 -0
  54. package/dist-client/stt/stt-utils.js.map +1 -0
  55. package/dist-client/tsconfig.tsbuildinfo +1 -1
  56. package/dist-server/middlewares/index.js +1 -2
  57. package/dist-server/middlewares/index.js.map +1 -1
  58. package/dist-server/service/action-plan/action-plan-mutation.js +2 -2
  59. package/dist-server/service/action-plan/action-plan-mutation.js.map +1 -1
  60. package/dist-server/service/action-plan/action-plan-query.js +2 -2
  61. package/dist-server/service/action-plan/action-plan-query.js.map +1 -1
  62. package/dist-server/service/action-plan/action-plan-type.js +6 -6
  63. package/dist-server/service/action-plan/action-plan-type.js.map +1 -1
  64. package/dist-server/service/action-plan/action-plan.js +3 -3
  65. package/dist-server/service/action-plan/action-plan.js.map +1 -1
  66. package/dist-server/service/action-plan/index.d.ts +0 -1
  67. package/dist-server/service/action-plan/index.js +1 -2
  68. package/dist-server/service/action-plan/index.js.map +1 -1
  69. package/dist-server/service/building-inspection/building-inspection-history.js +2 -2
  70. package/dist-server/service/building-inspection/building-inspection-history.js.map +1 -1
  71. package/dist-server/service/building-inspection/building-inspection-mutation.d.ts +1 -0
  72. package/dist-server/service/building-inspection/building-inspection-mutation.js +91 -14
  73. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  74. package/dist-server/service/building-inspection/building-inspection-query.d.ts +2 -1
  75. package/dist-server/service/building-inspection/building-inspection-query.js +33 -4
  76. package/dist-server/service/building-inspection/building-inspection-query.js.map +1 -1
  77. package/dist-server/service/building-inspection/building-inspection-type.d.ts +10 -3
  78. package/dist-server/service/building-inspection/building-inspection-type.js +45 -20
  79. package/dist-server/service/building-inspection/building-inspection-type.js.map +1 -1
  80. package/dist-server/service/building-inspection/building-inspection.d.ts +9 -0
  81. package/dist-server/service/building-inspection/building-inspection.js +43 -5
  82. package/dist-server/service/building-inspection/building-inspection.js.map +1 -1
  83. package/dist-server/service/building-inspection/index.d.ts +2 -4
  84. package/dist-server/service/building-inspection/index.js +2 -4
  85. package/dist-server/service/building-inspection/index.js.map +1 -1
  86. package/dist-server/service/checklist/checklist-history.d.ts +8 -0
  87. package/dist-server/service/checklist/checklist-history.js +38 -2
  88. package/dist-server/service/checklist/checklist-history.js.map +1 -1
  89. package/dist-server/service/checklist/checklist-mutation.js +2 -2
  90. package/dist-server/service/checklist/checklist-mutation.js.map +1 -1
  91. package/dist-server/service/checklist/checklist-query.js +2 -2
  92. package/dist-server/service/checklist/checklist-query.js.map +1 -1
  93. package/dist-server/service/checklist/checklist-type.js +6 -6
  94. package/dist-server/service/checklist/checklist-type.js.map +1 -1
  95. package/dist-server/service/checklist/checklist.d.ts +19 -1
  96. package/dist-server/service/checklist/checklist.js +78 -7
  97. package/dist-server/service/checklist/checklist.js.map +1 -1
  98. package/dist-server/service/checklist/index.d.ts +0 -2
  99. package/dist-server/service/checklist/index.js +1 -3
  100. package/dist-server/service/checklist/index.js.map +1 -1
  101. package/dist-server/service/checklist-item/checklist-item-mutation.js +2 -2
  102. package/dist-server/service/checklist-item/checklist-item-mutation.js.map +1 -1
  103. package/dist-server/service/checklist-item/checklist-item-query.js +2 -2
  104. package/dist-server/service/checklist-item/checklist-item-query.js.map +1 -1
  105. package/dist-server/service/checklist-item/checklist-item-type.js +2 -2
  106. package/dist-server/service/checklist-item/checklist-item-type.js.map +1 -1
  107. package/dist-server/service/checklist-item/checklist-item.js +3 -3
  108. package/dist-server/service/checklist-item/checklist-item.js.map +1 -1
  109. package/dist-server/service/checklist-item-comment/checklist-item-comment-history.js +2 -2
  110. package/dist-server/service/checklist-item-comment/checklist-item-comment-history.js.map +1 -1
  111. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js +2 -2
  112. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js.map +1 -1
  113. package/dist-server/service/checklist-item-comment/checklist-item-comment-query.js +2 -2
  114. package/dist-server/service/checklist-item-comment/checklist-item-comment-query.js.map +1 -1
  115. package/dist-server/service/checklist-item-comment/checklist-item-comment-type.js +6 -6
  116. package/dist-server/service/checklist-item-comment/checklist-item-comment-type.js.map +1 -1
  117. package/dist-server/service/checklist-item-comment/checklist-item-comment.js +2 -2
  118. package/dist-server/service/checklist-item-comment/checklist-item-comment.js.map +1 -1
  119. package/dist-server/service/checklist-item-comment/index.d.ts +0 -2
  120. package/dist-server/service/checklist-item-comment/index.js +1 -3
  121. package/dist-server/service/checklist-item-comment/index.js.map +1 -1
  122. package/dist-server/service/checklist-template/checklist-template-mutation.js +2 -2
  123. package/dist-server/service/checklist-template/checklist-template-mutation.js.map +1 -1
  124. package/dist-server/service/checklist-template/checklist-template-query.js +2 -2
  125. package/dist-server/service/checklist-template/checklist-template-query.js.map +1 -1
  126. package/dist-server/service/checklist-template/checklist-template-type.js +4 -4
  127. package/dist-server/service/checklist-template/checklist-template-type.js.map +1 -1
  128. package/dist-server/service/checklist-template/checklist-template.js +2 -2
  129. package/dist-server/service/checklist-template/checklist-template.js.map +1 -1
  130. package/dist-server/service/checklist-template-item/checklist-template-item-mutation.js +2 -2
  131. package/dist-server/service/checklist-template-item/checklist-template-item-mutation.js.map +1 -1
  132. package/dist-server/service/checklist-template-item/checklist-template-item-query.js +2 -2
  133. package/dist-server/service/checklist-template-item/checklist-template-item-query.js.map +1 -1
  134. package/dist-server/service/checklist-template-item/checklist-template-item-type.js +4 -4
  135. package/dist-server/service/checklist-template-item/checklist-template-item-type.js.map +1 -1
  136. package/dist-server/service/checklist-template-item/checklist-template-item.js +4 -6
  137. package/dist-server/service/checklist-template-item/checklist-template-item.js.map +1 -1
  138. package/dist-server/service/checklist-type/checklist-type-mutation.js +2 -2
  139. package/dist-server/service/checklist-type/checklist-type-mutation.js.map +1 -1
  140. package/dist-server/service/checklist-type/checklist-type-query.js +2 -2
  141. package/dist-server/service/checklist-type/checklist-type-query.js.map +1 -1
  142. package/dist-server/service/checklist-type/checklist-type-type.js +4 -4
  143. package/dist-server/service/checklist-type/checklist-type-type.js.map +1 -1
  144. package/dist-server/service/checklist-type/checklist-type.js +3 -3
  145. package/dist-server/service/checklist-type/checklist-type.js.map +1 -1
  146. package/dist-server/service/index.d.ts +0 -1
  147. package/dist-server/service/index.js +1 -11
  148. package/dist-server/service/index.js.map +1 -1
  149. package/dist-server/service/issue/index.d.ts +0 -1
  150. package/dist-server/service/issue/index.js +1 -2
  151. package/dist-server/service/issue/index.js.map +1 -1
  152. package/dist-server/service/issue/issue-mutation.js +2 -2
  153. package/dist-server/service/issue/issue-mutation.js.map +1 -1
  154. package/dist-server/service/issue/issue-query.js +2 -2
  155. package/dist-server/service/issue/issue-query.js.map +1 -1
  156. package/dist-server/service/issue/issue-type.js +6 -6
  157. package/dist-server/service/issue/issue-type.js.map +1 -1
  158. package/dist-server/service/issue/issue.js +3 -3
  159. package/dist-server/service/issue/issue.js.map +1 -1
  160. package/dist-server/service/project-report/index.d.ts +0 -1
  161. package/dist-server/service/project-report/index.js +1 -2
  162. package/dist-server/service/project-report/index.js.map +1 -1
  163. package/dist-server/service/project-report/project-report-mutation.js +2 -2
  164. package/dist-server/service/project-report/project-report-mutation.js.map +1 -1
  165. package/dist-server/service/project-report/project-report-query.js +2 -2
  166. package/dist-server/service/project-report/project-report-query.js.map +1 -1
  167. package/dist-server/service/project-report/project-report-type.js +6 -6
  168. package/dist-server/service/project-report/project-report-type.js.map +1 -1
  169. package/dist-server/service/project-report/project-report.js +3 -3
  170. package/dist-server/service/project-report/project-report.js.map +1 -1
  171. package/dist-server/service/supervisor/index.d.ts +0 -1
  172. package/dist-server/service/supervisor/index.js +1 -2
  173. package/dist-server/service/supervisor/index.js.map +1 -1
  174. package/dist-server/service/supervisor/supervisor-mutation.js +2 -2
  175. package/dist-server/service/supervisor/supervisor-mutation.js.map +1 -1
  176. package/dist-server/service/supervisor/supervisor-query.js +2 -2
  177. package/dist-server/service/supervisor/supervisor-query.js.map +1 -1
  178. package/dist-server/service/supervisor/supervisor-type.js +6 -6
  179. package/dist-server/service/supervisor/supervisor-type.js.map +1 -1
  180. package/dist-server/service/supervisor/supervisor.js +3 -3
  181. package/dist-server/service/supervisor/supervisor.js.map +1 -1
  182. package/dist-server/tsconfig.tsbuildinfo +1 -1
  183. package/package.json +13 -13
  184. package/things-factory.config.js +3 -1
  185. package/dist-server/service/building-inspection/event-subscriber.d.ts +0 -7
  186. package/dist-server/service/building-inspection/event-subscriber.js +0 -21
  187. package/dist-server/service/building-inspection/event-subscriber.js.map +0 -1
  188. package/dist-server/service/checklist/event-subscriber.d.ts +0 -7
  189. package/dist-server/service/checklist/event-subscriber.js +0 -21
  190. package/dist-server/service/checklist/event-subscriber.js.map +0 -1
  191. package/dist-server/service/checklist-item-comment/event-subscriber.d.ts +0 -7
  192. package/dist-server/service/checklist-item-comment/event-subscriber.js +0 -21
  193. package/dist-server/service/checklist-item-comment/event-subscriber.js.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/fab/fab.js';
2
3
  import '@material/web/icon/icon.js';
3
4
  import gql from 'graphql-tag';
4
5
  import { client } from '@operato/graphql';
@@ -12,6 +13,13 @@ import { connect } from 'pwa-helpers/connect-mixin.js';
12
13
  import { openPopup } from '@operato/layout';
13
14
  import './comment-list-popup';
14
15
  import './attachment-list-popup';
16
+ import '../../stt/speech-to-text';
17
+ import { parseSpeechCommand } from '../../stt/stt-utils';
18
+ export var ChecklistReferenceType;
19
+ (function (ChecklistReferenceType) {
20
+ ChecklistReferenceType["INSPECTION"] = "INSPECTION";
21
+ ChecklistReferenceType["SCHEDULE"] = "SCHEDULE"; // 공정표
22
+ })(ChecklistReferenceType || (ChecklistReferenceType = {}));
15
23
  let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
16
24
  constructor() {
17
25
  super(...arguments);
@@ -25,9 +33,55 @@ let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
25
33
  overallSupervisoryEmails: []
26
34
  };
27
35
  this.status = BuildingInspectionStatus.WAIT;
36
+ this.isListening = false;
37
+ this._onToggleSTT = () => {
38
+ const stt = this.renderRoot.querySelector('#stt');
39
+ if (!this.isListening) {
40
+ stt === null || stt === void 0 ? void 0 : stt.startListening();
41
+ }
42
+ else {
43
+ stt === null || stt === void 0 ? void 0 : stt.stopListening();
44
+ }
45
+ // isListening은 stt-status 이벤트에서 갱신됨
46
+ };
47
+ }
48
+ firstUpdated() {
49
+ const stt = this.renderRoot.querySelector('#stt');
50
+ if (stt) {
51
+ stt.addEventListener('stt-result', (e) => {
52
+ var _a, _b;
53
+ const text = e.detail.finalTranscript;
54
+ const parsed = parseSpeechCommand(text, ((_b = (_a = this.checklist) === null || _a === void 0 ? void 0 : _a.checklistItems) === null || _b === void 0 ? void 0 : _b.length) || 20);
55
+ this._applySpeechCommand(parsed);
56
+ });
57
+ stt.addEventListener('stt-status', (e) => {
58
+ // 음성 인식 상태에 따라 버튼 상태 갱신
59
+ const status = e.detail.status;
60
+ if (status && status.includes('Listening'))
61
+ this.isListening = true;
62
+ if (status && (status.includes('종료') || status.includes('Stopped')))
63
+ this.isListening = false;
64
+ this.requestUpdate();
65
+ });
66
+ }
67
+ }
68
+ /**
69
+ * 음성 명령 해석 결과를 체크리스트에 반영
70
+ */
71
+ _applySpeechCommand(parsed) {
72
+ // 합격/불합격 처리 예시 (시공자 기준)
73
+ if (parsed.rowIds && parsed.isPass !== null) {
74
+ this.checklist.checklistItems = this.checklist.checklistItems.map((item, idx) => parsed.rowIds.includes(idx + 1) ? Object.assign(Object.assign({}, item), { constructionConfirmStatus: parsed.isPass ? 'T' : 'F' }) : item);
75
+ this.requestUpdate();
76
+ }
77
+ // 조치사항 처리 예시
78
+ if (parsed.rowIds && parsed.actionText) {
79
+ this.checklist.checklistItems = this.checklist.checklistItems.map((item, idx) => parsed.rowIds.includes(idx + 1) ? Object.assign(Object.assign({}, item), { action: parsed.actionText }) : item);
80
+ this.requestUpdate();
81
+ }
28
82
  }
29
83
  render() {
30
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
84
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
31
85
  const today = this._getDate(new Date());
32
86
  // 시공자 스탭 여부
33
87
  const isConstructorStep = this.status == BuildingInspectionStatus.WAIT ||
@@ -73,199 +127,205 @@ let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
73
127
  });
74
128
  const processedItems = this.drawChecklistItems(((_j = this.checklist) === null || _j === void 0 ? void 0 : _j.checklistItems) || []);
75
129
  return html `
76
- <div wrapper>
77
- <div name bold>${this.checklist.name}</div>
130
+ <speech-to-text id="stt"></speech-to-text>
131
+ <div title-row>
132
+ <div name>${this.checklist.name}</div>
133
+ <md-fab
134
+ class="stt-fab"
135
+ ?active=${this.isListening}
136
+ @click=${this._onToggleSTT}
137
+ ?disabled=${false}
138
+ style="position:absolute;top:0;right:0;z-index:10;"
139
+ .label=${this.isListening ? '음성 인식 중지' : '음성 인식 시작'}
140
+ >
141
+ <md-icon slot="icon">mic</md-icon>
142
+ </md-fab>
143
+ </div>
144
+ <table header>
145
+ <tr>
146
+ <th>공종</th>
147
+ <td>${this.checklist.constructionType}</td>
148
+ <th>문서 번호</th>
149
+ <td>${this.checklist.documentNo}</td>
150
+ </tr>
151
+ <tr>
152
+ <th>세부 공종</th>
153
+ <td>${this.checklist.constructionDetailType}</td>
154
+ <th>위치 및 부위</th>
155
+ <td>${this.checklist.location}</td>
156
+ </tr>
157
+ <tr>
158
+ <th>검측 부위</th>
159
+ <td>${((_l = (_k = this.checklist) === null || _k === void 0 ? void 0 : _k.inspectionParts) === null || _l === void 0 ? void 0 : _l.join(', ')) || ''}</td>
160
+ <th>검측 상태</th>
161
+ <td>${BUILDING_INSPECTION_STATUS_DISPLAY[this.status]}</td>
162
+ </tr>
163
+ </table>
78
164
 
79
- <table header>
165
+ <table body>
166
+ <thead>
80
167
  <tr>
81
- <th>공종</th>
82
- <td>${this.checklist.constructionType}</td>
83
- <th>문서 번호</th>
84
- <td>${this.checklist.documentNo}</td>
168
+ <th colspan="2" rowspan="3" type>구분</th>
169
+ <th rowspan="3" inspection-name>검사항목</th>
170
+ <th rowspan="3" criteria>검사기준</th>
171
+ <th colspan="4" result>검사결과</th>
172
+ <th rowspan="3" small>첨부자료</th>
173
+ <th rowspan="3" small>조치사항</th>
85
174
  </tr>
86
175
  <tr>
87
- <th>세부 공종</th>
88
- <td>${this.checklist.constructionDetailType}</td>
89
- <th>위치 및 부위</th>
90
- <td>${this.checklist.location}</td>
176
+ <th colspan="2">시공자</th>
177
+ <th colspan="2">감리자</th>
91
178
  </tr>
92
179
  <tr>
93
- <th>검측 부위</th>
94
- <td>${((_l = (_k = this.checklist) === null || _k === void 0 ? void 0 : _k.inspectionParts) === null || _l === void 0 ? void 0 : _l.join(', ')) || ''}</td>
95
- <th>검측 상태</th>
96
- <td>${BUILDING_INSPECTION_STATUS_DISPLAY[(_o = (_m = this.checklist) === null || _m === void 0 ? void 0 : _m.buildingInspection) === null || _o === void 0 ? void 0 : _o.status]}</td>
180
+ <th>적합</th>
181
+ <th>부적합</th>
182
+ <th>적합</th>
183
+ <th>부적합</th>
97
184
  </tr>
98
- </table>
99
-
100
- <table body>
101
- <thead>
102
- <tr>
103
- <th colspan="2" rowspan="3" type>구분</th>
104
- <th rowspan="3" inspection-name>검사항목</th>
105
- <th rowspan="3" criteria>검사기준</th>
106
- <th colspan="4" result>검사결과</th>
107
- <th rowspan="3" small>첨부자료</th>
108
- <th rowspan="3" small>조치사항</th>
109
- </tr>
110
- <tr>
111
- <th colspan="2">시공자</th>
112
- <th colspan="2">감리자</th>
113
- </tr>
114
- <tr>
115
- <th>적합</th>
116
- <th>부적합</th>
117
- <th>적합</th>
118
- <th>부적합</th>
119
- </tr>
120
- </thead>
121
- <tbody>
122
- ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {
185
+ </thead>
186
+ <tbody>
187
+ ${processedItems.map(({ item, showMainTypeCell, mainTypeRowspan, showDetailTypeCell, detailTypeRowspan }, idx) => {
123
188
  return html ` <tr>
124
- ${showMainTypeCell
189
+ ${showMainTypeCell
125
190
  ? html `<td main-type bold rowspan="${mainTypeRowspan}">${CHECKLIST_MAIN_TYPE_LIST[item.mainType]}</td>`
126
191
  : ''}
127
- ${showDetailTypeCell ? html ` <td bold rowspan="${detailTypeRowspan}">${item.detailType}</td> ` : ''}
128
-
129
- <td>${idx + 1}. ${item.name}</td>
130
- <td>${item.inspctionCriteria}</td>
131
- <td radio>
132
- <md-radio
133
- item-id=${item.id}
134
- item-name="constructionConfirmStatus"
135
- name=${'radio-construction-' + item.id}
136
- value="T"
137
- .checked=${item.constructionConfirmStatus === 'T'}
138
- ?disabled=${!isConstructorStep || !havePermissionByStatus}
139
- @change=${this._onChangeConfirmStatus}
140
- ></md-radio>
141
- </td>
142
- <td radio>
143
- <md-radio
144
- item-id=${item.id}
145
- item-name="constructionConfirmStatus"
146
- name=${'radio-construction-' + item.id}
147
- value="F"
148
- .checked=${item.constructionConfirmStatus === 'F'}
149
- ?disabled=${!isConstructorStep || !havePermissionByStatus}
150
- @change=${this._onChangeConfirmStatus}
151
- ></md-radio>
152
- </td>
153
- <td radio>
154
- <md-radio
155
- item-id=${item.id}
156
- item-name="supervisoryConfirmStatus"
157
- name=${'radio-supervisory-' + item.id}
158
- value="T"
159
- .checked=${item.supervisoryConfirmStatus === 'T'}
160
- ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
161
- @change=${this._onChangeConfirmStatus}
162
- ></md-radio>
163
- </td>
164
- <td radio>
165
- <md-radio
166
- item-id=${item.id}
167
- item-name="supervisoryConfirmStatus"
168
- name=${'radio-supervisory-' + item.id}
169
- value="F"
170
- .checked=${item.supervisoryConfirmStatus === 'F'}
171
- ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
172
- @change=${this._onChangeConfirmStatus}
173
- ></md-radio>
174
- </td>
175
- <td
176
- attachment
177
- ?disabled=${this.status == BuildingInspectionStatus.PASS}
178
- @click=${() => this._onClickAttachment(item.id)}
179
- >
180
- <md-icon slot="icon">attach_file</md-icon>
181
- <span>${(item === null || item === void 0 ? void 0 : item.checklistItemAttachmentCount) || ''}</span>
182
- </td>
183
- <td
184
- comment
185
- ?disabled=${this.status == BuildingInspectionStatus.PASS}
186
- @click=${() => this._onClickComment(item.id)}
187
- >
188
- <md-icon slot="icon">chat</md-icon>
189
- <span>${(item === null || item === void 0 ? void 0 : item.checklistItemCommentCount) || ''}</span>
190
- </td>
191
- </tr>`;
192
- })}
193
- </tbody>
194
- </table>
192
+ ${showDetailTypeCell ? html ` <td bold rowspan="${detailTypeRowspan}">${item.detailType}</td> ` : ''}
195
193
 
196
- <table tail>
197
- <tbody>
198
- <tr first>
199
- <th rowspan="2">시공자 점검일</th>
200
- <td rowspan="2">
201
- ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.constructionInspectionDate)}
194
+ <td>${idx + 1}. ${item.name}</td>
195
+ <td>${item.inspctionCriteria}</td>
196
+ <td radio>
197
+ <md-radio
198
+ item-id=${item.id}
199
+ item-name="constructionConfirmStatus"
200
+ name=${'radio-construction-' + item.id}
201
+ value="T"
202
+ .checked=${item.constructionConfirmStatus === 'T'}
203
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
204
+ @change=${this._onChangeConfirmStatus}
205
+ ></md-radio>
202
206
  </td>
203
- <th>공종별 시공 관리자</th>
204
- <td>
205
- <span sign-text>(인)</span>
206
- <ox-input-signature
207
- .value=${this.checklist.taskConstructorSignature}
208
- name="taskConstructorSignature"
209
- @change=${this._onChangeSignature}
210
- ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||
211
- !isTaskConstructor}
212
- >
213
- </ox-input-signature>
207
+ <td radio>
208
+ <md-radio
209
+ item-id=${item.id}
210
+ item-name="constructionConfirmStatus"
211
+ name=${'radio-construction-' + item.id}
212
+ value="F"
213
+ .checked=${item.constructionConfirmStatus === 'F'}
214
+ ?disabled=${!isConstructorStep || !havePermissionByStatus}
215
+ @change=${this._onChangeConfirmStatus}
216
+ ></md-radio>
214
217
  </td>
215
- </tr>
216
- <tr>
217
- <th>총괄 시공 책임자</th>
218
- <td>
219
- <span sign-text>(인)</span>
220
- <ox-input-signature
221
- .value=${this.checklist.overallConstructorSignature}
222
- name="overallConstructorSignature"
223
- @change=${this._onChangeSignature}
224
- ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}
225
- >
226
- </ox-input-signature>
218
+ <td radio>
219
+ <md-radio
220
+ item-id=${item.id}
221
+ item-name="supervisoryConfirmStatus"
222
+ name=${'radio-supervisory-' + item.id}
223
+ value="T"
224
+ .checked=${item.supervisoryConfirmStatus === 'T'}
225
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
226
+ @change=${this._onChangeConfirmStatus}
227
+ ></md-radio>
227
228
  </td>
228
- </tr>
229
- <tr>
230
- <th rowspan="2">감리자 점검일</th>
231
- <td rowspan="2">
232
- ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.supervisorInspectionDate)}
229
+ <td radio>
230
+ <md-radio
231
+ item-id=${item.id}
232
+ item-name="supervisoryConfirmStatus"
233
+ name=${'radio-supervisory-' + item.id}
234
+ value="F"
235
+ .checked=${item.supervisoryConfirmStatus === 'F'}
236
+ ?disabled=${!isSupervisoryStep || !havePermissionByStatus}
237
+ @change=${this._onChangeConfirmStatus}
238
+ ></md-radio>
233
239
  </td>
234
- <th>공종별 감리 책임자</th>
235
- <td>
236
- <span sign-text>(인)</span>
237
- <ox-input-signature
238
- .value=${this.checklist.taskSupervisorySignature}
239
- name="taskSupervisorySignature"
240
- @change=${this._onChangeSignature}
241
- ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}
242
- >
243
- </ox-input-signature>
240
+ <td
241
+ attachment
242
+ ?disabled=${this.status == BuildingInspectionStatus.PASS}
243
+ @click=${() => this._onClickAttachment(item.id)}
244
+ >
245
+ <md-icon slot="icon">attach_file</md-icon>
246
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemAttachmentCount) || ''}</span>
244
247
  </td>
245
- </tr>
246
- <tr>
247
- <th>총괄 감리 책임자</th>
248
- <td>
249
- <span sign-text>(인)</span>
250
- <ox-input-signature
251
- .value=${this.checklist.overallSupervisorySignature}
252
- name="overallSupervisorySignature"
253
- @change=${this._onChangeSignature}
254
- ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}
255
- >
256
- </ox-input-signature>
248
+ <td comment ?disabled=${this.status == BuildingInspectionStatus.PASS} @click=${() => this._onClickComment(item.id)}>
249
+ <md-icon slot="icon">chat</md-icon>
250
+ <span>${(item === null || item === void 0 ? void 0 : item.checklistItemCommentCount) || ''}</span>
257
251
  </td>
258
- </tr>
259
- </tbody>
260
- </table>
252
+ </tr>`;
253
+ })}
254
+ </tbody>
255
+ </table>
256
+
257
+ <table tail>
258
+ <tbody>
259
+ <tr first>
260
+ <th rowspan="2">시공자 점검일</th>
261
+ <td rowspan="2">
262
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.constructionInspectionDate)}
263
+ </td>
264
+ <th>공종별 시공 관리자</th>
265
+ <td>
266
+ <span sign-text>(인)</span>
267
+ <ox-input-signature
268
+ .value=${this.checklist.taskConstructorSignature}
269
+ name="taskConstructorSignature"
270
+ @change=${this._onChangeSignature}
271
+ ?disabled=${(this.status != BuildingInspectionStatus.WAIT && this.status != BuildingInspectionStatus.FAIL) ||
272
+ !isTaskConstructor}
273
+ >
274
+ </ox-input-signature>
275
+ </td>
276
+ </tr>
277
+ <tr>
278
+ <th>총괄 시공 책임자</th>
279
+ <td>
280
+ <span sign-text>(인)</span>
281
+ <ox-input-signature
282
+ .value=${this.checklist.overallConstructorSignature}
283
+ name="overallConstructorSignature"
284
+ @change=${this._onChangeSignature}
285
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_WAIT || !isOverallConstructor}
286
+ >
287
+ </ox-input-signature>
288
+ </td>
289
+ </tr>
290
+ <tr>
291
+ <th rowspan="2">감리자 점검일</th>
292
+ <td rowspan="2">
293
+ ${this.mode == "VIEWER" /* ChecklistMode.VIEWER */ ? today : this._getDate(this.checklist.supervisorInspectionDate)}
294
+ </td>
295
+ <th>공종별 감리 책임자</th>
296
+ <td>
297
+ <span sign-text>(인)</span>
298
+ <ox-input-signature
299
+ .value=${this.checklist.taskSupervisorySignature}
300
+ name="taskSupervisorySignature"
301
+ @change=${this._onChangeSignature}
302
+ ?disabled=${this.status != BuildingInspectionStatus.REQUEST || !isTaskSupervisory}
303
+ >
304
+ </ox-input-signature>
305
+ </td>
306
+ </tr>
307
+ <tr>
308
+ <th>총괄 감리 책임자</th>
309
+ <td>
310
+ <span sign-text>(인)</span>
311
+ <ox-input-signature
312
+ .value=${this.checklist.overallSupervisorySignature}
313
+ name="overallSupervisorySignature"
314
+ @change=${this._onChangeSignature}
315
+ ?disabled=${this.status != BuildingInspectionStatus.OVERALL_REQUEST || !isOverallSupervisory}
316
+ >
317
+ </ox-input-signature>
318
+ </td>
319
+ </tr>
320
+ </tbody>
321
+ </table>
261
322
 
262
- <div footer>
263
- <div>
264
- - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는
265
- 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함
266
- </div>
267
- <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>
323
+ <div footer>
324
+ <div>
325
+ - 검사결과는 1차, 2차로 구분 재검측시 2차에 기록하고 검사기준도 검사결과와 비교될 수 있도록 시방서 또는 도면 등에 있는
326
+ 수치를 작성하며, 수치가 없는 검사항목은 시방서 또는 설계도서에 있는 내용과 검사한 내용으로 작성함
268
327
  </div>
328
+ <div>- 검사항목 및 검사기준은 각 공종별로 감리원과 협의하여 작성할 것</div>
269
329
  </div>
270
330
  `;
271
331
  }
@@ -332,11 +392,7 @@ let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
332
392
  .status=${this.status}
333
393
  @change-comment=${this._refreshItem.bind(this)}
334
394
  ></comment-list-popup>
335
- `, {
336
- backdrop: true,
337
- size: 'medium',
338
- title: '조치 사항'
339
- });
395
+ `, { backdrop: true, size: 'medium', title: '조치 사항' });
340
396
  }
341
397
  _onClickAttachment(checklistItemId) {
342
398
  openPopup(html `
@@ -345,11 +401,7 @@ let ChecklistView = class ChecklistView extends connect(store)(LitElement) {
345
401
  .status=${this.status}
346
402
  @change-attachment=${this._refreshItem.bind(this)}
347
403
  ></attachment-list-popup>
348
- `, {
349
- backdrop: true,
350
- size: 'medium',
351
- title: '첨부 자료'
352
- });
404
+ `, { backdrop: true, size: 'medium', title: '첨부 자료' });
353
405
  }
354
406
  async _refreshItem(e) {
355
407
  var _a;
@@ -536,6 +588,60 @@ ChecklistView.styles = [
536
588
  text-indent: -9px;
537
589
  padding-left: var(--spacing-medium, 8px);
538
590
  }
591
+
592
+ .stt-float-btns {
593
+ position: absolute;
594
+ top: 0;
595
+ right: 0;
596
+ display: flex;
597
+ gap: 8px;
598
+ z-index: 10;
599
+ }
600
+ .stt-float-btns button {
601
+ background: #fff;
602
+ border: 1px solid #ccc;
603
+ border-radius: 50%;
604
+ width: 38px;
605
+ height: 38px;
606
+ font-size: 18px;
607
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
608
+ cursor: pointer;
609
+ transition: background 0.2s;
610
+ outline: none;
611
+ }
612
+ .stt-float-btns button:hover {
613
+ background: #f2f2f2;
614
+ }
615
+ div[title-row] {
616
+ position: relative;
617
+ display: flex;
618
+ align-items: center;
619
+ justify-content: center;
620
+ margin-bottom: 8px;
621
+ }
622
+ div[name] {
623
+ color: #586878;
624
+ font-size: 24px;
625
+ font-weight: bold;
626
+ flex: 1;
627
+ text-align: center;
628
+ }
629
+
630
+ @keyframes pulse {
631
+ 0% {
632
+ filter: drop-shadow(0 0 0 #d32f2f);
633
+ }
634
+ 70% {
635
+ filter: drop-shadow(0 0 8px #d32f2f);
636
+ }
637
+ 100% {
638
+ filter: drop-shadow(0 0 0 #d32f2f);
639
+ }
640
+ }
641
+ .stt-fab[active] md-icon {
642
+ color: #d32f2f;
643
+ animation: pulse 1s infinite;
644
+ }
539
645
  `
540
646
  ];
541
647
  __decorate([