@hed-hog/lms 0.0.361 → 0.0.365

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 (434) hide show
  1. package/dist/bitcode-wallet/bitcode-wallet.service.d.ts +66 -0
  2. package/dist/bitcode-wallet/bitcode-wallet.service.d.ts.map +1 -1
  3. package/dist/bitcode-wallet/bitcode-wallet.service.js +91 -0
  4. package/dist/bitcode-wallet/bitcode-wallet.service.js.map +1 -1
  5. package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.d.ts +8 -0
  6. package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.d.ts.map +1 -0
  7. package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.js +40 -0
  8. package/dist/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.js.map +1 -0
  9. package/dist/class-group/class-group.controller.d.ts +16 -16
  10. package/dist/class-group/class-group.service.d.ts +12 -12
  11. package/dist/course/course-audio-transcription.service.d.ts +3 -2
  12. package/dist/course/course-audio-transcription.service.d.ts.map +1 -1
  13. package/dist/course/course-audio-transcription.service.js +49 -8
  14. package/dist/course/course-audio-transcription.service.js.map +1 -1
  15. package/dist/course/course-export-scorm12-worker.service.d.ts +21 -0
  16. package/dist/course/course-export-scorm12-worker.service.d.ts.map +1 -0
  17. package/dist/course/course-export-scorm12-worker.service.js +109 -0
  18. package/dist/course/course-export-scorm12-worker.service.js.map +1 -0
  19. package/dist/course/course-export-scorm12.service.d.ts +42 -0
  20. package/dist/course/course-export-scorm12.service.d.ts.map +1 -0
  21. package/dist/course/course-export-scorm12.service.js +628 -0
  22. package/dist/course/course-export-scorm12.service.js.map +1 -0
  23. package/dist/course/course-export.service.d.ts +84 -0
  24. package/dist/course/course-export.service.d.ts.map +1 -0
  25. package/dist/course/course-export.service.js +237 -0
  26. package/dist/course/course-export.service.js.map +1 -0
  27. package/dist/course/course-lesson.controller.d.ts +4 -0
  28. package/dist/course/course-lesson.controller.d.ts.map +1 -1
  29. package/dist/course/course-lesson.controller.js +10 -0
  30. package/dist/course/course-lesson.controller.js.map +1 -1
  31. package/dist/course/course-structure.controller.d.ts +24 -9
  32. package/dist/course/course-structure.controller.d.ts.map +1 -1
  33. package/dist/course/course-structure.controller.js +30 -3
  34. package/dist/course/course-structure.controller.js.map +1 -1
  35. package/dist/course/course-structure.service.d.ts +25 -3
  36. package/dist/course/course-structure.service.d.ts.map +1 -1
  37. package/dist/course/course-structure.service.js +234 -24
  38. package/dist/course/course-structure.service.js.map +1 -1
  39. package/dist/course/course-video-conversion.service.d.ts +8 -0
  40. package/dist/course/course-video-conversion.service.d.ts.map +1 -1
  41. package/dist/course/course-video-conversion.service.js +87 -51
  42. package/dist/course/course-video-conversion.service.js.map +1 -1
  43. package/dist/course/course-video-hls.service.d.ts +57 -0
  44. package/dist/course/course-video-hls.service.d.ts.map +1 -0
  45. package/dist/course/course-video-hls.service.js +767 -0
  46. package/dist/course/course-video-hls.service.js.map +1 -0
  47. package/dist/course/course.controller.d.ts +115 -11
  48. package/dist/course/course.controller.d.ts.map +1 -1
  49. package/dist/course/course.controller.js +66 -28
  50. package/dist/course/course.controller.js.map +1 -1
  51. package/dist/course/course.mcp-tools.js +1 -1
  52. package/dist/course/course.mcp-tools.js.map +1 -1
  53. package/dist/course/course.module.d.ts.map +1 -1
  54. package/dist/course/course.module.js +13 -0
  55. package/dist/course/course.module.js.map +1 -1
  56. package/dist/course/course.service.d.ts +112 -11
  57. package/dist/course/course.service.d.ts.map +1 -1
  58. package/dist/course/course.service.js +682 -72
  59. package/dist/course/course.service.js.map +1 -1
  60. package/dist/course/dto/cleanup-course-storage.dto.d.ts +6 -0
  61. package/dist/course/dto/cleanup-course-storage.dto.d.ts.map +1 -0
  62. package/dist/course/dto/cleanup-course-storage.dto.js +34 -0
  63. package/dist/course/dto/cleanup-course-storage.dto.js.map +1 -0
  64. package/dist/course/dto/cleanup-upload-history.dto.d.ts +9 -0
  65. package/dist/course/dto/cleanup-upload-history.dto.d.ts.map +1 -0
  66. package/dist/course/dto/cleanup-upload-history.dto.js +36 -0
  67. package/dist/course/dto/cleanup-upload-history.dto.js.map +1 -0
  68. package/dist/course/dto/create-course-bulk-job.dto.d.ts +5 -0
  69. package/dist/course/dto/create-course-bulk-job.dto.d.ts.map +1 -0
  70. package/dist/course/dto/create-course-bulk-job.dto.js +26 -0
  71. package/dist/course/dto/create-course-bulk-job.dto.js.map +1 -0
  72. package/dist/course/dto/create-course-export.dto.d.ts +14 -0
  73. package/dist/course/dto/create-course-export.dto.d.ts.map +1 -0
  74. package/dist/course/dto/create-course-export.dto.js +71 -0
  75. package/dist/course/dto/create-course-export.dto.js.map +1 -0
  76. package/dist/course/dto/create-course-structure-lesson.dto.d.ts +2 -2
  77. package/dist/course/dto/create-course-structure-lesson.dto.d.ts.map +1 -1
  78. package/dist/course/dto/create-course-structure-lesson.dto.js +3 -2
  79. package/dist/course/dto/create-course-structure-lesson.dto.js.map +1 -1
  80. package/dist/course/lms-bulk-upload-automation.service.d.ts +54 -0
  81. package/dist/course/lms-bulk-upload-automation.service.d.ts.map +1 -0
  82. package/dist/course/lms-bulk-upload-automation.service.js +537 -0
  83. package/dist/course/lms-bulk-upload-automation.service.js.map +1 -0
  84. package/dist/course/lms-bulk-upload-infra.service.d.ts +32 -0
  85. package/dist/course/lms-bulk-upload-infra.service.d.ts.map +1 -0
  86. package/dist/course/lms-bulk-upload-infra.service.js +301 -0
  87. package/dist/course/lms-bulk-upload-infra.service.js.map +1 -0
  88. package/dist/course/lms-bulk-upload.constants.d.ts +4 -0
  89. package/dist/course/lms-bulk-upload.constants.d.ts.map +1 -0
  90. package/dist/course/lms-bulk-upload.constants.js +7 -0
  91. package/dist/course/lms-bulk-upload.constants.js.map +1 -0
  92. package/dist/course/lms-bulk-upload.controller.d.ts +144 -1
  93. package/dist/course/lms-bulk-upload.controller.d.ts.map +1 -1
  94. package/dist/course/lms-bulk-upload.controller.js +114 -4
  95. package/dist/course/lms-bulk-upload.controller.js.map +1 -1
  96. package/dist/course/lms-bulk-upload.service.d.ts +153 -3
  97. package/dist/course/lms-bulk-upload.service.d.ts.map +1 -1
  98. package/dist/course/lms-bulk-upload.service.js +659 -21
  99. package/dist/course/lms-bulk-upload.service.js.map +1 -1
  100. package/dist/course/lms-setting.controller.d.ts +6 -2
  101. package/dist/course/lms-setting.controller.d.ts.map +1 -1
  102. package/dist/course/lms-setting.controller.js +25 -8
  103. package/dist/course/lms-setting.controller.js.map +1 -1
  104. package/dist/course/scorm12-schemas.d.ts +4 -0
  105. package/dist/course/scorm12-schemas.d.ts.map +1 -0
  106. package/dist/course/scorm12-schemas.js +9 -0
  107. package/dist/course/scorm12-schemas.js.map +1 -0
  108. package/dist/enterprise/enterprise.controller.d.ts +20 -20
  109. package/dist/enterprise/enterprise.service.d.ts +20 -20
  110. package/dist/enterprise/training/training-admin.controller.d.ts +11 -11
  111. package/dist/enterprise/training/training-admin.service.d.ts +11 -11
  112. package/dist/enterprise/training/training-instructor.controller.d.ts +2 -2
  113. package/dist/enterprise/training/training-instructor.service.d.ts +2 -2
  114. package/dist/enterprise/training/training-student.controller.d.ts +1 -1
  115. package/dist/enterprise/training/training-student.service.d.ts +52 -1
  116. package/dist/enterprise/training/training-student.service.d.ts.map +1 -1
  117. package/dist/enterprise/training/training-student.service.js +217 -4
  118. package/dist/enterprise/training/training-student.service.js.map +1 -1
  119. package/dist/enterprise/training/training-viewer.controller.d.ts +2 -2
  120. package/dist/evaluation/evaluation.controller.d.ts +8 -8
  121. package/dist/evaluation/evaluation.service.d.ts +26 -8
  122. package/dist/evaluation/evaluation.service.d.ts.map +1 -1
  123. package/dist/evaluation/evaluation.service.js +125 -0
  124. package/dist/evaluation/evaluation.service.js.map +1 -1
  125. package/dist/exam/dto/create-standalone-question.dto.d.ts +12 -0
  126. package/dist/exam/dto/create-standalone-question.dto.d.ts.map +1 -0
  127. package/dist/exam/dto/create-standalone-question.dto.js +70 -0
  128. package/dist/exam/dto/create-standalone-question.dto.js.map +1 -0
  129. package/dist/exam/exam.module.d.ts.map +1 -1
  130. package/dist/exam/exam.module.js +2 -1
  131. package/dist/exam/exam.module.js.map +1 -1
  132. package/dist/exam/exam.service.d.ts +21 -0
  133. package/dist/exam/exam.service.d.ts.map +1 -1
  134. package/dist/exam/exam.service.js +80 -0
  135. package/dist/exam/exam.service.js.map +1 -1
  136. package/dist/exam/question.controller.d.ts +27 -0
  137. package/dist/exam/question.controller.d.ts.map +1 -0
  138. package/dist/exam/question.controller.js +53 -0
  139. package/dist/exam/question.controller.js.map +1 -0
  140. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.d.ts +6 -0
  141. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.d.ts.map +1 -0
  142. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.js +34 -0
  143. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.js.map +1 -0
  144. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.d.ts +28 -0
  145. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.d.ts.map +1 -0
  146. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.js +123 -0
  147. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.js.map +1 -0
  148. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.d.ts +4 -0
  149. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.d.ts.map +1 -0
  150. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.js +22 -0
  151. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.js.map +1 -0
  152. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.d.ts +10 -0
  153. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.d.ts.map +1 -0
  154. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.js +52 -0
  155. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.js.map +1 -0
  156. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.d.ts +15 -0
  157. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.d.ts.map +1 -0
  158. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.js +86 -0
  159. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.js.map +1 -0
  160. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts +30 -0
  161. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts.map +1 -0
  162. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js +440 -0
  163. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js.map +1 -0
  164. package/dist/lesson-xp-map/lesson-xp-map.controller.d.ts +87 -0
  165. package/dist/lesson-xp-map/lesson-xp-map.controller.d.ts.map +1 -0
  166. package/dist/lesson-xp-map/lesson-xp-map.controller.js +185 -0
  167. package/dist/lesson-xp-map/lesson-xp-map.controller.js.map +1 -0
  168. package/dist/lesson-xp-map/lesson-xp-map.module.d.ts +3 -0
  169. package/dist/lesson-xp-map/lesson-xp-map.module.d.ts.map +1 -0
  170. package/dist/lesson-xp-map/lesson-xp-map.module.js +34 -0
  171. package/dist/lesson-xp-map/lesson-xp-map.module.js.map +1 -0
  172. package/dist/lesson-xp-map/lesson-xp-map.service.d.ts +84 -0
  173. package/dist/lesson-xp-map/lesson-xp-map.service.d.ts.map +1 -0
  174. package/dist/lesson-xp-map/lesson-xp-map.service.js +353 -0
  175. package/dist/lesson-xp-map/lesson-xp-map.service.js.map +1 -0
  176. package/dist/lesson-xp-map/lesson-xp-segment.controller.d.ts +10 -0
  177. package/dist/lesson-xp-map/lesson-xp-segment.controller.d.ts.map +1 -0
  178. package/dist/lesson-xp-map/lesson-xp-segment.controller.js +63 -0
  179. package/dist/lesson-xp-map/lesson-xp-segment.controller.js.map +1 -0
  180. package/dist/lesson-xp-map/lesson-xp-segment.service.d.ts +27 -0
  181. package/dist/lesson-xp-map/lesson-xp-segment.service.d.ts.map +1 -0
  182. package/dist/lesson-xp-map/lesson-xp-segment.service.js +194 -0
  183. package/dist/lesson-xp-map/lesson-xp-segment.service.js.map +1 -0
  184. package/dist/libraries/lms/tsconfig.tsbuildinfo +1 -0
  185. package/dist/lms-commerce-access.subscriber.d.ts +11 -0
  186. package/dist/lms-commerce-access.subscriber.d.ts.map +1 -0
  187. package/dist/lms-commerce-access.subscriber.js +74 -0
  188. package/dist/lms-commerce-access.subscriber.js.map +1 -0
  189. package/dist/lms.module.d.ts.map +1 -1
  190. package/dist/lms.module.js +21 -5
  191. package/dist/lms.module.js.map +1 -1
  192. package/dist/platforma/dto/update-profile.dto.d.ts +17 -0
  193. package/dist/platforma/dto/update-profile.dto.d.ts.map +1 -0
  194. package/dist/platforma/dto/update-profile.dto.js +87 -0
  195. package/dist/platforma/dto/update-profile.dto.js.map +1 -0
  196. package/dist/platforma/platforma-video.service.d.ts +39 -0
  197. package/dist/platforma/platforma-video.service.d.ts.map +1 -0
  198. package/dist/platforma/platforma-video.service.js +301 -0
  199. package/dist/platforma/platforma-video.service.js.map +1 -0
  200. package/dist/platforma/platforma.controller.d.ts +182 -1
  201. package/dist/platforma/platforma.controller.d.ts.map +1 -1
  202. package/dist/platforma/platforma.controller.js +243 -2
  203. package/dist/platforma/platforma.controller.js.map +1 -1
  204. package/dist/platforma/platforma.service.d.ts +27 -0
  205. package/dist/platforma/platforma.service.d.ts.map +1 -0
  206. package/dist/platforma/platforma.service.js +274 -0
  207. package/dist/platforma/platforma.service.js.map +1 -0
  208. package/dist/student-xp/dto/grant-skill-card-xp.dto.d.ts +5 -0
  209. package/dist/student-xp/dto/grant-skill-card-xp.dto.d.ts.map +1 -0
  210. package/dist/student-xp/dto/grant-skill-card-xp.dto.js +26 -0
  211. package/dist/student-xp/dto/grant-skill-card-xp.dto.js.map +1 -0
  212. package/dist/student-xp/student-xp.controller.d.ts +56 -0
  213. package/dist/student-xp/student-xp.controller.d.ts.map +1 -0
  214. package/dist/student-xp/student-xp.controller.js +138 -0
  215. package/dist/student-xp/student-xp.controller.js.map +1 -0
  216. package/dist/student-xp/student-xp.module.d.ts +3 -0
  217. package/dist/student-xp/student-xp.module.d.ts.map +1 -0
  218. package/dist/student-xp/student-xp.module.js +25 -0
  219. package/dist/student-xp/student-xp.module.js.map +1 -0
  220. package/dist/student-xp/student-xp.service.d.ts +81 -0
  221. package/dist/student-xp/student-xp.service.d.ts.map +1 -0
  222. package/dist/student-xp/student-xp.service.js +247 -0
  223. package/dist/student-xp/student-xp.service.js.map +1 -0
  224. package/dist/xp-catalog/dto/create-xp-area.dto.d.ts +12 -0
  225. package/dist/xp-catalog/dto/create-xp-area.dto.d.ts.map +1 -0
  226. package/dist/xp-catalog/dto/create-xp-area.dto.js +63 -0
  227. package/dist/xp-catalog/dto/create-xp-area.dto.js.map +1 -0
  228. package/dist/xp-catalog/dto/create-xp-learning-type.dto.d.ts +11 -0
  229. package/dist/xp-catalog/dto/create-xp-learning-type.dto.d.ts.map +1 -0
  230. package/dist/xp-catalog/dto/create-xp-learning-type.dto.js +57 -0
  231. package/dist/xp-catalog/dto/create-xp-learning-type.dto.js.map +1 -0
  232. package/dist/xp-catalog/dto/create-xp-skill.dto.d.ts +11 -0
  233. package/dist/xp-catalog/dto/create-xp-skill.dto.d.ts.map +1 -0
  234. package/dist/xp-catalog/dto/create-xp-skill.dto.js +57 -0
  235. package/dist/xp-catalog/dto/create-xp-skill.dto.js.map +1 -0
  236. package/dist/xp-catalog/dto/update-xp-area.dto.d.ts +12 -0
  237. package/dist/xp-catalog/dto/update-xp-area.dto.d.ts.map +1 -0
  238. package/dist/xp-catalog/dto/update-xp-area.dto.js +66 -0
  239. package/dist/xp-catalog/dto/update-xp-area.dto.js.map +1 -0
  240. package/dist/xp-catalog/dto/update-xp-learning-type.dto.d.ts +11 -0
  241. package/dist/xp-catalog/dto/update-xp-learning-type.dto.d.ts.map +1 -0
  242. package/dist/xp-catalog/dto/update-xp-learning-type.dto.js +60 -0
  243. package/dist/xp-catalog/dto/update-xp-learning-type.dto.js.map +1 -0
  244. package/dist/xp-catalog/dto/update-xp-skill.dto.d.ts +11 -0
  245. package/dist/xp-catalog/dto/update-xp-skill.dto.d.ts.map +1 -0
  246. package/dist/xp-catalog/dto/update-xp-skill.dto.js +60 -0
  247. package/dist/xp-catalog/dto/update-xp-skill.dto.js.map +1 -0
  248. package/dist/xp-catalog/xp-area.controller.d.ts +25 -0
  249. package/dist/xp-catalog/xp-area.controller.d.ts.map +1 -0
  250. package/dist/xp-catalog/xp-area.controller.js +105 -0
  251. package/dist/xp-catalog/xp-area.controller.js.map +1 -0
  252. package/dist/xp-catalog/xp-area.service.d.ts +35 -0
  253. package/dist/xp-catalog/xp-area.service.d.ts.map +1 -0
  254. package/dist/xp-catalog/xp-area.service.js +168 -0
  255. package/dist/xp-catalog/xp-area.service.js.map +1 -0
  256. package/dist/xp-catalog/xp-catalog.module.d.ts +3 -0
  257. package/dist/xp-catalog/xp-catalog.module.d.ts.map +1 -0
  258. package/dist/xp-catalog/xp-catalog.module.js +29 -0
  259. package/dist/xp-catalog/xp-catalog.module.js.map +1 -0
  260. package/dist/xp-catalog/xp-learning-type.controller.d.ts +20 -0
  261. package/dist/xp-catalog/xp-learning-type.controller.d.ts.map +1 -0
  262. package/dist/xp-catalog/xp-learning-type.controller.js +96 -0
  263. package/dist/xp-catalog/xp-learning-type.controller.js.map +1 -0
  264. package/dist/xp-catalog/xp-learning-type.service.d.ts +30 -0
  265. package/dist/xp-catalog/xp-learning-type.service.d.ts.map +1 -0
  266. package/dist/xp-catalog/xp-learning-type.service.js +146 -0
  267. package/dist/xp-catalog/xp-learning-type.service.js.map +1 -0
  268. package/dist/xp-catalog/xp-skill.controller.d.ts +26 -0
  269. package/dist/xp-catalog/xp-skill.controller.d.ts.map +1 -0
  270. package/dist/xp-catalog/xp-skill.controller.js +113 -0
  271. package/dist/xp-catalog/xp-skill.controller.js.map +1 -0
  272. package/dist/xp-catalog/xp-skill.service.d.ts +37 -0
  273. package/dist/xp-catalog/xp-skill.service.d.ts.map +1 -0
  274. package/dist/xp-catalog/xp-skill.service.js +174 -0
  275. package/dist/xp-catalog/xp-skill.service.js.map +1 -0
  276. package/hedhog/data/evaluation_topic.yaml +17 -0
  277. package/hedhog/data/menu.yaml +91 -7
  278. package/hedhog/data/queue_definition.yaml +48 -0
  279. package/hedhog/data/route.yaml +511 -29
  280. package/hedhog/data/setting_group.yaml +20 -20
  281. package/hedhog/data/xp_area.yaml +164 -0
  282. package/hedhog/data/xp_learning_type.yaml +131 -0
  283. package/hedhog/data/xp_skill.yaml +1834 -0
  284. package/hedhog/frontend/app/achievements/page.tsx.ejs +108 -118
  285. package/hedhog/frontend/app/bitcodes/page.tsx.ejs +22 -34
  286. package/hedhog/frontend/app/bulk-upload-sessions/page.tsx.ejs +1749 -0
  287. package/hedhog/frontend/app/certificates/models/page.tsx.ejs +21 -45
  288. package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +40 -74
  289. package/hedhog/frontend/app/classes/page.tsx.ejs +56 -85
  290. package/hedhog/frontend/app/courses/[id]/_components/CourseDangerZoneCard.tsx.ejs +3 -2
  291. package/hedhog/frontend/app/courses/[id]/_components/CourseMediaCard.tsx.ejs +48 -5
  292. package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +73 -8
  293. package/hedhog/frontend/app/courses/[id]/structure/_components/course-export-sheet.tsx.ejs +420 -0
  294. package/hedhog/frontend/app/courses/[id]/structure/_components/course-exports-tab.tsx.ejs +308 -0
  295. package/hedhog/frontend/app/courses/[id]/structure/_components/course-operations-tab.tsx.ejs +19 -2
  296. package/hedhog/frontend/app/courses/[id]/structure/_components/course-overview-tab.tsx.ejs +1172 -0
  297. package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree-dnd.tsx.ejs +16 -0
  298. package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree.tsx.ejs +2 -0
  299. package/hedhog/frontend/app/courses/[id]/structure/_components/course-xp-overview-tab.tsx.ejs +623 -0
  300. package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson-xp-tab.tsx.ejs +1458 -0
  301. package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson.tsx.ejs +87 -46
  302. package/hedhog/frontend/app/courses/[id]/structure/_components/detail-panel.tsx.ejs +8 -3
  303. package/hedhog/frontend/app/courses/[id]/structure/_components/detail-session.tsx.ejs +31 -8
  304. package/hedhog/frontend/app/courses/[id]/structure/_components/drag-overlay.tsx.ejs +16 -9
  305. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +618 -480
  306. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +672 -737
  307. package/hedhog/frontend/app/courses/[id]/structure/_components/mock-data.ts.ejs +1 -2
  308. package/hedhog/frontend/app/courses/[id]/structure/_components/sortable-tree-row.tsx.ejs +3 -0
  309. package/hedhog/frontend/app/courses/[id]/structure/_components/store.ts.ejs +1 -0
  310. package/hedhog/frontend/app/courses/[id]/structure/_components/tree-display-settings-popover.tsx.ejs +101 -85
  311. package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row-lesson.tsx.ejs +24 -10
  312. package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row.tsx.ejs +3 -0
  313. package/hedhog/frontend/app/courses/[id]/structure/_components/types.ts.ejs +1 -1
  314. package/hedhog/frontend/app/courses/[id]/structure/_components/use-tree-display-settings.ts.ejs +7 -1
  315. package/hedhog/frontend/app/courses/[id]/structure/_components/xp-premium-pills.tsx.ejs +44 -0
  316. package/hedhog/frontend/app/courses/[id]/structure/_data/adapters/course-structure.adapter.ts.ejs +6 -10
  317. package/hedhog/frontend/app/courses/[id]/structure/_data/services/course-structure.service.ts.ejs +49 -0
  318. package/hedhog/frontend/app/courses/[id]/structure/_data/types/api-course.types.ts.ejs +4 -3
  319. package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-content-overview.ts.ejs +53 -0
  320. package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-exports.ts.ejs +106 -0
  321. package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-structure-mutations.ts.ejs +80 -1
  322. package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-xp-overview.ts.ejs +76 -0
  323. package/hedhog/frontend/app/courses/[id]/structure/_data/use-lesson-xp-map.ts.ejs +128 -0
  324. package/hedhog/frontend/app/courses/[id]/structure/_data/use-lms-settings-query.ts.ejs +0 -2
  325. package/hedhog/frontend/app/courses/[id]/structure/_data/use-transcription-segments.ts.ejs +30 -0
  326. package/hedhog/frontend/app/courses/[id]/structure/_utils/xp-color-config.ts.ejs +115 -0
  327. package/hedhog/frontend/app/courses/_components/CourseDeleteDialog.tsx.ejs +223 -0
  328. package/hedhog/frontend/app/courses/_components/CourseRowActions.tsx.ejs +89 -0
  329. package/hedhog/frontend/app/courses/page.tsx.ejs +445 -230
  330. package/hedhog/frontend/app/enterprise/page.tsx.ejs +39 -63
  331. package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +53 -77
  332. package/hedhog/frontend/app/exams/page.tsx.ejs +54 -90
  333. package/hedhog/frontend/app/instructor-skills/page.tsx.ejs +23 -36
  334. package/hedhog/frontend/app/instructors/page.tsx.ejs +72 -81
  335. package/hedhog/frontend/app/paths/page.tsx.ejs +40 -68
  336. package/hedhog/frontend/app/training/page.tsx.ejs +40 -68
  337. package/hedhog/frontend/app/xp/areas/page.tsx.ejs +782 -0
  338. package/hedhog/frontend/app/xp/learning-types/page.tsx.ejs +690 -0
  339. package/hedhog/frontend/app/xp/skills/page.tsx.ejs +811 -0
  340. package/hedhog/frontend/messages/en.json +412 -31
  341. package/hedhog/frontend/messages/pt.json +412 -31
  342. package/hedhog/table/course_export.yaml +62 -0
  343. package/hedhog/table/lesson_xp_map.yaml +50 -0
  344. package/hedhog/table/lesson_xp_segment.yaml +40 -0
  345. package/hedhog/table/lesson_xp_segment_area.yaml +24 -0
  346. package/hedhog/table/lesson_xp_segment_learning_type.yaml +24 -0
  347. package/hedhog/table/lesson_xp_segment_skill.yaml +24 -0
  348. package/hedhog/table/lms_bulk_upload_item.yaml +44 -0
  349. package/hedhog/table/lms_bulk_upload_session.yaml +42 -0
  350. package/hedhog/table/student_area_xp.yaml +30 -0
  351. package/hedhog/table/student_learning_type_xp.yaml +30 -0
  352. package/hedhog/table/student_skill_xp.yaml +30 -0
  353. package/hedhog/table/student_xp_event.yaml +34 -0
  354. package/hedhog/table/xp_area.yaml +39 -0
  355. package/hedhog/table/xp_learning_type.yaml +34 -0
  356. package/hedhog/table/xp_skill.yaml +39 -0
  357. package/package.json +13 -8
  358. package/src/bitcode-wallet/bitcode-wallet.service.ts +152 -0
  359. package/src/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.ts +32 -0
  360. package/src/course/course-audio-transcription.service.ts +58 -21
  361. package/src/course/course-export-scorm12-worker.service.ts +124 -0
  362. package/src/course/course-export-scorm12.service.ts +668 -0
  363. package/src/course/course-export.service.ts +280 -0
  364. package/src/course/course-lesson.controller.ts +6 -1
  365. package/src/course/course-structure.controller.ts +23 -1
  366. package/src/course/course-structure.service.ts +273 -7
  367. package/src/course/course-video-conversion.service.ts +113 -75
  368. package/src/course/course-video-hls.service.ts +946 -0
  369. package/src/course/course.controller.ts +54 -21
  370. package/src/course/course.mcp-tools.ts +1 -1
  371. package/src/course/course.module.ts +13 -0
  372. package/src/course/course.service.ts +906 -76
  373. package/src/course/dto/cleanup-course-storage.dto.ts +23 -0
  374. package/src/course/dto/cleanup-upload-history.dto.ts +26 -0
  375. package/src/course/dto/create-course-bulk-job.dto.ts +10 -0
  376. package/src/course/dto/create-course-export.dto.ts +56 -0
  377. package/src/course/dto/create-course-structure-lesson.dto.ts +4 -3
  378. package/src/course/lms-bulk-upload-automation.service.ts +707 -0
  379. package/src/course/lms-bulk-upload-infra.service.ts +360 -0
  380. package/src/course/lms-bulk-upload.constants.ts +5 -0
  381. package/src/course/lms-bulk-upload.controller.ts +110 -4
  382. package/src/course/lms-bulk-upload.service.ts +1092 -204
  383. package/src/course/lms-setting.controller.ts +26 -8
  384. package/src/course/scorm12-schemas.ts +9 -0
  385. package/src/enterprise/training/training-student.service.ts +221 -2
  386. package/src/evaluation/evaluation.service.ts +123 -0
  387. package/src/exam/dto/create-standalone-question.dto.ts +66 -0
  388. package/src/exam/exam.module.ts +2 -1
  389. package/src/exam/exam.service.ts +86 -0
  390. package/src/exam/question.controller.ts +28 -0
  391. package/src/lesson-xp-map/dto/create-lesson-xp-map.dto.ts +17 -0
  392. package/src/lesson-xp-map/dto/create-lesson-xp-segment.dto.ts +102 -0
  393. package/src/lesson-xp-map/dto/review-lesson-xp-map.dto.ts +7 -0
  394. package/src/lesson-xp-map/dto/update-lesson-xp-map.dto.ts +36 -0
  395. package/src/lesson-xp-map/dto/update-lesson-xp-segment.dto.ts +78 -0
  396. package/src/lesson-xp-map/lesson-xp-ai-calculation.service.ts +570 -0
  397. package/src/lesson-xp-map/lesson-xp-map.controller.ts +116 -0
  398. package/src/lesson-xp-map/lesson-xp-map.module.ts +21 -0
  399. package/src/lesson-xp-map/lesson-xp-map.service.ts +442 -0
  400. package/src/lesson-xp-map/lesson-xp-segment.controller.ts +36 -0
  401. package/src/lesson-xp-map/lesson-xp-segment.service.ts +229 -0
  402. package/src/lms-commerce-access.subscriber.ts +88 -0
  403. package/src/lms.module.ts +21 -5
  404. package/src/platforma/dto/update-profile.dto.ts +59 -0
  405. package/src/platforma/platforma-video.service.ts +346 -0
  406. package/src/platforma/platforma.controller.ts +152 -3
  407. package/src/platforma/platforma.service.ts +268 -0
  408. package/src/student-xp/dto/grant-skill-card-xp.dto.ts +10 -0
  409. package/src/student-xp/student-xp.controller.ts +92 -0
  410. package/src/student-xp/student-xp.module.ts +12 -0
  411. package/src/student-xp/student-xp.service.ts +318 -0
  412. package/src/xp-catalog/dto/create-xp-area.dto.ts +40 -0
  413. package/src/xp-catalog/dto/create-xp-learning-type.dto.ts +35 -0
  414. package/src/xp-catalog/dto/create-xp-skill.dto.ts +35 -0
  415. package/src/xp-catalog/dto/update-xp-area.dto.ts +43 -0
  416. package/src/xp-catalog/dto/update-xp-learning-type.dto.ts +38 -0
  417. package/src/xp-catalog/dto/update-xp-skill.dto.ts +38 -0
  418. package/src/xp-catalog/xp-area.controller.ts +64 -0
  419. package/src/xp-catalog/xp-area.service.ts +196 -0
  420. package/src/xp-catalog/xp-catalog.module.ts +16 -0
  421. package/src/xp-catalog/xp-learning-type.controller.ts +59 -0
  422. package/src/xp-catalog/xp-learning-type.service.ts +170 -0
  423. package/src/xp-catalog/xp-skill.controller.ts +71 -0
  424. package/src/xp-catalog/xp-skill.service.ts +205 -0
  425. package/hedhog/data/video_resolution_profile.yaml +0 -7
  426. package/hedhog/frontend/app/video-resolution-profiles/page.tsx.ejs +0 -607
  427. package/hedhog/table/course_video_resolution_profile.yaml +0 -22
  428. package/hedhog/table/video_resolution_profile.yaml +0 -18
  429. package/src/video-resolution-profile/dto/create-video-resolution-profile.dto.ts +0 -16
  430. package/src/video-resolution-profile/dto/update-video-resolution-profile.dto.ts +0 -16
  431. package/src/video-resolution-profile/video-resolution-profile.controller.ts +0 -62
  432. package/src/video-resolution-profile/video-resolution-profile.mcp-tools.ts +0 -128
  433. package/src/video-resolution-profile/video-resolution-profile.module.ts +0 -13
  434. package/src/video-resolution-profile/video-resolution-profile.service.ts +0 -117
