@dssp/supervision 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (204) hide show
  1. package/dist-client/graphql/building-inspection.d.ts +1 -0
  2. package/dist-client/graphql/building-inspection.js +66 -0
  3. package/dist-client/graphql/building-inspection.js.map +1 -0
  4. package/dist-client/pages/action-plan/action-plan-importer.js.map +1 -1
  5. package/dist-client/pages/action-plan/action-plan-list-page.js.map +1 -1
  6. package/dist-client/pages/building-inspection/building-inspection-detail-camera.js.map +1 -1
  7. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js +2 -68
  8. package/dist-client/pages/building-inspection/building-inspection-detail-checklist.js.map +1 -1
  9. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.d.ts +0 -1
  10. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js +16 -11
  11. package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js.map +1 -1
  12. package/dist-client/pages/building-inspection/building-inspection-list.d.ts +3 -2
  13. package/dist-client/pages/building-inspection/building-inspection-list.js +118 -13
  14. package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
  15. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js +31 -9
  16. package/dist-client/pages/building-inspection/component/building-inspection-detail-header.js.map +1 -1
  17. package/dist-client/pages/building-inspection/component/inspection-event-provider.js +3 -3
  18. package/dist-client/pages/building-inspection/component/inspection-event-provider.js.map +1 -1
  19. package/dist-client/pages/building-inspection/inspection-create-popup.js +5 -4
  20. package/dist-client/pages/building-inspection/inspection-create-popup.js.map +1 -1
  21. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.d.ts +46 -0
  22. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js +953 -0
  23. package/dist-client/pages/building-inspection-grid/building-inspection-grid-detail.js.map +1 -0
  24. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.d.ts +2 -0
  25. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js +734 -0
  26. package/dist-client/pages/building-inspection-grid/component/grid-inspection-create-popup.js.map +1 -0
  27. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.d.ts +1 -0
  28. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.js +304 -0
  29. package/dist-client/pages/building-inspection-grid/component/notice-comment-popup.js.map +1 -0
  30. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.d.ts +15 -0
  31. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.js +430 -0
  32. package/dist-client/pages/building-inspection-grid/component/plan-preview-popup.js.map +1 -0
  33. package/dist-client/pages/checklist/attachment-list-popup.js +9 -2
  34. package/dist-client/pages/checklist/attachment-list-popup.js.map +1 -1
  35. package/dist-client/pages/checklist/checklist-view.d.ts +2 -0
  36. package/dist-client/pages/checklist/checklist-view.js +288 -185
  37. package/dist-client/pages/checklist/checklist-view.js.map +1 -1
  38. package/dist-client/pages/checklist/comment-list-popup.js +14 -3
  39. package/dist-client/pages/checklist/comment-list-popup.js.map +1 -1
  40. package/dist-client/pages/checklist/file-preview-popup.js.map +1 -1
  41. package/dist-client/pages/checklist-template/checklist-template-item.js +8 -3
  42. package/dist-client/pages/checklist-template/checklist-template-item.js.map +1 -1
  43. package/dist-client/pages/checklist-template/checklist-template-list.js +1 -1
  44. package/dist-client/pages/checklist-template/checklist-template-list.js.map +1 -1
  45. package/dist-client/pages/checklist-template/checklist-type-management.d.ts +2 -2
  46. package/dist-client/pages/checklist-template/checklist-type-management.js.map +1 -1
  47. package/dist-client/pages/issue/issue-importer.js.map +1 -1
  48. package/dist-client/pages/issue/issue-list-page.js.map +1 -1
  49. package/dist-client/pages/project-report/project-report-importer.js.map +1 -1
  50. package/dist-client/pages/project-report/project-report-list-page.js.map +1 -1
  51. package/dist-client/pages/supervisor/supervisor-importer.js.map +1 -1
  52. package/dist-client/pages/supervisor/supervisor-list-page.js.map +1 -1
  53. package/dist-client/route.d.ts +1 -1
  54. package/dist-client/route.js +3 -0
  55. package/dist-client/route.js.map +1 -1
  56. package/dist-client/stt/speech-to-text.d.ts +36 -0
  57. package/dist-client/stt/speech-to-text.js +89 -0
  58. package/dist-client/stt/speech-to-text.js.map +1 -0
  59. package/dist-client/stt/stt-utils.d.ts +28 -0
  60. package/dist-client/stt/stt-utils.js +146 -0
  61. package/dist-client/stt/stt-utils.js.map +1 -0
  62. package/dist-client/tsconfig.tsbuildinfo +1 -1
  63. package/dist-server/middlewares/index.js +1 -2
  64. package/dist-server/middlewares/index.js.map +1 -1
  65. package/dist-server/service/action-plan/action-plan-mutation.js +2 -2
  66. package/dist-server/service/action-plan/action-plan-mutation.js.map +1 -1
  67. package/dist-server/service/action-plan/action-plan-query.js +2 -2
  68. package/dist-server/service/action-plan/action-plan-query.js.map +1 -1
  69. package/dist-server/service/action-plan/action-plan-type.js +6 -6
  70. package/dist-server/service/action-plan/action-plan-type.js.map +1 -1
  71. package/dist-server/service/action-plan/action-plan.js +3 -3
  72. package/dist-server/service/action-plan/action-plan.js.map +1 -1
  73. package/dist-server/service/action-plan/index.d.ts +0 -1
  74. package/dist-server/service/action-plan/index.js +1 -2
  75. package/dist-server/service/action-plan/index.js.map +1 -1
  76. package/dist-server/service/building-inspection/building-inspection-history.js +2 -2
  77. package/dist-server/service/building-inspection/building-inspection-history.js.map +1 -1
  78. package/dist-server/service/building-inspection/building-inspection-mutation.d.ts +1 -1
  79. package/dist-server/service/building-inspection/building-inspection-mutation.js +111 -32
  80. package/dist-server/service/building-inspection/building-inspection-mutation.js.map +1 -1
  81. package/dist-server/service/building-inspection/building-inspection-query.d.ts +2 -3
  82. package/dist-server/service/building-inspection/building-inspection-query.js +39 -29
  83. package/dist-server/service/building-inspection/building-inspection-query.js.map +1 -1
  84. package/dist-server/service/building-inspection/building-inspection-type.d.ts +18 -8
  85. package/dist-server/service/building-inspection/building-inspection-type.js +71 -25
  86. package/dist-server/service/building-inspection/building-inspection-type.js.map +1 -1
  87. package/dist-server/service/building-inspection/building-inspection.d.ts +9 -0
  88. package/dist-server/service/building-inspection/building-inspection.js +43 -5
  89. package/dist-server/service/building-inspection/building-inspection.js.map +1 -1
  90. package/dist-server/service/building-inspection/index.d.ts +3 -5
  91. package/dist-server/service/building-inspection/index.js +10 -4
  92. package/dist-server/service/building-inspection/index.js.map +1 -1
  93. package/dist-server/service/checklist/checklist-history.d.ts +8 -0
  94. package/dist-server/service/checklist/checklist-history.js +38 -2
  95. package/dist-server/service/checklist/checklist-history.js.map +1 -1
  96. package/dist-server/service/checklist/checklist-mutation.d.ts +0 -5
  97. package/dist-server/service/checklist/checklist-mutation.js +3 -69
  98. package/dist-server/service/checklist/checklist-mutation.js.map +1 -1
  99. package/dist-server/service/checklist/checklist-query.js +2 -2
  100. package/dist-server/service/checklist/checklist-query.js.map +1 -1
  101. package/dist-server/service/checklist/checklist-type.d.ts +0 -13
  102. package/dist-server/service/checklist/checklist-type.js +3 -51
  103. package/dist-server/service/checklist/checklist-type.js.map +1 -1
  104. package/dist-server/service/checklist/checklist.d.ts +15 -3
  105. package/dist-server/service/checklist/checklist.js +61 -17
  106. package/dist-server/service/checklist/checklist.js.map +1 -1
  107. package/dist-server/service/checklist/index.d.ts +0 -2
  108. package/dist-server/service/checklist/index.js +1 -3
  109. package/dist-server/service/checklist/index.js.map +1 -1
  110. package/dist-server/service/checklist-item/checklist-item-mutation.js +2 -2
  111. package/dist-server/service/checklist-item/checklist-item-mutation.js.map +1 -1
  112. package/dist-server/service/checklist-item/checklist-item-query.js +2 -2
  113. package/dist-server/service/checklist-item/checklist-item-query.js.map +1 -1
  114. package/dist-server/service/checklist-item/checklist-item-type.js +2 -2
  115. package/dist-server/service/checklist-item/checklist-item-type.js.map +1 -1
  116. package/dist-server/service/checklist-item/checklist-item.js +3 -3
  117. package/dist-server/service/checklist-item/checklist-item.js.map +1 -1
  118. package/dist-server/service/checklist-item-comment/checklist-item-comment-history.js +2 -2
  119. package/dist-server/service/checklist-item-comment/checklist-item-comment-history.js.map +1 -1
  120. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.d.ts +1 -0
  121. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js +35 -8
  122. package/dist-server/service/checklist-item-comment/checklist-item-comment-mutation.js.map +1 -1
  123. package/dist-server/service/checklist-item-comment/checklist-item-comment-query.js +2 -2
  124. package/dist-server/service/checklist-item-comment/checklist-item-comment-query.js.map +1 -1
  125. package/dist-server/service/checklist-item-comment/checklist-item-comment-type.js +6 -6
  126. package/dist-server/service/checklist-item-comment/checklist-item-comment-type.js.map +1 -1
  127. package/dist-server/service/checklist-item-comment/checklist-item-comment.js +2 -2
  128. package/dist-server/service/checklist-item-comment/checklist-item-comment.js.map +1 -1
  129. package/dist-server/service/checklist-item-comment/index.d.ts +0 -2
  130. package/dist-server/service/checklist-item-comment/index.js +1 -3
  131. package/dist-server/service/checklist-item-comment/index.js.map +1 -1
  132. package/dist-server/service/checklist-template/checklist-template-mutation.js +2 -2
  133. package/dist-server/service/checklist-template/checklist-template-mutation.js.map +1 -1
  134. package/dist-server/service/checklist-template/checklist-template-query.js +2 -2
  135. package/dist-server/service/checklist-template/checklist-template-query.js.map +1 -1
  136. package/dist-server/service/checklist-template/checklist-template-type.js +4 -4
  137. package/dist-server/service/checklist-template/checklist-template-type.js.map +1 -1
  138. package/dist-server/service/checklist-template/checklist-template.js +2 -2
  139. package/dist-server/service/checklist-template/checklist-template.js.map +1 -1
  140. package/dist-server/service/checklist-template-item/checklist-template-item-mutation.js +2 -2
  141. package/dist-server/service/checklist-template-item/checklist-template-item-mutation.js.map +1 -1
  142. package/dist-server/service/checklist-template-item/checklist-template-item-query.js +2 -2
  143. package/dist-server/service/checklist-template-item/checklist-template-item-query.js.map +1 -1
  144. package/dist-server/service/checklist-template-item/checklist-template-item-type.js +4 -4
  145. package/dist-server/service/checklist-template-item/checklist-template-item-type.js.map +1 -1
  146. package/dist-server/service/checklist-template-item/checklist-template-item.js +4 -6
  147. package/dist-server/service/checklist-template-item/checklist-template-item.js.map +1 -1
  148. package/dist-server/service/checklist-type/checklist-type-mutation.js +2 -2
  149. package/dist-server/service/checklist-type/checklist-type-mutation.js.map +1 -1
  150. package/dist-server/service/checklist-type/checklist-type-query.js +2 -2
  151. package/dist-server/service/checklist-type/checklist-type-query.js.map +1 -1
  152. package/dist-server/service/checklist-type/checklist-type-type.js +4 -4
  153. package/dist-server/service/checklist-type/checklist-type-type.js.map +1 -1
  154. package/dist-server/service/checklist-type/checklist-type.js +3 -3
  155. package/dist-server/service/checklist-type/checklist-type.js.map +1 -1
  156. package/dist-server/service/index.d.ts +1 -1
  157. package/dist-server/service/index.js +2 -11
  158. package/dist-server/service/index.js.map +1 -1
  159. package/dist-server/service/issue/index.d.ts +0 -1
  160. package/dist-server/service/issue/index.js +1 -2
  161. package/dist-server/service/issue/index.js.map +1 -1
  162. package/dist-server/service/issue/issue-mutation.js +2 -2
  163. package/dist-server/service/issue/issue-mutation.js.map +1 -1
  164. package/dist-server/service/issue/issue-query.js +2 -2
  165. package/dist-server/service/issue/issue-query.js.map +1 -1
  166. package/dist-server/service/issue/issue-type.js +6 -6
  167. package/dist-server/service/issue/issue-type.js.map +1 -1
  168. package/dist-server/service/issue/issue.js +3 -3
  169. package/dist-server/service/issue/issue.js.map +1 -1
  170. package/dist-server/service/project-report/index.d.ts +0 -1
  171. package/dist-server/service/project-report/index.js +1 -2
  172. package/dist-server/service/project-report/index.js.map +1 -1
  173. package/dist-server/service/project-report/project-report-mutation.js +2 -2
  174. package/dist-server/service/project-report/project-report-mutation.js.map +1 -1
  175. package/dist-server/service/project-report/project-report-query.js +2 -2
  176. package/dist-server/service/project-report/project-report-query.js.map +1 -1
  177. package/dist-server/service/project-report/project-report-type.js +6 -6
  178. package/dist-server/service/project-report/project-report-type.js.map +1 -1
  179. package/dist-server/service/project-report/project-report.d.ts +0 -2
  180. package/dist-server/service/project-report/project-report.js +3 -9
  181. package/dist-server/service/project-report/project-report.js.map +1 -1
  182. package/dist-server/service/supervisor/index.d.ts +0 -1
  183. package/dist-server/service/supervisor/index.js +1 -2
  184. package/dist-server/service/supervisor/index.js.map +1 -1
  185. package/dist-server/service/supervisor/supervisor-mutation.js +2 -2
  186. package/dist-server/service/supervisor/supervisor-mutation.js.map +1 -1
  187. package/dist-server/service/supervisor/supervisor-query.js +2 -2
  188. package/dist-server/service/supervisor/supervisor-query.js.map +1 -1
  189. package/dist-server/service/supervisor/supervisor-type.js +6 -6
  190. package/dist-server/service/supervisor/supervisor-type.js.map +1 -1
  191. package/dist-server/service/supervisor/supervisor.js +3 -3
  192. package/dist-server/service/supervisor/supervisor.js.map +1 -1
  193. package/dist-server/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +12 -13
  195. package/things-factory.config.js +3 -1
  196. package/dist-server/service/building-inspection/event-subscriber.d.ts +0 -7
  197. package/dist-server/service/building-inspection/event-subscriber.js +0 -21
  198. package/dist-server/service/building-inspection/event-subscriber.js.map +0 -1
  199. package/dist-server/service/checklist/event-subscriber.d.ts +0 -7
  200. package/dist-server/service/checklist/event-subscriber.js +0 -21
  201. package/dist-server/service/checklist/event-subscriber.js.map +0 -1
  202. package/dist-server/service/checklist-item-comment/event-subscriber.d.ts +0 -7
  203. package/dist-server/service/checklist-item-comment/event-subscriber.js +0 -21
  204. package/dist-server/service/checklist-item-comment/event-subscriber.js.map +0 -1
