@tipp/ui 2.9.0 → 2.10.1

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 (198) hide show
  1. package/dist/app/index.js +17 -17
  2. package/dist/app/platform/edit-coaching-time.js +17 -17
  3. package/dist/app/platform/edit-service-type.js +17 -17
  4. package/dist/app/platform/goal-manage-card-edit.js +17 -17
  5. package/dist/app/platform/on-offline-radio-card.js +17 -17
  6. package/dist/app/platform/reservation-card.js +17 -17
  7. package/dist/app/platform/session-card.js +17 -17
  8. package/dist/app/roleplay/chart/session-chart.cjs +351 -0
  9. package/dist/app/roleplay/chart/session-chart.cjs.map +1 -0
  10. package/dist/app/roleplay/chart/session-chart.d.cts +16 -0
  11. package/dist/app/roleplay/chart/session-chart.d.ts +16 -0
  12. package/dist/app/roleplay/chart/session-chart.js +14 -0
  13. package/dist/app/roleplay/chart/session-chart.js.map +1 -0
  14. package/dist/app/roleplay/index.cjs +5715 -0
  15. package/dist/app/roleplay/index.cjs.map +1 -0
  16. package/dist/app/roleplay/index.d.cts +4 -0
  17. package/dist/app/roleplay/index.d.ts +4 -0
  18. package/dist/app/roleplay/index.js +182 -0
  19. package/dist/app/roleplay/index.js.map +1 -0
  20. package/dist/app/roleplay/parts/analysis-section.cjs +2178 -0
  21. package/dist/app/roleplay/parts/analysis-section.cjs.map +1 -0
  22. package/dist/app/roleplay/parts/analysis-section.d.cts +17 -0
  23. package/dist/app/roleplay/parts/analysis-section.d.ts +17 -0
  24. package/dist/app/roleplay/parts/analysis-section.js +97 -0
  25. package/dist/app/roleplay/parts/analysis-section.js.map +1 -0
  26. package/dist/app/roleplay/parts/coaching-panel.cjs +2191 -0
  27. package/dist/app/roleplay/parts/coaching-panel.cjs.map +1 -0
  28. package/dist/app/roleplay/parts/coaching-panel.d.cts +8 -0
  29. package/dist/app/roleplay/parts/coaching-panel.d.ts +8 -0
  30. package/dist/app/roleplay/parts/coaching-panel.js +95 -0
  31. package/dist/app/roleplay/parts/coaching-panel.js.map +1 -0
  32. package/dist/app/roleplay/parts/content.cjs +4687 -0
  33. package/dist/app/roleplay/parts/content.cjs.map +1 -0
  34. package/dist/app/roleplay/parts/content.d.cts +15 -0
  35. package/dist/app/roleplay/parts/content.d.ts +15 -0
  36. package/dist/app/roleplay/parts/content.js +174 -0
  37. package/dist/app/roleplay/parts/content.js.map +1 -0
  38. package/dist/app/roleplay/parts/header.cjs +2300 -0
  39. package/dist/app/roleplay/parts/header.cjs.map +1 -0
  40. package/dist/app/roleplay/parts/header.d.cts +13 -0
  41. package/dist/app/roleplay/parts/header.d.ts +13 -0
  42. package/dist/app/roleplay/parts/header.js +96 -0
  43. package/dist/app/roleplay/parts/header.js.map +1 -0
  44. package/dist/app/roleplay/parts/score-summary.cjs +2276 -0
  45. package/dist/app/roleplay/parts/score-summary.cjs.map +1 -0
  46. package/dist/app/roleplay/parts/score-summary.d.cts +12 -0
  47. package/dist/app/roleplay/parts/score-summary.d.ts +12 -0
  48. package/dist/app/roleplay/parts/score-summary.js +96 -0
  49. package/dist/app/roleplay/parts/score-summary.js.map +1 -0
  50. package/dist/app/roleplay/parts/score-trend-section.cjs +3687 -0
  51. package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -0
  52. package/dist/app/roleplay/parts/score-trend-section.d.cts +14 -0
  53. package/dist/app/roleplay/parts/score-trend-section.d.ts +14 -0
  54. package/dist/app/roleplay/parts/score-trend-section.js +167 -0
  55. package/dist/app/roleplay/parts/score-trend-section.js.map +1 -0
  56. package/dist/app/roleplay/parts/script-transcript.cjs +2288 -0
  57. package/dist/app/roleplay/parts/script-transcript.cjs.map +1 -0
  58. package/dist/app/roleplay/parts/script-transcript.d.cts +15 -0
  59. package/dist/app/roleplay/parts/script-transcript.d.ts +15 -0
  60. package/dist/app/roleplay/parts/script-transcript.js +96 -0
  61. package/dist/app/roleplay/parts/script-transcript.js.map +1 -0
  62. package/dist/app/roleplay/parts/section-nav.cjs +2433 -0
  63. package/dist/app/roleplay/parts/section-nav.cjs.map +1 -0
  64. package/dist/app/roleplay/parts/section-nav.d.cts +15 -0
  65. package/dist/app/roleplay/parts/section-nav.d.ts +15 -0
  66. package/dist/app/roleplay/parts/section-nav.js +96 -0
  67. package/dist/app/roleplay/parts/section-nav.js.map +1 -0
  68. package/dist/app/roleplay/parts/session-replay-dialog.cjs +2598 -0
  69. package/dist/app/roleplay/parts/session-replay-dialog.cjs.map +1 -0
  70. package/dist/app/roleplay/parts/session-replay-dialog.d.cts +14 -0
  71. package/dist/app/roleplay/parts/session-replay-dialog.d.ts +14 -0
  72. package/dist/app/roleplay/parts/session-replay-dialog.js +97 -0
  73. package/dist/app/roleplay/parts/session-replay-dialog.js.map +1 -0
  74. package/dist/app/roleplay/parts/step-detail.cjs +2311 -0
  75. package/dist/app/roleplay/parts/step-detail.cjs.map +1 -0
  76. package/dist/app/roleplay/parts/step-detail.d.cts +9 -0
  77. package/dist/app/roleplay/parts/step-detail.d.ts +9 -0
  78. package/dist/app/roleplay/parts/step-detail.js +96 -0
  79. package/dist/app/roleplay/parts/step-detail.js.map +1 -0
  80. package/dist/app/roleplay/parts/step-radar.cjs +463 -0
  81. package/dist/app/roleplay/parts/step-radar.cjs.map +1 -0
  82. package/dist/app/roleplay/parts/step-radar.d.cts +8 -0
  83. package/dist/app/roleplay/parts/step-radar.d.ts +8 -0
  84. package/dist/app/roleplay/parts/step-radar.js +14 -0
  85. package/dist/app/roleplay/parts/step-radar.js.map +1 -0
  86. package/dist/app/roleplay/parts/step-summary.cjs +2651 -0
  87. package/dist/app/roleplay/parts/step-summary.cjs.map +1 -0
  88. package/dist/app/roleplay/parts/step-summary.d.cts +8 -0
  89. package/dist/app/roleplay/parts/step-summary.d.ts +8 -0
  90. package/dist/app/roleplay/parts/step-summary.js +101 -0
  91. package/dist/app/roleplay/parts/step-summary.js.map +1 -0
  92. package/dist/app/roleplay/rp-session-detail.cjs +5712 -0
  93. package/dist/app/roleplay/rp-session-detail.cjs.map +1 -0
  94. package/dist/app/roleplay/rp-session-detail.d.cts +17 -0
  95. package/dist/app/roleplay/rp-session-detail.d.ts +17 -0
  96. package/dist/app/roleplay/rp-session-detail.js +179 -0
  97. package/dist/app/roleplay/rp-session-detail.js.map +1 -0
  98. package/dist/app/roleplay/types.cjs +19 -0
  99. package/dist/app/roleplay/types.cjs.map +1 -0
  100. package/dist/app/roleplay/types.d.cts +42 -0
  101. package/dist/app/roleplay/types.d.ts +42 -0
  102. package/dist/app/roleplay/types.js +2 -0
  103. package/dist/app/roleplay/types.js.map +1 -0
  104. package/dist/app/roleplay/utils/report-parse.cjs +285 -0
  105. package/dist/app/roleplay/utils/report-parse.cjs.map +1 -0
  106. package/dist/app/roleplay/utils/report-parse.d.cts +57 -0
  107. package/dist/app/roleplay/utils/report-parse.d.ts +57 -0
  108. package/dist/app/roleplay/utils/report-parse.js +8 -0
  109. package/dist/app/roleplay/utils/report-parse.js.map +1 -0
  110. package/dist/app/roleplay/utils/report-parse.test.cjs +491 -0
  111. package/dist/app/roleplay/utils/report-parse.test.cjs.map +1 -0
  112. package/dist/app/roleplay/utils/report-parse.test.d.cts +2 -0
  113. package/dist/app/roleplay/utils/report-parse.test.d.ts +2 -0
  114. package/dist/app/roleplay/utils/report-parse.test.js +237 -0
  115. package/dist/app/roleplay/utils/report-parse.test.js.map +1 -0
  116. package/dist/app/roleplay/utils/session-utils.cjs +204 -0
  117. package/dist/app/roleplay/utils/session-utils.cjs.map +1 -0
  118. package/dist/app/roleplay/utils/session-utils.d.cts +38 -0
  119. package/dist/app/roleplay/utils/session-utils.d.ts +38 -0
  120. package/dist/app/roleplay/utils/session-utils.js +46 -0
  121. package/dist/app/roleplay/utils/session-utils.js.map +1 -0
  122. package/dist/chunk-32WIS4L7.js +131 -0
  123. package/dist/chunk-32WIS4L7.js.map +1 -0
  124. package/dist/chunk-3UGBMKSQ.js +166 -0
  125. package/dist/chunk-3UGBMKSQ.js.map +1 -0
  126. package/dist/chunk-4YAA25AV.js +161 -0
  127. package/dist/chunk-4YAA25AV.js.map +1 -0
  128. package/dist/chunk-5QIT4URV.js +87 -0
  129. package/dist/chunk-5QIT4URV.js.map +1 -0
  130. package/dist/chunk-6YIKOYBQ.js +185 -0
  131. package/dist/chunk-6YIKOYBQ.js.map +1 -0
  132. package/dist/chunk-7MXY3D3Z.js +84 -0
  133. package/dist/chunk-7MXY3D3Z.js.map +1 -0
  134. package/dist/chunk-EBFQFOUQ.js +138 -0
  135. package/dist/chunk-EBFQFOUQ.js.map +1 -0
  136. package/dist/chunk-EHDUKUML.js +183 -0
  137. package/dist/chunk-EHDUKUML.js.map +1 -0
  138. package/dist/{chunk-NEJCZABQ.js → chunk-FJEDSUGU.js} +7 -7
  139. package/dist/chunk-GA6W62DO.js +101 -0
  140. package/dist/chunk-GA6W62DO.js.map +1 -0
  141. package/dist/chunk-KJPBBBVK.js +142 -0
  142. package/dist/chunk-KJPBBBVK.js.map +1 -0
  143. package/dist/{chunk-TQTCT7DC.js → chunk-LRNO4W2P.js} +5 -5
  144. package/dist/{chunk-6DWUGXSY.js → chunk-N242VJOP.js} +2 -2
  145. package/dist/chunk-NKW6BO5R.js +264 -0
  146. package/dist/chunk-NKW6BO5R.js.map +1 -0
  147. package/dist/{chunk-R5UDNKV2.js → chunk-O332K3SW.js} +2 -2
  148. package/dist/chunk-OUP3VFXG.js +1 -0
  149. package/dist/chunk-OUP3VFXG.js.map +1 -0
  150. package/dist/chunk-QMAINJ4G.js +190 -0
  151. package/dist/chunk-QMAINJ4G.js.map +1 -0
  152. package/dist/{chunk-KLJVIEFW.js → chunk-SOKGYD5B.js} +7 -7
  153. package/dist/chunk-TFJJKM3W.js +261 -0
  154. package/dist/chunk-TFJJKM3W.js.map +1 -0
  155. package/dist/{chunk-KQ3ME6XY.js → chunk-U2EAXN3Y.js} +4 -4
  156. package/dist/chunk-UXAEOCOH.js +150 -0
  157. package/dist/chunk-UXAEOCOH.js.map +1 -0
  158. package/dist/chunk-YHP75Y5K.js +242 -0
  159. package/dist/chunk-YHP75Y5K.js.map +1 -0
  160. package/dist/chunk-ZE36DFOC.js +142 -0
  161. package/dist/chunk-ZE36DFOC.js.map +1 -0
  162. package/dist/index.css +76 -0
  163. package/dist/index.js +32 -32
  164. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +5 -5
  165. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +2 -2
  166. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +7 -7
  167. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +8 -8
  168. package/dist/molecules/curriculumV2/CurriculumContents/index.js +9 -9
  169. package/dist/molecules/curriculumV2/index.js +11 -11
  170. package/dist/molecules/dynamic-form-editor.js +2 -2
  171. package/dist/molecules/index.js +29 -29
  172. package/package.json +28 -2
  173. package/src/app/roleplay/chart/session-chart.tsx +185 -0
  174. package/src/app/roleplay/index.ts +8 -0
  175. package/src/app/roleplay/parts/analysis-section.tsx +98 -0
  176. package/src/app/roleplay/parts/coaching-panel.tsx +101 -0
  177. package/src/app/roleplay/parts/content.tsx +146 -0
  178. package/src/app/roleplay/parts/header.tsx +168 -0
  179. package/src/app/roleplay/parts/score-summary.tsx +158 -0
  180. package/src/app/roleplay/parts/score-trend-section.tsx +265 -0
  181. package/src/app/roleplay/parts/script-transcript.tsx +190 -0
  182. package/src/app/roleplay/parts/section-nav.tsx +299 -0
  183. package/src/app/roleplay/parts/session-replay-dialog.tsx +168 -0
  184. package/src/app/roleplay/parts/step-detail.tsx +173 -0
  185. package/src/app/roleplay/parts/step-radar.tsx +80 -0
  186. package/src/app/roleplay/parts/step-summary.tsx +149 -0
  187. package/src/app/roleplay/rp-session-detail.tsx +176 -0
  188. package/src/app/roleplay/types.ts +61 -0
  189. package/src/app/roleplay/utils/report-parse.test.ts +268 -0
  190. package/src/app/roleplay/utils/report-parse.ts +443 -0
  191. package/src/app/roleplay/utils/session-utils.ts +215 -0
  192. package/src/constrant/trainingLog.dummy.json +1 -0
  193. /package/dist/{chunk-NEJCZABQ.js.map → chunk-FJEDSUGU.js.map} +0 -0
  194. /package/dist/{chunk-TQTCT7DC.js.map → chunk-LRNO4W2P.js.map} +0 -0
  195. /package/dist/{chunk-6DWUGXSY.js.map → chunk-N242VJOP.js.map} +0 -0
  196. /package/dist/{chunk-R5UDNKV2.js.map → chunk-O332K3SW.js.map} +0 -0
  197. /package/dist/{chunk-KLJVIEFW.js.map → chunk-SOKGYD5B.js.map} +0 -0
  198. /package/dist/{chunk-KQ3ME6XY.js.map → chunk-U2EAXN3Y.js.map} +0 -0