@@ -422,8 +422,9 @@
422
422
  },
423
423
  "structureEditor": {
424
424
  "tabs": {
425
- "structure": "Estrutura",
426
- "about": "Sobre",
425
+ "overview": "Visão Geral",
426
+ "details": "Detalhes",
427
+ "xp": "XP",
427
428
  "media": "Mídia",
428
429
  "resources": "Recursos",
429
430
  "extra": "Extra",
@@ -493,6 +494,85 @@
493
494
  }
494
495
  }
495
496
  },
497
+ "xpOverview": {
498
+ "emptyTitle": "Sem dados de XP agregados",
499
+ "emptyDescription": "Calcule o XP das aulas para visualizar o panorama geral do curso por áreas macro, skills e tipos de aprendizado.",
500
+ "errorTitle": "Não foi possível carregar o overview de XP",
501
+ "errorDescription": "Tente novamente em alguns instantes. Quando houver mapas de XP disponíveis, esta aba exibirá a consolidação do curso.",
502
+ "kpis": {
503
+ "totalXp": "XP total",
504
+ "totalXpDescription": "Soma do XP já calculado nas aulas do curso",
505
+ "mappedLessons": "Aulas mapeadas",
506
+ "mappedLessonsDescription": "Aulas que já possuem mapa de XP disponível",
507
+ "segments": "Segmentos válidos",
508
+ "segmentsDescription": "Trechos das aulas que concedem XP",
509
+ "avgXpPerMappedLesson": "XP médio por aula",
510
+ "avgXpPerMappedLessonDescription": "Média considerando apenas aulas com mapa"
511
+ },
512
+ "charts": {
513
+ "lessonDistribution": {
514
+ "title": "Distribuição por aula",
515
+ "description": "Quais aulas mais concentram XP dentro do curso"
516
+ },
517
+ "lessons": {
518
+ "metricXp": "XP da aula",
519
+ "lessonFallback": "Aula sem título"
520
+ },
521
+ "macroAreas": {
522
+ "title": "Ângulos macro por área",
523
+ "description": "Leitura radial das áreas macro com maior peso no curso"
524
+ },
525
+ "skills": {
526
+ "title": "Skills predominantes",
527
+ "description": "Ranking das skills mais recorrentes no conjunto das aulas"
528
+ },
529
+ "learningTypes": {
530
+ "title": "Tipos de aprendizado",
531
+ "description": "Visão proporcional dos formatos de aprendizagem mais usados no curso",
532
+ "metricXp": "XP agregado",
533
+ "metricMultiplier": "Multiplicador"
534
+ }
535
+ },
536
+ "table": {
537
+ "title": "Leitura por aula",
538
+ "description": "Resumo das aulas consideradas na consolidação do XP do curso",
539
+ "segments": "segmentos",
540
+ "lessonCodeFallback": "Aula #{id}"
541
+ }
542
+ },
543
+ "courseOverview": {
544
+ "errorTitle": "Não foi possível carregar a visão geral",
545
+ "errorDescription": "Tente novamente em instantes.",
546
+ "kpis": {
547
+ "modules": "Módulos",
548
+ "modulesDescription": "Total de módulos do curso",
549
+ "lessons": "Aulas",
550
+ "lessonsDescription": "Total de aulas em todos os módulos",
551
+ "extractedImages": "Imagens extraídas",
552
+ "extractedImagesDescription": "Capturas de frame extraídas das aulas de vídeo",
553
+ "resourceFiles": "Arquivos de recursos",
554
+ "resourceFilesDescription": "Arquivos para download vinculados às aulas"
555
+ },
556
+ "lessonTypes": {
557
+ "title": "Tipos de aulas",
558
+ "description": "Distribuição de todas as aulas por tipo"
559
+ },
560
+ "videos": {
561
+ "title": "Aulas de vídeo",
562
+ "description": "Cobertura de transcrição e XP nas aulas de vídeo",
563
+ "total": "Aulas de vídeo",
564
+ "withTranscription": "Com transcrição",
565
+ "withXp": "Com XP"
566
+ },
567
+ "areas": {
568
+ "title": "Áreas macro",
569
+ "description": "Áreas mapeadas nas aulas, ordenadas por peso de XP"
570
+ },
571
+ "skills": {
572
+ "title": "Skills",
573
+ "description": "Skills mapeadas nas aulas, ordenadas por peso de XP"
574
+ }
575
+ },
496
576
  "footer": {
497
577
  "cancel": "Cancelar",
498
578
  "newSession": "Nova sessão",
@@ -508,6 +588,8 @@
508
588
  "statusProgress": "{completed}/{total} itens obrigatórios concluídos",
509
589
  "ready": "Pronto para publicar",
510
590
  "notReady": "Ainda não pronto",
591
+ "publishButton": "Publicar curso",
592
+ "alreadyPublished": "Curso já publicado",
511
593
  "items": {
512
594
  "title": "Título comercial preenchido",
513
595
  "description": "Descrição pública preenchida",
@@ -632,6 +714,8 @@
632
714
  "level": "Nível",
633
715
  "status": "Status",
634
716
  "categories": "Categorias",
717
+ "sessions": "Sessões",
718
+ "lessons": "Aulas",
635
719
  "students": "Alunos"
636
720
  },
637
721
  "empty": {
@@ -770,8 +854,24 @@
770
854
  "title": "Confirmar Exclusão",
771
855
  "description": "Tem certeza que deseja excluir o curso",
772
856
  "warning": "Este curso possui {count} aluno(s) matriculado(s). A exclusão é irreversível.",
857
+ "archiveFirst": "Arquive o curso para habilitar a exclusão completa.",
858
+ "archiveReady": "Curso arquivado. A exclusão completa já pode ser iniciada.",
859
+ "relatedContentWarning": "Serão excluídos em background todos os vídeos, áudios, materiais e demais arquivos relacionados ao curso.",
860
+ "impactTitle": "Impacto da exclusão",
861
+ "impactLoading": "Carregando o volume de arquivos e armazenamento que será removido...",
862
+ "impact": {
863
+ "files": "Arquivos",
864
+ "storage": "Armazenamento",
865
+ "students": "Alunos"
866
+ },
867
+ "expectedNameLabel": "Nome exato que deve ser digitado",
868
+ "confirmationLabel": "Digite o nome exato do curso para confirmar:",
869
+ "confirmationPlaceholder": "Nome do curso",
870
+ "confirmationHint": "Digite o nome completo e exato do curso acima.",
773
871
  "actions": {
774
872
  "cancel": "Cancelar",
873
+ "archive": "Arquivar",
874
+ "archived": "Arquivado",
775
875
  "delete": "Excluir Curso"
776
876
  }
777
877
  },
@@ -779,13 +879,22 @@
779
879
  "courseUpdated": "Curso atualizado com sucesso!",
780
880
  "courseCreated": "Curso criado com sucesso! Redirecionando...",
781
881
  "courseRemoved": "Curso \"{title}\" removido.",
882
+ "courseArchived": "Curso \"{title}\" arquivado com sucesso.",
883
+ "courseArchiveError": "Não foi possível arquivar o curso.",
884
+ "courseDeleteQueued": "Exclusão do curso \"{title}\" iniciada. {files} arquivo(s) serão removidos em background.",
885
+ "courseDeleteQueueError": "Não foi possível iniciar a exclusão assíncrona do curso.",
886
+ "courseDeleteImpactLoadError": "Não foi possível carregar o impacto da exclusão do curso.",
782
887
  "coursesRemoved": "{count} curso(s) removido(s).",
783
888
  "coursesArchived": "{count} curso(s) arquivado(s).",
784
889
  "deleteOnlyArchived": "Apenas cursos arquivados podem ser excluídos.",
785
890
  "bulkDeleteArchivedOnly": "Somente cursos arquivados selecionados serão excluídos.",
891
+ "bulkDeleteUseSingleFlow": "Use a exclusão individual para revisar o impacto e acompanhar o job assíncrono.",
786
892
  "codeCopied": "Código \"{code}\" copiado."
787
893
  },