@@ -0,0 +1,146 @@
1
+ // stt-utils.ts
2
+ // 음성 인식 텍스트를 체크리스트 명령으로 해석하는 유틸리티
3
+ /**
4
+ * 한글 숫자 → 아라비아 숫자 변환 맵
5
+ */
6
+ export const hangulDigits = {
7
+ 일: '1',
8
+ 이: '2',
9
+ 삼: '3',
10
+ 사: '4',
11
+ 오: '5',
12
+ 육: '6',
13
+ 륙: '6',
14
+ 칠: '7',
15
+ 팔: '8',
16
+ 구: '9',
17
+ 십: '10',
18
+ 십일: '11',
19
+ 열하나: '11',
20
+ 십이: '12',
21
+ 열둘: '12',
22
+ 십삼: '13',
23
+ 열셋: '13',
24
+ 십사: '14',
25
+ 열넷: '14',
26
+ 십오: '15',
27
+ 열다섯: '15',
28
+ 십육: '16',
29
+ 열여섯: '16',
30
+ 십칠: '17',
31
+ 열일곱: '17',
32
+ 십팔: '18',
33
+ 열여덟: '18',
34
+ 십구: '19',
35
+ 열아홉: '19',
36
+ 이십: '20',
37
+ 스물: '20'
38
+ };
39
+ /**
40
+ * 음성 인식 오인식 보정 맵
41
+ */
42
+ export const misheardMap = {
43
+ 일번: '1번',
44
+ 일본: '1번',
45
+ 이번: '2번',
46
+ 삼번: '3번',
47
+ 사번: '4번',
48
+ 오번: '5번',
49
+ 육번: '6번',
50
+ 륙번: '6번',
51
+ 칠번: '7번',
52
+ 팔번: '8번',
53
+ 구번: '9번',
54
+ 십번: '10번',
55
+ 십일번: '11번',
56
+ 열하나번: '11번',
57
+ 십이번: '12번',
58
+ 열둘번: '12번',
59
+ 십삼번: '13번',
60
+ 열셋번: '13번',
61
+ 십사번: '14번',
62
+ 열넷번: '14번',
63
+ 십오번: '15번',
64
+ 열다섯번: '15번',
65
+ 십육번: '16번',
66
+ 열여섯번: '16번',
67
+ 십칠번: '17번',
68
+ 열일곱번: '17번',
69
+ 십팔번: '18번',
70
+ 열여덟번: '18번',
71
+ 십구번: '19번',
72
+ 열아홉번: '19번',
73
+ 이십번: '20번',
74
+ 스물번: '20번',
75
+ // 추가 보정
76
+ '조치 사항': '조치사항',
77
+ 조치상: '조치사항',
78
+ 조치: '조치사항',
79
+ 자제: '자재'
80
+ };
81
+ /**
82
+ * 합격/불합격 동의어
83
+ */
84
+ export const passSynonyms = ['합격', 'pass', 'approved', 'okay'];
85
+ export const failSynonyms = ['불합격', 'fail', 'failed'];
86
+ /**
87
+ * 음성 인식 텍스트를 체크리스트 명령으로 해석
88
+ * @param command 음성 인식 결과 텍스트
89
+ * @param checklistLength 체크리스트 항목 개수(번호 범위 제한용)
90
+ */
91
+ export function parseSpeechCommand(command, checklistLength = 20) {
92
+ let original = command;
93
+ // (A) 하이픈 제거, 오인식 보정
94
+ command = command.replace(/-/g, '');
95
+ for (const [wrong, correct] of Object.entries(misheardMap)) {
96
+ command = command.replace(new RegExp(wrong, 'g'), correct);
97
+ }
98
+ // (B) 한글 숫자 변환
99
+ let tokens = command.split(/\s+/).map(token => {
100
+ if (hangulDigits[token])
101
+ return hangulDigits[token] + '번';
102
+ const m = token.match(/^([일이삼사오육륙칠팔구십])번$/);
103
+ if (m)
104
+ return hangulDigits[m[1]] + '번';
105
+ return token;
106
+ });
107
+ command = tokens.join(' ');
108
+ // (C) 번호 추출
109
+ const rowRegexGlobal = /(\d+)번/g;
110
+ let rowMatches = [...command.matchAll(rowRegexGlobal)];
111
+ let rowIds = [];
112
+ rowMatches.forEach(match => {
113
+ let numStr = match[1];
114
+ let numeric = parseInt(numStr, 10);
115
+ if (numeric >= 1 && numeric <= checklistLength) {
116
+ rowIds.push(numeric);
117
+ }
118
+ });
119
+ // (D) 합격/불합격 여부
120
+ let isPass = null;
121
+ for (let word of passSynonyms) {
122
+ if (command.includes(word)) {
123
+ isPass = true;
124
+ break;
125
+ }
126
+ }
127
+ for (let word of failSynonyms) {
128
+ if (command.includes(word)) {
129
+ isPass = false;
130
+ break;
131
+ }
132
+ }
133
+ // (E) 조치사항 텍스트 추출
134
+ let actionText;
135
+ let actionMatch = command.match(/조치사항\s*(.*)/);
136
+ if (actionMatch && actionMatch[1]) {
137
+ actionText = actionMatch[1].trim();
138
+ }
139
+ return {
140
+ rowIds,
141
+ isPass,
142
+ actionText,
143
+ raw: original
144
+ };
145
+ }
146
+ //# sourceMappingURL=stt-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stt-utils.js","sourceRoot":"","sources":["../../client/stt/stt-utils.ts"],"names":[],"mappings":"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","sourcesContent":["// stt-utils.ts\n// 음성 인식 텍스트를 체크리스트 명령으로 해석하는 유틸리티\n\n/**\n * 한글 숫자 → 아라비아 숫자 변환 맵\n */\nexport const hangulDigits: Record<string, string> = {\n 일: '1',\n 이: '2',\n 삼: '3',\n 사: '4',\n 오: '5',\n 육: '6',\n 륙: '6',\n 칠: '7',\n 팔: '8',\n 구: '9',\n 십: '10',\n 십일: '11',\n 열하나: '11',\n 십이: '12',\n 열둘: '12',\n 십삼: '13',\n 열셋: '13',\n 십사: '14',\n 열넷: '14',\n 십오: '15',\n 열다섯: '15',\n 십육: '16',\n 열여섯: '16',\n 십칠: '17',\n 열일곱: '17',\n 십팔: '18',\n 열여덟: '18',\n 십구: '19',\n 열아홉: '19',\n 이십: '20',\n 스물: '20'\n}\n\n/**\n * 음성 인식 오인식 보정 맵\n */\nexport const misheardMap: Record<string, string> = {\n 일번: '1번',\n 일본: '1번',\n 이번: '2번',\n 삼번: '3번',\n 사번: '4번',\n 오번: '5번',\n 육번: '6번',\n 륙번: '6번',\n 칠번: '7번',\n 팔번: '8번',\n 구번: '9번',\n 십번: '10번',\n 십일번: '11번',\n 열하나번: '11번',\n 십이번: '12번',\n 열둘번: '12번',\n 십삼번: '13번',\n 열셋번: '13번',\n 십사번: '14번',\n 열넷번: '14번',\n 십오번: '15번',\n 열다섯번: '15번',\n 십육번: '16번',\n 열여섯번: '16번',\n 십칠번: '17번',\n 열일곱번: '17번',\n 십팔번: '18번',\n 열여덟번: '18번',\n 십구번: '19번',\n 열아홉번: '19번',\n 이십번: '20번',\n 스물번: '20번',\n // 추가 보정\n '조치 사항': '조치사항',\n 조치상: '조치사항',\n 조치: '조치사항',\n 자제: '자재'\n}\n\n/**\n * 합격/불합격 동의어\n */\nexport const passSynonyms = ['합격', 'pass', 'approved', 'okay']\nexport const failSynonyms = ['불합격', 'fail', 'failed']\n\n/**\n * 체크리스트 명령 해석 결과 타입\n */\nexport interface ParsedSpeechCommand {\n rowIds: number[] // 체크리스트 항목 번호(1,2,3 등)\n isPass: boolean | null // 합격/불합격 여부 (없으면 null)\n actionText?: string // 조치사항 텍스트 (있을 때만)\n raw: string // 원본 텍스트\n}\n\n/**\n * 음성 인식 텍스트를 체크리스트 명령으로 해석\n * @param command 음성 인식 결과 텍스트\n * @param checklistLength 체크리스트 항목 개수(번호 범위 제한용)\n */\nexport function parseSpeechCommand(command: string, checklistLength = 20): ParsedSpeechCommand {\n let original = command\n\n // (A) 하이픈 제거, 오인식 보정\n command = command.replace(/-/g, '')\n for (const [wrong, correct] of Object.entries(misheardMap)) {\n command = command.replace(new RegExp(wrong, 'g'), correct)\n }\n\n // (B) 한글 숫자 변환\n let tokens = command.split(/\\s+/).map(token => {\n if (hangulDigits[token]) return hangulDigits[token] + '번'\n const m = token.match(/^([일이삼사오육륙칠팔구십])번$/)\n if (m) return hangulDigits[m[1]] + '번'\n return token\n })\n command = tokens.join(' ')\n\n // (C) 번호 추출\n const rowRegexGlobal = /(\\d+)번/g\n let rowMatches = [...command.matchAll(rowRegexGlobal)]\n let rowIds: number[] = []\n rowMatches.forEach(match => {\n let numStr = match[1]\n let numeric = parseInt(numStr, 10)\n if (numeric >= 1 && numeric <= checklistLength) {\n rowIds.push(numeric)\n }\n })\n\n // (D) 합격/불합격 여부\n let isPass: boolean | null = null\n for (let word of passSynonyms) {\n if (command.includes(word)) {\n isPass = true\n break\n }\n }\n for (let word of failSynonyms) {\n if (command.includes(word)) {\n isPass = false\n break\n }\n }\n\n // (E) 조치사항 텍스트 추출\n let actionText: string | undefined\n let actionMatch = command.match(/조치사항\\s*(.*)/)\n if (actionMatch && actionMatch[1]) {\n actionText = actionMatch[1].trim()\n }\n\n return {\n rowIds,\n isPass,\n actionText,\n raw: original\n }\n}\n"]}