@@ -0,0 +1,17 @@
1
+ import React__default from 'react';
2
+ import { RpSessionDetailData, RpSessionHistoryItem, RpSessionScript } from './types.cjs';
3
+
4
+ interface RpSessionDetailProps {
5
+ detail: RpSessionDetailData;
6
+ history: RpSessionHistoryItem[];
7
+ isLoading?: boolean;
8
+ script?: RpSessionScript | null;
9
+ onResolveMediaUrl?: (rawUrl: string, options: {
10
+ disposition: 'inline' | 'attachment';
11
+ }) => string | Promise<string>;
12
+ onError?: (error: unknown, context: Record<string, unknown>) => void;
13
+ sectionScrollMarginTop?: string;
14
+ }
15
+ declare function RpSessionDetail({ detail, history, isLoading, script, onResolveMediaUrl, onError: _onError, sectionScrollMarginTop, }: RpSessionDetailProps): React__default.ReactElement;
16
+
17
+ export { RpSessionDetail, type RpSessionDetailProps };
@@ -0,0 +1,17 @@
1
+ import React__default from 'react';
2
+ import { RpSessionDetailData, RpSessionHistoryItem, RpSessionScript } from './types.js';
3
+
4
+ interface RpSessionDetailProps {
5
+ detail: RpSessionDetailData;
6
+ history: RpSessionHistoryItem[];
7
+ isLoading?: boolean;
8
+ script?: RpSessionScript | null;
9
+ onResolveMediaUrl?: (rawUrl: string, options: {
10
+ disposition: 'inline' | 'attachment';
11
+ }) => string | Promise<string>;
12
+ onError?: (error: unknown, context: Record<string, unknown>) => void;
13
+ sectionScrollMarginTop?: string;
14
+ }
15
+ declare function RpSessionDetail({ detail, history, isLoading, script, onResolveMediaUrl, onError: _onError, sectionScrollMarginTop, }: RpSessionDetailProps): React__default.ReactElement;
16
+
17
+ export { RpSessionDetail, type RpSessionDetailProps };
@@ -0,0 +1,179 @@
1
+ "use client";
2
+ import {
3
+ RpSessionDetail
4
+ } from "../../chunk-ZE36DFOC.js";
5
+ import "../../chunk-TFJJKM3W.js";
6
+ import "../../chunk-QMAINJ4G.js";
7
+ import "../../chunk-3UGBMKSQ.js";
8
+ import "../../chunk-EHDUKUML.js";
9
+ import "../../chunk-32WIS4L7.js";
10
+ import "../../chunk-EBFQFOUQ.js";
11
+ import "../../chunk-6YIKOYBQ.js";
12
+ import "../../chunk-YHP75Y5K.js";
13
+ import "../../chunk-NKW6BO5R.js";
14
+ import "../../chunk-KJPBBBVK.js";
15
+ import "../../chunk-5QIT4URV.js";
16
+ import "../../chunk-4YAA25AV.js";
17
+ import "../../chunk-UXAEOCOH.js";
18
+ import "../../chunk-7MXY3D3Z.js";
19
+ import "../../chunk-GA6W62DO.js";
20
+ import "../../chunk-PSINRHYW.js";
21
+ import "../../chunk-WSWSAPSS.js";
22
+ import "../../chunk-RXK3JM34.js";
23
+ import "../../chunk-SYMOHU2B.js";
24
+ import "../../chunk-AS7ID74X.js";
25
+ import "../../chunk-N242VJOP.js";
26
+ import "../../chunk-RRC4WFG3.js";
27
+ import "../../chunk-P2H3VCIB.js";
28
+ import "../../chunk-WS7IOHVK.js";
29
+ import "../../chunk-47QYYEMG.js";
30
+ import "../../chunk-QLOYGKKM.js";
31
+ import "../../chunk-S4MEMFKG.js";
32
+ import "../../chunk-K4RZTENM.js";
33
+ import "../../chunk-UXH2XIB2.js";
34
+ import "../../chunk-O332K3SW.js";
35
+ import "../../chunk-LRNO4W2P.js";
36
+ import "../../chunk-LK2H4QTJ.js";
37
+ import "../../chunk-SOKGYD5B.js";
38
+ import "../../chunk-U2EAXN3Y.js";
39
+ import "../../chunk-WLKK5L3P.js";
40
+ import "../../chunk-GE4M5GOQ.js";
41
+ import "../../chunk-G3KQN32M.js";
42
+ import "../../chunk-VK6INFSB.js";
43
+ import "../../chunk-CGLDFUOY.js";
44
+ import "../../chunk-OUDDTPEN.js";
45
+ import "../../chunk-ZGTGEBQX.js";
46
+ import "../../chunk-SINRU2A6.js";
47
+ import "../../chunk-NVRVOTWZ.js";
48
+ import "../../chunk-GMKRNFH5.js";
49
+ import "../../chunk-KFUBWOCN.js";
50
+ import "../../chunk-XWHBJY5V.js";
51
+ import "../../chunk-WA5A2GB4.js";
52
+ import "../../chunk-K3Q4XLCN.js";
53
+ import "../../chunk-AT5PAJLW.js";
54
+ import "../../chunk-VVWQZK5L.js";
55
+ import "../../chunk-5RIAIE2J.js";
56
+ import "../../chunk-JCG2AUFJ.js";
57
+ import "../../chunk-2ISIAPFS.js";
58
+ import "../../chunk-P4DJ5F6Z.js";
59
+ import "../../chunk-EZN5PMTC.js";
60
+ import "../../chunk-VBXZIIUA.js";
61
+ import "../../chunk-Q2FDF2AB.js";
62
+ import "../../chunk-GRDRXD53.js";
63
+ import "../../chunk-WTS75RUC.js";
64
+ import "../../chunk-BXX3B3E4.js";
65
+ import "../../chunk-NRPDVI76.js";
66
+ import "../../chunk-NWJSLIQ3.js";
67
+ import "../../chunk-2BPFXK4L.js";
68
+ import "../../chunk-AHYOAFOU.js";
69
+ import "../../chunk-FJEDSUGU.js";
70
+ import "../../chunk-77H5BUYO.js";
71
+ import "../../chunk-K7LTEKQS.js";
72
+ import "../../chunk-QLNAAZJX.js";
73
+ import "../../chunk-PAUEQXYG.js";
74
+ import "../../chunk-CUS3ORMD.js";
75
+ import "../../chunk-6OT5OYGM.js";
76
+ import "../../chunk-IJOOKMKQ.js";
77
+ import "../../chunk-C6HO3IGE.js";
78
+ import "../../chunk-3DZIX4CE.js";
79
+ import "../../chunk-CBYIPRND.js";
80
+ import "../../chunk-D4U2ZV2A.js";
81
+ import "../../chunk-V7KAHLW2.js";
82
+ import "../../chunk-SQ3FYBJT.js";
83
+ import "../../chunk-NK6S7ZMB.js";
84
+ import "../../chunk-Z7WNKARH.js";
85
+ import "../../chunk-OOM522XP.js";
86
+ import "../../chunk-N3FMP27I.js";
87
+ import "../../chunk-BEKSO5JG.js";
88
+ import "../../chunk-FAL6S2XK.js";
89
+ import "../../chunk-HBF6IIVZ.js";
90
+ import "../../chunk-AELKCD6B.js";
91
+ import "../../chunk-5XYPLDI5.js";
92
+ import "../../chunk-6NPTJBFE.js";
93
+ import "../../chunk-LNPFV5BJ.js";
94
+ import "../../chunk-YXMB4MCM.js";
95
+ import "../../chunk-HYITAA4J.js";
96
+ import "../../chunk-5H3YPCZK.js";
97
+ import "../../chunk-FR2GDOU2.js";
98
+ import "../../chunk-74DX4CU7.js";
99
+ import "../../chunk-KNIIDDYM.js";
100
+ import "../../chunk-6TU647KJ.js";
101
+ import "../../chunk-CGDBUDY3.js";
102
+ import "../../chunk-TNNF5Q62.js";
103
+ import "../../chunk-YO3BQW6S.js";
104
+ import "../../chunk-DX3DLP5Z.js";
105
+ import "../../chunk-SA7AYYQS.js";
106
+ import "../../chunk-3TOUVBIB.js";
107
+ import "../../chunk-MUPK4L3U.js";
108
+ import "../../chunk-MUNMDHRF.js";
109
+ import "../../chunk-IT7ZTP7F.js";
110
+ import "../../chunk-XQOL7UBI.js";
111
+ import "../../chunk-TULWX7D6.js";
112
+ import "../../chunk-BI6TW3ZO.js";
113
+ import "../../chunk-USL6PICI.js";
114
+ import "../../chunk-RWJUXAFY.js";
115
+ import "../../chunk-RMW3MQF5.js";
116
+ import "../../chunk-T73HHR3I.js";
117
+ import "../../chunk-MQKIIIBW.js";
118
+ import "../../chunk-2M3UFZUD.js";
119
+ import "../../chunk-PT57HCAI.js";
120
+ import "../../chunk-2DZ2Y3JI.js";
121
+ import "../../chunk-GNB4A34H.js";
122
+ import "../../chunk-EGEQY3KT.js";
123
+ import "../../chunk-24PX34TH.js";
124
+ import "../../chunk-WG5OK3YN.js";
125
+ import "../../chunk-ZCGH6TJ3.js";
126
+ import "../../chunk-UFWDQGOK.js";
127
+ import "../../chunk-NFDQJVFA.js";
128
+ import "../../chunk-Q37G2GS6.js";
129
+ import "../../chunk-ZPUNTAVI.js";
130
+ import "../../chunk-KDS7OQOY.js";
131
+ import "../../chunk-USGOLLYO.js";
132
+ import "../../chunk-JCUG2XKB.js";
133
+ import "../../chunk-645GPOW2.js";
134
+ import "../../chunk-U7N2PWMO.js";
135
+ import "../../chunk-7RJYF5L3.js";
136
+ import "../../chunk-HF6GNDPV.js";
137
+ import "../../chunk-UFRB2BVD.js";
138
+ import "../../chunk-4Y5BEXVN.js";
139
+ import "../../chunk-75EY7LBP.js";
140
+ import "../../chunk-L4QQGIYQ.js";
141
+ import "../../chunk-LDBWASUA.js";
142
+ import "../../chunk-PO2PBAHW.js";
143
+ import "../../chunk-36W7VD2Z.js";
144
+ import "../../chunk-25HMMI7R.js";
145
+ import "../../chunk-2LCH3PDF.js";
146
+ import "../../chunk-LQY4RKWI.js";
147
+ import "../../chunk-ZD7MNMED.js";
148
+ import "../../chunk-EIKFXUNC.js";
149
+ import "../../chunk-RP2RGCAW.js";
150
+ import "../../chunk-JETG3WEI.js";
151
+ import "../../chunk-VOME2TE7.js";
152
+ import "../../chunk-JVXATVAC.js";
153
+ import "../../chunk-B3VSXNTH.js";
154
+ import "../../chunk-ZQE7SP6P.js";
155
+ import "../../chunk-R6ARPREO.js";
156
+ import "../../chunk-2O45FRFQ.js";
157
+ import "../../chunk-SI4Y7NUG.js";
158
+ import "../../chunk-J2I3R3OV.js";
159
+ import "../../chunk-QO6KO6MN.js";
160
+ import "../../chunk-5KNRHIIF.js";
161
+ import "../../chunk-6JRAI4G5.js";
162
+ import "../../chunk-776WBOKL.js";
163
+ import "../../chunk-2FJ4LW7E.js";
164
+ import "../../chunk-YSYJCYHY.js";
165
+ import "../../chunk-5OM2H6RI.js";
166
+ import "../../chunk-ZUYCXCPW.js";
167
+ import "../../chunk-YVFNJE4E.js";
168
+ import "../../chunk-GI4AN2IZ.js";
169
+ import "../../chunk-WYWM2HSZ.js";
170
+ import "../../chunk-EAXUQEO5.js";
171
+ import "../../chunk-6SYFG6YY.js";
172
+ import "../../chunk-GPZXD762.js";
173
+ import "../../chunk-BK74U562.js";
174
+ import "../../chunk-VFQD57ZY.js";
175
+ import "../../chunk-CRTRMMJ7.js";
176
+ export {
177
+ RpSessionDetail
178
+ };
179
+ //# sourceMappingURL=rp-session-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/app/roleplay/types.ts
17
+ var types_exports = {};
18
+ module.exports = __toCommonJS(types_exports);
19
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/app/roleplay/types.ts"],"sourcesContent":["// 롤플레잉 \"세션 상세\" 컴포넌트의 공개 데이터 계약.\n//\n// 소비처(website / hr-admin / coach-op)가 각자 쿼리로 데이터를 fetch한 뒤\n// 이 형태로 주입한다. 컴포넌트는 데이터 패칭/라우팅/인증을 모른다.\n//\n// website RoleplaySessionDetail 을 기준(상위집합)으로 하되, hr-admin/coach-op 에\n// 없는 미디어 메타 필드는 optional 로 흡수한다.\n\nexport interface RpSessionDetailData {\n id: string;\n trainingSessionNum: number;\n scenarioId: string | null;\n scenarioTitle: string | null;\n characterId: string;\n characterTitle: string | null;\n totalScore: number | null;\n trainingTime: number | null;\n status: string | null;\n roleplayTrackId: string | null;\n // unknown 은 null 을 포함하나, 데이터 부재는 null 로 표기한다.\n reportData: unknown;\n // 평가 프레임워크 식별/단계 라벨 매핑용. 프레임워크 추가 시에도 프론트 무변경.\n reportType: string | null;\n guideline: unknown;\n // framework.displayMeta — { title?, description?, steps:[{order,key,initial,displayName,maxValue,description}] }.\n // 단계 표시 순서·이니셜·라벨·만점 + 프레임워크 제목/설명문의 단일 소스. 없으면 기존 동작 폴백.\n displayMeta?: unknown;\n embedLink: string | null;\n trainingLogURL: string | null;\n trainingVideoURL: string | null;\n // hr-admin/coach-op 타입에 없을 수 있어 optional 로 흡수.\n trainingAudioURL?: string | null;\n // 영상↔스크립트 싱크 가능 여부 판정용(영상/오디오 길이, 초). 미제공 시 싱크 불가.\n videoDurationSec?: number | null;\n audioDurationSec?: number | null;\n createdAt: string;\n}\n\nexport interface RpSessionHistoryItem {\n id: string;\n trainingSessionNum: number;\n totalScore: number | null;\n trainingTime: number | null;\n createdAt: string;\n}\n\n// STT 대화 스크립트 한 줄.\nexport type RpSessionScriptSpeaker = 'user' | 'partner';\n\nexport interface RpSessionScriptLine {\n speaker: RpSessionScriptSpeaker;\n text: string;\n // 발화 시작 시각(ms, STT 오디오 기준). 싱크 가능 세션에서 seek/하이라이트에 사용.\n startMs: number;\n}\n\nexport interface RpSessionScript {\n items: RpSessionScriptLine[];\n // STT 전체 길이(ms). 미디어 길이와 비교해 싱크 가능 여부 판정.\n durationMs: number;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,42 @@
1
+ interface RpSessionDetailData {
2
+ id: string;
3
+ trainingSessionNum: number;
4
+ scenarioId: string | null;
5
+ scenarioTitle: string | null;
6
+ characterId: string;
7
+ characterTitle: string | null;
8
+ totalScore: number | null;
9
+ trainingTime: number | null;
10
+ status: string | null;
11
+ roleplayTrackId: string | null;
12
+ reportData: unknown;
13
+ reportType: string | null;
14
+ guideline: unknown;
15
+ displayMeta?: unknown;
16
+ embedLink: string | null;
17
+ trainingLogURL: string | null;
18
+ trainingVideoURL: string | null;
19
+ trainingAudioURL?: string | null;
20
+ videoDurationSec?: number | null;
21
+ audioDurationSec?: number | null;
22
+ createdAt: string;
23
+ }
24
+ interface RpSessionHistoryItem {
25
+ id: string;
26
+ trainingSessionNum: number;
27
+ totalScore: number | null;
28
+ trainingTime: number | null;
29
+ createdAt: string;
30
+ }
31
+ type RpSessionScriptSpeaker = 'user' | 'partner';
32
+ interface RpSessionScriptLine {
33
+ speaker: RpSessionScriptSpeaker;
34
+ text: string;
35
+ startMs: number;
36
+ }
37
+ interface RpSessionScript {
38
+ items: RpSessionScriptLine[];
39
+ durationMs: number;
40
+ }
41
+
42
+ export type { RpSessionDetailData, RpSessionHistoryItem, RpSessionScript, RpSessionScriptLine, RpSessionScriptSpeaker };
@@ -0,0 +1,42 @@
1
+ interface RpSessionDetailData {
2
+ id: string;
3
+ trainingSessionNum: number;
4
+ scenarioId: string | null;
5
+ scenarioTitle: string | null;
6
+ characterId: string;
7
+ characterTitle: string | null;
8
+ totalScore: number | null;
9
+ trainingTime: number | null;
10
+ status: string | null;
11
+ roleplayTrackId: string | null;
12
+ reportData: unknown;
13
+ reportType: string | null;
14
+ guideline: unknown;
15
+ displayMeta?: unknown;
16
+ embedLink: string | null;
17
+ trainingLogURL: string | null;
18
+ trainingVideoURL: string | null;
19
+ trainingAudioURL?: string | null;
20
+ videoDurationSec?: number | null;
21
+ audioDurationSec?: number | null;
22
+ createdAt: string;
23
+ }
24
+ interface RpSessionHistoryItem {
25
+ id: string;
26
+ trainingSessionNum: number;
27
+ totalScore: number | null;
28
+ trainingTime: number | null;
29
+ createdAt: string;
30
+ }
31
+ type RpSessionScriptSpeaker = 'user' | 'partner';
32
+ interface RpSessionScriptLine {
33
+ speaker: RpSessionScriptSpeaker;
34
+ text: string;
35
+ startMs: number;
36
+ }
37
+ interface RpSessionScript {
38
+ items: RpSessionScriptLine[];
39
+ durationMs: number;
40
+ }
41
+
42
+ export type { RpSessionDetailData, RpSessionHistoryItem, RpSessionScript, RpSessionScriptLine, RpSessionScriptSpeaker };
@@ -0,0 +1,2 @@
1
+ import "../../chunk-OUP3VFXG.js";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/app/roleplay/utils/report-parse.ts
21
+ var report_parse_exports = {};
22
+ __export(report_parse_exports, {
23
+ parseReportData: () => parseReportData
24
+ });
25
+ module.exports = __toCommonJS(report_parse_exports);
26
+ var QUALITIES = ["\uCDA9\uC871", "\uBD80\uBD84\uCDA9\uC871", "\uBBF8\uD761"];
27
+ function isObject(v) {
28
+ return typeof v === "object" && v !== null && !Array.isArray(v);
29
+ }
30
+ function isUnknownArray(v) {
31
+ return Array.isArray(v);
32
+ }
33
+ function asString(v) {
34
+ if (typeof v !== "string") return null;
35
+ const t = v.trim();
36
+ return t.length > 0 ? t : null;
37
+ }
38
+ function asNumber(v) {
39
+ return typeof v === "number" && Number.isFinite(v) ? v : null;
40
+ }
41
+ function asQuality(v) {
42
+ var _a;
43
+ const t = asString(v);
44
+ if (t === null) return null;
45
+ return (_a = QUALITIES.find((q) => q === t)) != null ? _a : null;
46
+ }
47
+ function asGuidelineText(v) {
48
+ if (isUnknownArray(v)) {
49
+ const parts = v.map(asString).filter((s) => s !== null && s !== "-");
50
+ return parts.length > 0 ? parts.join("\n") : null;
51
+ }
52
+ const t = asString(v);
53
+ return t !== null && t !== "-" ? t : null;
54
+ }
55
+ function humanize(key) {
56
+ return key.split("_").filter((p) => p.length > 0).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
57
+ }
58
+ var STEP_SUFFIXES = [
59
+ "max_score",
60
+ "maxscore",
61
+ "max",
62
+ "score",
63
+ "basis",
64
+ "issue",
65
+ "improve",
66
+ "example",
67
+ "quality"
68
+ ];
69
+ function splitStepKey(key) {
70
+ for (const suffix of STEP_SUFFIXES) {
71
+ const tail = `_${suffix}`;
72
+ if (key.endsWith(tail) && key.length > tail.length) {
73
+ return { prefix: key.slice(0, -tail.length), suffix };
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+ function readGuidelineEntries(guideline) {
79
+ if (!isObject(guideline) || !isUnknownArray(guideline.value)) return [];
80
+ const entries = guideline.value.map((v) => {
81
+ if (!isObject(v)) return { title: null, description: null, example: null };
82
+ const title = asString(v.title);
83
+ return {
84
+ title: title === "-" ? null : title,
85
+ description: asGuidelineText(v.description),
86
+ example: asGuidelineText(v.example)
87
+ };
88
+ });
89
+ if (entries.every((e) => e.title === null)) return [];
90
+ return entries;
91
+ }
92
+ function buildFieldsMap(itemObj) {
93
+ var _a;
94
+ const order = [];
95
+ const fields = /* @__PURE__ */ new Map();
96
+ for (const [key, value] of Object.entries(itemObj)) {
97
+ const split = splitStepKey(key);
98
+ if (!split) continue;
99
+ if (!fields.has(split.prefix)) {
100
+ fields.set(split.prefix, /* @__PURE__ */ new Map());
101
+ order.push(split.prefix);
102
+ }
103
+ (_a = fields.get(split.prefix)) == null ? void 0 : _a.set(split.suffix, value);
104
+ }
105
+ return { order, fields };
106
+ }
107
+ function buildStep(key, f, meta) {
108
+ var _a, _b, _c;
109
+ const qualityRaw = f.get("quality");
110
+ return {
111
+ key,
112
+ label: meta.label,
113
+ initial: meta.initial,
114
+ description: meta.description,
115
+ idealExample: meta.idealExample,
116
+ score: asNumber(f.get("score")),
117
+ // reportData 의 실제 만점이 우선, 없으면 displayMeta.maxValue 폴백.
118
+ maxScore: (_c = asNumber((_b = (_a = f.get("max_score")) != null ? _a : f.get("maxscore")) != null ? _b : f.get("max"))) != null ? _c : meta.maxScoreFallback,
119
+ quality: asQuality(qualityRaw),
120
+ qualityLabel: asString(qualityRaw),
121
+ basis: asString(f.get("basis")),
122
+ issue: asString(f.get("issue")),
123
+ improve: asString(f.get("improve")),
124
+ example: asString(f.get("example"))
125
+ };
126
+ }
127
+ function extractSteps(itemObj, guideline, displaySteps) {
128
+ const { order, fields } = buildFieldsMap(itemObj);
129
+ const entries = readGuidelineEntries(guideline);
130
+ if (displaySteps.length > 0) {
131
+ const useGuideline2 = entries.length === displaySteps.length;
132
+ return displaySteps.map((ds, i) => {
133
+ var _a, _b, _c;
134
+ const f = (_a = fields.get(ds.key)) != null ? _a : /* @__PURE__ */ new Map();
135
+ const entry = useGuideline2 ? entries[i] : null;
136
+ const dsDescription = ds.description.trim().length > 0 ? ds.description : null;
137
+ return buildStep(ds.key, f, {
138
+ label: ds.displayName,
139
+ initial: ds.initial.trim().length > 0 ? ds.initial : null,
140
+ description: (_b = dsDescription != null ? dsDescription : entry == null ? void 0 : entry.description) != null ? _b : null,
141
+ idealExample: (_c = entry == null ? void 0 : entry.example) != null ? _c : null,
142
+ maxScoreFallback: ds.maxValue > 0 ? ds.maxValue : null
143
+ });
144
+ });
145
+ }
146
+ const useGuideline = entries.length === order.length;
147
+ return order.map((prefix, i) => {
148
+ var _a, _b, _c, _d;
149
+ const f = (_a = fields.get(prefix)) != null ? _a : /* @__PURE__ */ new Map();
150
+ const entry = useGuideline ? entries[i] : null;
151
+ return buildStep(prefix, f, {
152
+ label: (_b = entry == null ? void 0 : entry.title) != null ? _b : humanize(prefix),
153
+ initial: null,
154
+ description: (_c = entry == null ? void 0 : entry.description) != null ? _c : null,
155
+ idealExample: (_d = entry == null ? void 0 : entry.example) != null ? _d : null,
156
+ maxScoreFallback: null
157
+ });
158
+ });
159
+ }
160
+ function readDisplayMeta(raw) {
161
+ var _a, _b, _c, _d, _e;
162
+ if (!isObject(raw)) return { title: null, description: null, steps: [] };
163
+ const steps = [];
164
+ if (isUnknownArray(raw.steps)) {
165
+ for (const s of raw.steps) {
166
+ if (!isObject(s)) continue;
167
+ const key = asString(s.key);
168
+ if (key === null) continue;
169
+ steps.push({
170
+ order: (_a = asNumber(s.order)) != null ? _a : steps.length,
171
+ key,
172
+ initial: (_b = asString(s.initial)) != null ? _b : "",
173
+ displayName: (_c = asString(s.displayName)) != null ? _c : humanize(key),
174
+ maxValue: (_d = asNumber(s.maxValue)) != null ? _d : 0,
175
+ description: (_e = asString(s.description)) != null ? _e : ""
176
+ });
177
+ }
178
+ steps.sort((a, b) => a.order - b.order);
179
+ }
180
+ return {
181
+ title: asString(raw.title),
182
+ description: asString(raw.description),
183
+ steps
184
+ };
185
+ }
186
+ function flattenNumberedPairs(obj, titleBase, detailBase) {
187
+ var _a;
188
+ const out = [];
189
+ for (let n = 1; ; n += 1) {
190
+ const title = asString(obj[`${titleBase}${n}`]);
191
+ if (title === null) break;
192
+ out.push({ title, detail: (_a = asString(obj[`${detailBase}${n}`])) != null ? _a : "" });
193
+ }
194
+ return out;
195
+ }
196
+ var ANALYSIS_PAIR_CANDIDATES = [
197
+ ["title", "detail"],
198
+ ["improvement_title", "improvement_action"],
199
+ ["issue_title", "issue_detail"]
200
+ ];
201
+ function flattenAnalysis(source) {
202
+ if (!isUnknownArray(source)) return [];
203
+ const out = [];
204
+ for (const obj of source) {
205
+ if (!isObject(obj)) continue;
206
+ for (const [titleBase, detailBase] of ANALYSIS_PAIR_CANDIDATES) {
207
+ const items = flattenNumberedPairs(obj, titleBase, detailBase);
208
+ if (items.length > 0) {
209
+ out.push(...items);
210
+ break;
211
+ }
212
+ }
213
+ }
214
+ return out;
215
+ }
216
+ function flattenSkills(source) {
217
+ var _a, _b;
218
+ if (!isUnknownArray(source)) return [];
219
+ const out = [];
220
+ for (const obj of source) {
221
+ if (!isObject(obj)) continue;
222
+ for (let n = 1; ; n += 1) {
223
+ const title = asString(obj[`skill${n}`]);
224
+ if (title === null) break;
225
+ out.push({
226
+ title,
227
+ description: (_a = asString(obj[`description${n}`])) != null ? _a : "",
228
+ example: (_b = asString(obj[`example${n}`])) != null ? _b : ""
229
+ });
230
+ }
231
+ }
232
+ return out;
233
+ }
234
+ function readDeduction(summary) {
235
+ if (!summary || !isObject(summary.deduction)) return null;
236
+ const score = asNumber(summary.deduction.score);
237
+ const basis = asString(summary.deduction.basis);
238
+ if (score === null || basis === null) return null;
239
+ return { score, basis };
240
+ }
241
+ function unwrapOutputText(reportData) {
242
+ if (!isObject(reportData)) return {};
243
+ return isObject(reportData.output_text) ? reportData.output_text : reportData;
244
+ }
245
+ function findItemsArray(root) {
246
+ for (const [key, value] of Object.entries(root)) {
247
+ if (!key.endsWith("_items") || !isUnknownArray(value)) continue;
248
+ const first = value[0];
249
+ if (isObject(first)) return first;
250
+ }
251
+ return null;
252
+ }
253
+ function parseReportData(reportData, guideline, displayMeta) {
254
+ var _a, _b, _c, _d;
255
+ const root = unwrapOutputText(reportData);
256
+ const meta = readDisplayMeta(displayMeta);
257
+ const summary = isObject(root.summary) ? root.summary : null;
258
+ const comprehensive = isObject(root.comprehensive_analysis) ? root.comprehensive_analysis : null;
259
+ const comment = (_b = (_a = asString(comprehensive == null ? void 0 : comprehensive.comment)) != null ? _a : asString(summary == null ? void 0 : summary.comment)) != null ? _b : asString(summary == null ? void 0 : summary.basis);
260
+ const strengths = flattenAnalysis(
261
+ (_c = comprehensive == null ? void 0 : comprehensive.strengths) != null ? _c : summary == null ? void 0 : summary.good_point
262
+ );
263
+ const improvements = flattenAnalysis(
264
+ (_d = comprehensive == null ? void 0 : comprehensive.improvements) != null ? _d : summary == null ? void 0 : summary.improvement
265
+ );
266
+ const itemObj = findItemsArray(root);
267
+ const steps = itemObj ? extractSteps(itemObj, guideline, meta.steps) : [];
268
+ return {
269
+ frameworkTitle: meta.title,
270
+ frameworkDescription: meta.description,
271
+ todayDate: asString(root.todayDate),
272
+ totalScore: asNumber(summary == null ? void 0 : summary.total_score),
273
+ comment,
274
+ deduction: readDeduction(summary),
275
+ strengths,
276
+ improvements,
277
+ steps,
278
+ skills: flattenSkills(root.skills)
279
+ };
280
+ }
281
+ // Annotate the CommonJS export names for ESM import in node:
282
+ 0 && (module.exports = {
283
+ parseReportData
284
+ });
285
+ //# sourceMappingURL=report-parse.cjs.map