788
894
  "StructurePage": {
895
+ "common": {
896
+ "all": "Todos"
897
+ },
789
898
  "pageHeader": {
790
899
  "title": "Estrutura do Curso",
791
900
  "description": "{sessions} sessões - {lessons} aulas - {hours}h {minutes}min de conteúdo"
@@ -816,6 +925,10 @@
816
925
  "action": "Criar Primeira Sessão"
817
926
  },
818
927
  "loading": "Carregando estrutura do curso",
928
+ "error": {
929
+ "loadFailed": "Não foi possível carregar a estrutura do curso.",
930
+ "tryAgain": "Tentar novamente"
931
+ },
819
932
  "dragHandle": {
820
933
  "disabled": "Limpe a busca para reordenar",
821
934
  "enabled": "Arrastar para reordenar"
@@ -950,6 +1063,10 @@
950
1063
  "showTranscriptionIndicator": {
951
1064
  "label": "Transcrição",
952
1065
  "description": "Ícone quando vídeo tem transcrição"
1066
+ },
1067
+ "showXpCalculatedIndicator": {
1068
+ "label": "XP calculado",
1069
+ "description": "Ícone quando a aula já possui mapa de XP"
953
1070
  }
954
1071
  },
955
1072
  "lessonRow": {
@@ -963,7 +1080,8 @@
963
1080
  "resourcesAria": "{count} recursos",
964
1081
  "uploadedVideos": "{count} vídeo(s) enviado(s)",
965
1082
  "uploadedVideosAria": "{count} vídeos enviados",
966
- "hasTranscription": "Possui transcrição"
1083
+ "hasTranscription": "Possui transcrição",
1084
+ "xpCalculated": "XP calculado"
967
1085
  },
968
1086
  "sessionRow": {
969
1087
  "collapse": "Recolher sessão",
@@ -1079,38 +1197,43 @@
1079
1197
  "removeTranscriptionSegment": "Remover trecho {count}",
1080
1198
  "transcriptionAcceptedFormats": "Formatos aceitos: mm:ss e hh:mm:ss.",
1081
1199
  "resourcesCount": "{count} recurso(s)",
1200
+ "filterBy": "Filtrar por",
1201
+ "resourceType": "Tipo",
1202
+ "resourceTypes": {
1203
+ "supplementary_material": "Material complementar",
1204
+ "student_download": "Download do aluno",
1205
+ "attachment": "Anexo",
1206
+ "document": "Documento",
1207
+ "lesson_audio": "Áudio da aula"
1208
+ },
1082
1209
  "addResource": "Adicionar recurso",
1083
1210
  "noResources": "Nenhum recurso adicionado",
1084
- "fileStorageVideosByResolution": "Vídeos por resolução (File Storage)",
1085
- "videoResolutionPlaceholder": "Ex.: 1080p",
1086
- "uploadVideoForResolution": "Enviar vídeo para esta resolução",
1087
- "noResolutionVideosYet": "Nenhum vídeo por resolução enviado ainda.",
1088
- "loadingVideoProfiles": "Carregando perfis de vídeo do curso...",
1089
- "videoProfilesLoadError": "Não foi possível carregar os perfis de vídeo do curso.",
1090
- "retryLoadVideoProfiles": "Tentar carregar novamente",
1091
- "noVideoProfilesConfigured": "Configure os perfis de vídeo na aba Resoluções do curso antes de anexar vídeos File Storage.",
1211
+ "hlsStatusTitle": "Streaming HLS",
1212
+ "hlsStatusReady": "Streaming disponível para os alunos.",
1213
+ "hlsStatusProcessing": "Processando vídeo...",
1214
+ "hlsStatusPending": "Nenhum vídeo processado ainda.",
1092
1215
  "originalVideoTitle": "Vídeo original em alta resolução",
1093
- "originalVideoHint": "Envie um original para gerar automaticamente os vídeos dos perfis do curso.",
1094
- "originalVideoPurpose": "Este arquivo original é usado apenas para gerar as versões de vídeo do curso.",
1095
- "fileStorageVideoHint": "Use o vídeo original abaixo para gerar automaticamente as versões por perfil do curso.",
1096
- "uploadOriginalForConversion": "Enviar original para conversão",
1216
+ "originalVideoHint": "Envie um original para gerar automaticamente o streaming HLS do curso.",
1217
+ "originalVideoPurpose": "Este arquivo original é usado apenas para gerar o streaming adaptativo do curso.",
1218
+ "fileStorageVideoHint": "Use o vídeo original abaixo para gerar automaticamente o streaming HLS do curso.",
1219
+ "uploadOriginalForConversion": "Enviar vídeo para processamento",
1097
1220
  "replaceOriginalForConversion": "Substituir vídeo original",
1098
1221
  "retryConversionWithSavedOriginal": "Iniciar novo job com o original salvo",
1099
- "videoUploadBlockedWhileProcessing": "O upload de original fica bloqueado enquanto a conversão atual estiver em andamento.",
1222
+ "videoUploadBlockedWhileProcessing": "O upload de original fica bloqueado enquanto o processamento atual estiver em andamento.",
1100
1223
  "videoJobStateLoading": "Aguardando o status mais recente do job atual para liberar novas ações.",
1101
1224
  "videoProviderSavePending": "Aguarde o provedor ser salvo antes de enviar o vídeo original.",
1102
1225
  "videoUploadMaxSizeError": "O vídeo excede o limite de {size}.",
1103
- "videoConversionQueued": "Conversão de vídeo enviada para a fila #{id}.",
1104
- "videoConversionFailed": "Não foi possível enviar o vídeo para conversão.",
1226
+ "videoConversionQueued": "Processamento de vídeo enviado para a fila #{id}.",
1227
+ "videoConversionFailed": "Não foi possível enviar o vídeo para processamento.",
1105
1228
  "videoConversionRetryFailed": "Não foi possível iniciar um novo job com o vídeo original salvo.",
1106
- "videoConversionJob": "Conversão na fila #{id}",
1107
- "videoJobFeedbackTitle": "Acompanhamento da conversão",
1108
- "videoJobToggleDetails": "Alternar detalhes da conversão",
1109
- "videoJobCollapsedSummary": "Conversão concluída com sucesso. Os vídeos processados aparecem na lista de resoluções acima.",
1110
- "videoJobLoading": "Carregando andamento da conversão...",
1111
- "videoJobPendingLoad": "Preparando acompanhamento do job de conversão...",
1112
- "awaitingConversion": "Aguardando conversão...",
1113
- "videoJobLoadError": "Não foi possível carregar o andamento da conversão.",
1229
+ "videoConversionJob": "Processamento na fila #{id}",
1230
+ "videoJobFeedbackTitle": "Acompanhamento do processamento",
1231
+ "videoJobToggleDetails": "Alternar detalhes do processamento",
1232
+ "videoJobCollapsedSummary": "Processamento concluído com sucesso. O streaming HLS está disponível para os alunos.",
1233
+ "videoJobLoading": "Carregando andamento do processamento...",
1234
+ "videoJobPendingLoad": "Preparando acompanhamento do processamento...",
1235
+ "awaitingConversion": "Aguardando processamento...",
1236
+ "videoJobLoadError": "Não foi possível carregar o andamento do processamento.",
1114
1237
  "retryLoadVideoJob": "Tentar novamente",
1115
1238
  "videoJobIdLabel": "Job",
1116
1239
  "videoJobAttemptsLabel": "Tentativas",
@@ -1126,7 +1249,6 @@
1126
1249
  "videoJobRecentEvents": "Eventos recentes",
1127
1250
  "videoJobTranscriptionEvents": "Eventos recentes da transcrição",
1128
1251
  "videoJobNoEvents": "Nenhum evento registrado ainda.",
1129
- "videoProfilesLockedWhileProcessing": "Os vídeos por perfil ficam bloqueados enquanto a conversão do original está ativa.",
1130
1252
  "videoJobStatuses": {
1131
1253
  "pending": "Na fila",
1132
1254
  "scheduled": "Agendado",
@@ -1158,8 +1280,9 @@
1158
1280
  },
1159
1281
  "videoJobProgress": {
1160
1282
  "download_original": "Baixando vídeo original...",
1161
- "probe_duration": "Lendo duração do vídeo...",
1162
- "convert_profile": "Convertendo vídeo para o perfil {profileName}...",
1283
+ "probe_duration": "Lendo dimensões e duração do vídeo...",
1284
+ "hls_encode": "Gerando streaming HLS...",
1285
+ "hls_upload": "Enviando segmentos HLS para storage...",
1163
1286
  "extract_frames": "Extraindo imagens do vídeo...",
1164
1287
  "extract_frames_done": "Imagens extraídas: {count}.",
1165
1288
  "extract_audio": "Extraindo áudio do vídeo...",
@@ -1226,8 +1349,7 @@
1226
1349
  "types": {
1227
1350
  "video": "Vídeo",
1228
1351
  "post": "Post",
1229
- "questao": "Questão",
1230
- "exercicio": "Exercício"
1352
+ "questao": "Questão"
1231
1353
  },
1232
1354
  "statuses": {
1233
1355
  "preparada": "Preparada",
@@ -1266,6 +1388,7 @@
1266
1388
  "videoUploadFailed": "Falha ao enviar {count} arquivo(s) de vídeo.",
1267
1389
  "newQuestion": "Nova questão",
1268
1390
  "editQuestion": "Editar questão",
1391
+ "loadingQuestions": "Carregando questões...",
1269
1392
  "selectQuestion": "Selecionar questão...",
1270
1393
  "searchQuestion": "Buscar questão...",
1271
1394
  "noQuestionsFound": "Nenhuma questão encontrada",
@@ -4635,6 +4758,10 @@
4635
4758
  "duplicateError": "Erro ao duplicar aula",
4636
4759
  "pasteError": "Erro ao colar aulas"
4637
4760
  },
4761
+ "resource": {
4762
+ "updateTypeSuccess": "Tipo do recurso alterado para {type}.",
4763
+ "updateTypeError": "Erro ao alterar tipo do recurso"
4764
+ },
4638
4765
  "item": {
4639
4766
  "deleteError": "Erro ao excluir itens"
4640
4767
  }
@@ -4700,5 +4827,259 @@
4700
4827
  "title": "Excluir perfil",
4701
4828
  "description": "Tem certeza que deseja excluir o perfil \"{name}\"? Esta ação não pode ser desfeita."
4702
4829
  }
4830
+ },
4831
+ "XpAreasPage": {
4832
+ "title": "Áreas de XP",
4833
+ "description": "Gerencie as macro áreas de competências para distribuição de XP.",
4834
+ "breadcrumbs": {
4835
+ "home": "Início",
4836
+ "lms": "LMS",
4837
+ "xp": "XP e Competências",
4838
+ "current": "Áreas"
4839
+ },
4840
+ "sheet": {
4841
+ "createTitle": "Nova Área",
4842
+ "editTitle": "Editar Área"
4843
+ },
4844
+ "form": {
4845
+ "slug": "Slug",
4846
+ "slugPlaceholder": "ex: frontend",
4847
+ "namePt": "Nome (PT)",
4848
+ "namePtPlaceholder": "ex: Frontend",
4849
+ "nameEn": "Nome (EN)",
4850
+ "nameEnPlaceholder": "ex: Frontend",
4851
+ "descriptionPt": "Descrição (PT)",
4852
+ "descriptionPtPlaceholder": "Breve descrição em português...",
4853
+ "descriptionEn": "Descrição (EN)",
4854
+ "descriptionEnPlaceholder": "Breve descrição em inglês...",
4855
+ "color": "Cor",
4856
+ "iconSlug": "Ícone (slug)",
4857
+ "iconSlugPlaceholder": "ex: code",
4858
+ "sortOrder": "Ordem",
4859
+ "status": "Status",
4860
+ "statusPlaceholder": "Selecione o status",
4861
+ "validation": {
4862
+ "required": "Campo obrigatório",
4863
+ "max100": "Máximo de 100 caracteres",
4864
+ "slugPattern": "Apenas letras minúsculas, números e hífens"
4865
+ }
4866
+ },
4867
+ "table": {
4868
+ "color": "Cor",
4869
+ "name": "Nome",
4870
+ "slug": "Slug",
4871
+ "status": "Status"
4872
+ },
4873
+ "status": {
4874
+ "active": "Ativo",
4875
+ "inactive": "Inativo"
4876
+ },
4877
+ "actions": {
4878
+ "create": "Nova Área",
4879
+ "edit": "Editar",
4880
+ "delete": "Excluir",
4881
+ "save": "Salvar",
4882
+ "saving": "Salvando...",
4883
+ "cancel": "Cancelar",
4884
+ "deleting": "Excluindo..."
4885
+ },
4886
+ "filters": {
4887
+ "searchPlaceholder": "Buscar áreas..."
4888
+ },
4889
+ "empty": {
4890
+ "title": "Nenhuma área encontrada",
4891
+ "description": "Crie a primeira área de competência XP para começar."
4892
+ },
4893
+ "kpis": {
4894
+ "total": {
4895
+ "label": "Total de Áreas",
4896
+ "description": "Todas as áreas cadastradas"
4897
+ },
4898
+ "active": {
4899
+ "label": "Ativas",
4900
+ "description": "Áreas atualmente ativas"
4901
+ },
4902
+ "inactive": {
4903
+ "label": "Inativas",
4904
+ "description": "Áreas desativadas"
4905
+ }
4906
+ },
4907
+ "messages": {
4908
+ "createSuccess": "Área criada com sucesso.",
4909
+ "updateSuccess": "Área atualizada com sucesso.",
4910
+ "deleteSuccess": "Área excluída com sucesso.",
4911
+ "saveError": "Erro ao salvar a área.",
4912
+ "deleteError": "Erro ao excluir a área."
4913
+ },
4914
+ "deleteDialog": {
4915
+ "title": "Excluir área",
4916
+ "description": "Tem certeza que deseja excluir a área \"{slug}\"? Esta ação não pode ser desfeita."
4917
+ }
4918
+ },
4919
+ "XpSkillsPage": {
4920
+ "title": "Skills de XP",
4921
+ "description": "Gerencie as skills e competências vinculadas às áreas de XP.",
4922
+ "breadcrumbs": {
4923
+ "home": "Início",
4924
+ "lms": "LMS",
4925
+ "xp": "XP e Competências",
4926
+ "current": "Skills"
4927
+ },
4928
+ "sheet": {
4929
+ "createTitle": "Nova Skill",
4930
+ "editTitle": "Editar Skill"
4931
+ },
4932
+ "form": {
4933
+ "slug": "Slug",
4934
+ "slugPlaceholder": "ex: react-hooks",
4935
+ "namePt": "Nome (PT)",
4936
+ "namePtPlaceholder": "ex: React Hooks",
4937
+ "nameEn": "Nome (EN)",
4938
+ "nameEnPlaceholder": "ex: React Hooks",
4939
+ "descriptionPt": "Descrição (PT)",
4940
+ "descriptionPtPlaceholder": "Breve descrição em português...",
4941
+ "descriptionEn": "Descrição (EN)",
4942
+ "descriptionEnPlaceholder": "Breve descrição em inglês...",
4943
+ "area": "Área",
4944
+ "areaPlaceholder": "Selecione uma área",
4945
+ "areaNone": "Sem área",
4946
+ "sortOrder": "Ordem",
4947
+ "status": "Status",
4948
+ "statusPlaceholder": "Selecione o status",
4949
+ "validation": {
4950
+ "required": "Campo obrigatório",
4951
+ "max100": "Máximo de 100 caracteres",
4952
+ "slugPattern": "Apenas letras minúsculas, números e hífens"
4953
+ }
4954
+ },
4955
+ "table": {
4956
+ "name": "Nome",
4957
+ "slug": "Slug",
4958
+ "area": "Área",
4959
+ "status": "Status"
4960
+ },
4961
+ "status": {
4962
+ "active": "Ativo",
4963
+ "inactive": "Inativo"
4964
+ },
4965
+ "actions": {
4966
+ "create": "Nova Skill",
4967
+ "edit": "Editar",
4968
+ "delete": "Excluir",
4969
+ "save": "Salvar",
4970
+ "saving": "Salvando...",
4971
+ "cancel": "Cancelar",
4972
+ "deleting": "Excluindo..."
4973
+ },
4974
+ "filters": {
4975
+ "searchPlaceholder": "Buscar skills..."
4976
+ },
4977
+ "empty": {
4978
+ "title": "Nenhuma skill encontrada",
4979
+ "description": "Crie a primeira skill de XP para começar a mapear competências."
4980
+ },
4981
+ "kpis": {
4982
+ "total": {
4983
+ "label": "Total de Skills",
4984
+ "description": "Todas as skills cadastradas"
4985
+ },
4986
+ "active": {
4987
+ "label": "Ativas",
4988
+ "description": "Skills atualmente ativas"
4989
+ },
4990
+ "inactive": {
4991
+ "label": "Inativas",
4992
+ "description": "Skills desativadas"
4993
+ },
4994
+ "unassigned": {
4995
+ "label": "Sem Área",
4996
+ "description": "Skills sem área vinculada"
4997
+ }
4998
+ },
4999
+ "messages": {
5000
+ "createSuccess": "Skill criada com sucesso.",
5001
+ "updateSuccess": "Skill atualizada com sucesso.",
5002
+ "deleteSuccess": "Skill excluída com sucesso.",
5003
+ "saveError": "Erro ao salvar a skill.",
5004
+ "deleteError": "Erro ao excluir a skill."
5005
+ },
5006
+ "deleteDialog": {
5007
+ "title": "Excluir skill",
5008
+ "description": "Tem certeza que deseja excluir a skill \"{slug}\"? Esta ação não pode ser desfeita."
5009
+ }
5010
+ },
5011
+ "XpLearningTypesPage": {
5012
+ "title": "Tipos de Aprendizado",
5013
+ "description": "Gerencie os tipos de atividades de aprendizado usados nos segmentos de XP.",
5014
+ "breadcrumbs": {
5015
+ "home": "Início",
5016
+ "lms": "LMS",
5017
+ "xp": "XP e Competências",
5018
+ "current": "Tipos de Aprendizado"
5019
+ },
5020
+ "sheet": {
5021
+ "createTitle": "Novo Tipo de Aprendizado",
5022
+ "editTitle": "Editar Tipo de Aprendizado"
5023
+ },
5024
+ "form": {
5025
+ "slug": "Slug",
5026
+ "slugPlaceholder": "ex: live-coding",
5027
+ "namePt": "Nome (PT)",
5028
+ "namePtPlaceholder": "ex: Codificação ao vivo",
5029
+ "nameEn": "Nome (EN)",
5030
+ "nameEnPlaceholder": "ex: Live Coding",
5031
+ "descriptionPt": "Descrição (PT)",
5032
+ "descriptionPtPlaceholder": "Breve descrição em português...",
5033
+ "descriptionEn": "Descrição (EN)",
5034
+ "descriptionEnPlaceholder": "Breve descrição em inglês...",
5035
+ "multiplier": "Multiplicador",
5036
+ "multiplierPlaceholder": "ex: 1.5",
5037
+ "sortOrder": "Ordem",
5038
+ "status": "Status",
5039
+ "statusPlaceholder": "Selecione o status",
5040
+ "validation": {
5041
+ "required": "Campo obrigatório",
5042
+ "max100": "Máximo de 100 caracteres",
5043
+ "slugPattern": "Apenas letras minúsculas, números e hífens",
5044
+ "minZero": "O valor deve ser maior ou igual a zero"
5045
+ }
5046
+ },
5047
+ "table": {
5048
+ "name": "Nome",
5049
+ "slug": "Slug",
5050
+ "multiplier": "Multiplicador",
5051
+ "status": "Status"
5052
+ },
5053
+ "status": {
5054
+ "active": "Ativo",
5055
+ "inactive": "Inativo"
5056
+ },
5057
+ "actions": {
5058
+ "create": "Novo Tipo",
5059
+ "edit": "Editar",
5060
+ "delete": "Excluir",
5061
+ "save": "Salvar",
5062
+ "saving": "Salvando...",
5063
+ "cancel": "Cancelar",
5064
+ "deleting": "Excluindo..."
5065
+ },
5066
+ "filters": {
5067
+ "searchPlaceholder": "Buscar tipos de aprendizado..."
5068
+ },
5069
+ "empty": {
5070
+ "title": "Nenhum tipo de aprendizado encontrado",
5071
+ "description": "Crie o primeiro tipo de aprendizado para categorizar os segmentos de XP."
5072
+ },
5073
+ "messages": {
5074
+ "createSuccess": "Tipo de aprendizado criado com sucesso.",
5075
+ "updateSuccess": "Tipo de aprendizado atualizado com sucesso.",
5076
+ "deleteSuccess": "Tipo de aprendizado excluído com sucesso.",
5077
+ "saveError": "Erro ao salvar o tipo de aprendizado.",
5078
+ "deleteError": "Erro ao excluir o tipo de aprendizado."
5079
+ },
5080
+ "deleteDialog": {
5081
+ "title": "Excluir tipo de aprendizado",
5082
+ "description": "Tem certeza que deseja excluir o tipo \"{slug}\"? Esta ação não pode ser desfeita."
5083
+ }
4703
5084
  }
4704
5085
  }
@@ -0,0 +1,62 @@
1
+ columns:
2
+ - type: pk
3
+ - name: course_id
4
+ type: fk
5
+ references:
6
+ table: course
7
+ column: id
8
+ onDelete: CASCADE
9
+ - name: user_id
10
+ type: fk
11
+ references:
12
+ table: user
13
+ column: id
14
+ onDelete: CASCADE
15
+ - name: format
16
+ type: varchar
17
+ length: 32
18
+ - name: status
19
+ type: enum
20
+ values: [pending, processing, completed, failed]
21
+ default: pending
22
+ - name: queue_job_id
23
+ type: fk
24
+ isNullable: true
25
+ references:
26
+ table: queue_job
27
+ column: id
28
+ onDelete: SET NULL
29
+ - name: file_id
30
+ type: fk
31
+ isNullable: true
32
+ references:
33
+ table: file
34
+ column: id
35
+ onDelete: SET NULL
36
+ - name: settings
37
+ type: jsonb
38
+ isNullable: true
39
+ - name: duration_seconds
40
+ type: int
41
+ isNullable: true
42
+ - name: error_message
43
+ type: text
44
+ isNullable: true
45
+ - name: notification_id
46
+ type: int
47
+ isNullable: true
48
+ - name: started_at
49
+ type: datetime
50
+ isNullable: true
51
+ - name: finished_at
52
+ type: datetime
53
+ isNullable: true
54
+ - type: created_at
55
+ - type: updated_at
56
+
57
+ indices:
58
+ - columns: [course_id]
59
+ - columns: [user_id]
60
+ - columns: [course_id, status]
61
+ - columns: [queue_job_id]
62
+ - columns: [file_id]