@hed-hog/lms 0.0.361 → 0.0.364

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 (329) hide show
  1. package/dist/bitcode-wallet/bitcode-wallet.service.d.ts +65 -0
  2. package/dist/bitcode-wallet/bitcode-wallet.service.d.ts.map +1 -1
  3. package/dist/bitcode-wallet/bitcode-wallet.service.js +72 -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-lesson.controller.d.ts +4 -0
  16. package/dist/course/course-lesson.controller.d.ts.map +1 -1
  17. package/dist/course/course-lesson.controller.js +10 -0
  18. package/dist/course/course-lesson.controller.js.map +1 -1
  19. package/dist/course/course-structure.controller.d.ts +11 -4
  20. package/dist/course/course-structure.controller.d.ts.map +1 -1
  21. package/dist/course/course-structure.controller.js +14 -0
  22. package/dist/course/course-structure.controller.js.map +1 -1
  23. package/dist/course/course-structure.service.d.ts +15 -1
  24. package/dist/course/course-structure.service.d.ts.map +1 -1
  25. package/dist/course/course-structure.service.js +139 -4
  26. package/dist/course/course-structure.service.js.map +1 -1
  27. package/dist/course/course-video-conversion.service.d.ts +8 -0
  28. package/dist/course/course-video-conversion.service.d.ts.map +1 -1
  29. package/dist/course/course-video-conversion.service.js +87 -51
  30. package/dist/course/course-video-conversion.service.js.map +1 -1
  31. package/dist/course/course.controller.d.ts +73 -1
  32. package/dist/course/course.controller.d.ts.map +1 -1
  33. package/dist/course/course.controller.js +27 -3
  34. package/dist/course/course.controller.js.map +1 -1
  35. package/dist/course/course.module.d.ts.map +1 -1
  36. package/dist/course/course.module.js +2 -0
  37. package/dist/course/course.module.js.map +1 -1
  38. package/dist/course/course.service.d.ts +108 -4
  39. package/dist/course/course.service.d.ts.map +1 -1
  40. package/dist/course/course.service.js +631 -30
  41. package/dist/course/course.service.js.map +1 -1
  42. package/dist/course/dto/cleanup-course-storage.dto.d.ts +6 -0
  43. package/dist/course/dto/cleanup-course-storage.dto.d.ts.map +1 -0
  44. package/dist/course/dto/cleanup-course-storage.dto.js +33 -0
  45. package/dist/course/dto/cleanup-course-storage.dto.js.map +1 -0
  46. package/dist/course/dto/cleanup-upload-history.dto.d.ts +9 -0
  47. package/dist/course/dto/cleanup-upload-history.dto.d.ts.map +1 -0
  48. package/dist/course/dto/cleanup-upload-history.dto.js +36 -0
  49. package/dist/course/dto/cleanup-upload-history.dto.js.map +1 -0
  50. package/dist/course/dto/create-course-bulk-job.dto.d.ts +4 -0
  51. package/dist/course/dto/create-course-bulk-job.dto.d.ts.map +1 -0
  52. package/dist/course/dto/create-course-bulk-job.dto.js +21 -0
  53. package/dist/course/dto/create-course-bulk-job.dto.js.map +1 -0
  54. package/dist/course/lms-bulk-upload-automation.service.d.ts +39 -0
  55. package/dist/course/lms-bulk-upload-automation.service.d.ts.map +1 -0
  56. package/dist/course/lms-bulk-upload-automation.service.js +443 -0
  57. package/dist/course/lms-bulk-upload-automation.service.js.map +1 -0
  58. package/dist/course/lms-bulk-upload-infra.service.d.ts +31 -0
  59. package/dist/course/lms-bulk-upload-infra.service.d.ts.map +1 -0
  60. package/dist/course/lms-bulk-upload-infra.service.js +277 -0
  61. package/dist/course/lms-bulk-upload-infra.service.js.map +1 -0
  62. package/dist/course/lms-bulk-upload.constants.d.ts +4 -0
  63. package/dist/course/lms-bulk-upload.constants.d.ts.map +1 -0
  64. package/dist/course/lms-bulk-upload.constants.js +7 -0
  65. package/dist/course/lms-bulk-upload.constants.js.map +1 -0
  66. package/dist/course/lms-bulk-upload.controller.d.ts +116 -0
  67. package/dist/course/lms-bulk-upload.controller.d.ts.map +1 -1
  68. package/dist/course/lms-bulk-upload.controller.js +71 -2
  69. package/dist/course/lms-bulk-upload.controller.js.map +1 -1
  70. package/dist/course/lms-bulk-upload.service.d.ts +142 -3
  71. package/dist/course/lms-bulk-upload.service.d.ts.map +1 -1
  72. package/dist/course/lms-bulk-upload.service.js +606 -21
  73. package/dist/course/lms-bulk-upload.service.js.map +1 -1
  74. package/dist/course/lms-setting.controller.d.ts +4 -1
  75. package/dist/course/lms-setting.controller.d.ts.map +1 -1
  76. package/dist/course/lms-setting.controller.js +21 -6
  77. package/dist/course/lms-setting.controller.js.map +1 -1
  78. package/dist/enterprise/enterprise.controller.d.ts +20 -20
  79. package/dist/enterprise/enterprise.service.d.ts +20 -20
  80. package/dist/enterprise/training/training-admin.controller.d.ts +11 -11
  81. package/dist/enterprise/training/training-admin.service.d.ts +11 -11
  82. package/dist/enterprise/training/training-instructor.controller.d.ts +2 -2
  83. package/dist/enterprise/training/training-instructor.service.d.ts +2 -2
  84. package/dist/enterprise/training/training-student.controller.d.ts +1 -1
  85. package/dist/enterprise/training/training-student.service.d.ts +1 -1
  86. package/dist/enterprise/training/training-viewer.controller.d.ts +2 -2
  87. package/dist/evaluation/evaluation.controller.d.ts +8 -8
  88. package/dist/evaluation/evaluation.service.d.ts +8 -8
  89. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.d.ts +6 -0
  90. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.d.ts.map +1 -0
  91. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.js +34 -0
  92. package/dist/lesson-xp-map/dto/create-lesson-xp-map.dto.js.map +1 -0
  93. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.d.ts +28 -0
  94. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.d.ts.map +1 -0
  95. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.js +123 -0
  96. package/dist/lesson-xp-map/dto/create-lesson-xp-segment.dto.js.map +1 -0
  97. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.d.ts +4 -0
  98. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.d.ts.map +1 -0
  99. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.js +22 -0
  100. package/dist/lesson-xp-map/dto/review-lesson-xp-map.dto.js.map +1 -0
  101. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.d.ts +10 -0
  102. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.d.ts.map +1 -0
  103. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.js +52 -0
  104. package/dist/lesson-xp-map/dto/update-lesson-xp-map.dto.js.map +1 -0
  105. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.d.ts +15 -0
  106. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.d.ts.map +1 -0
  107. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.js +86 -0
  108. package/dist/lesson-xp-map/dto/update-lesson-xp-segment.dto.js.map +1 -0
  109. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts +26 -0
  110. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts.map +1 -0
  111. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js +304 -0
  112. package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js.map +1 -0
  113. package/dist/lesson-xp-map/lesson-xp-map.controller.d.ts +87 -0
  114. package/dist/lesson-xp-map/lesson-xp-map.controller.d.ts.map +1 -0
  115. package/dist/lesson-xp-map/lesson-xp-map.controller.js +185 -0
  116. package/dist/lesson-xp-map/lesson-xp-map.controller.js.map +1 -0
  117. package/dist/lesson-xp-map/lesson-xp-map.module.d.ts +3 -0
  118. package/dist/lesson-xp-map/lesson-xp-map.module.d.ts.map +1 -0
  119. package/dist/lesson-xp-map/lesson-xp-map.module.js +34 -0
  120. package/dist/lesson-xp-map/lesson-xp-map.module.js.map +1 -0
  121. package/dist/lesson-xp-map/lesson-xp-map.service.d.ts +84 -0
  122. package/dist/lesson-xp-map/lesson-xp-map.service.d.ts.map +1 -0
  123. package/dist/lesson-xp-map/lesson-xp-map.service.js +353 -0
  124. package/dist/lesson-xp-map/lesson-xp-map.service.js.map +1 -0
  125. package/dist/lesson-xp-map/lesson-xp-segment.controller.d.ts +10 -0
  126. package/dist/lesson-xp-map/lesson-xp-segment.controller.d.ts.map +1 -0
  127. package/dist/lesson-xp-map/lesson-xp-segment.controller.js +63 -0
  128. package/dist/lesson-xp-map/lesson-xp-segment.controller.js.map +1 -0
  129. package/dist/lesson-xp-map/lesson-xp-segment.service.d.ts +27 -0
  130. package/dist/lesson-xp-map/lesson-xp-segment.service.d.ts.map +1 -0
  131. package/dist/lesson-xp-map/lesson-xp-segment.service.js +194 -0
  132. package/dist/lesson-xp-map/lesson-xp-segment.service.js.map +1 -0
  133. package/dist/libraries/lms/tsconfig.tsbuildinfo +1 -0
  134. package/dist/lms.module.d.ts.map +1 -1
  135. package/dist/lms.module.js +17 -2
  136. package/dist/lms.module.js.map +1 -1
  137. package/dist/platforma/dto/update-profile.dto.d.ts +17 -0
  138. package/dist/platforma/dto/update-profile.dto.d.ts.map +1 -0
  139. package/dist/platforma/dto/update-profile.dto.js +87 -0
  140. package/dist/platforma/dto/update-profile.dto.js.map +1 -0
  141. package/dist/platforma/platforma.controller.d.ts +88 -1
  142. package/dist/platforma/platforma.controller.d.ts.map +1 -1
  143. package/dist/platforma/platforma.controller.js +85 -2
  144. package/dist/platforma/platforma.controller.js.map +1 -1
  145. package/dist/platforma/platforma.service.d.ts +27 -0
  146. package/dist/platforma/platforma.service.d.ts.map +1 -0
  147. package/dist/platforma/platforma.service.js +274 -0
  148. package/dist/platforma/platforma.service.js.map +1 -0
  149. package/dist/student-xp/student-xp.controller.d.ts +41 -0
  150. package/dist/student-xp/student-xp.controller.d.ts.map +1 -0
  151. package/dist/student-xp/student-xp.controller.js +114 -0
  152. package/dist/student-xp/student-xp.controller.js.map +1 -0
  153. package/dist/student-xp/student-xp.module.d.ts +3 -0
  154. package/dist/student-xp/student-xp.module.d.ts.map +1 -0
  155. package/dist/student-xp/student-xp.module.js +25 -0
  156. package/dist/student-xp/student-xp.module.js.map +1 -0
  157. package/dist/student-xp/student-xp.service.d.ts +65 -0
  158. package/dist/student-xp/student-xp.service.d.ts.map +1 -0
  159. package/dist/student-xp/student-xp.service.js +197 -0
  160. package/dist/student-xp/student-xp.service.js.map +1 -0
  161. package/dist/xp-catalog/dto/create-xp-area.dto.d.ts +12 -0
  162. package/dist/xp-catalog/dto/create-xp-area.dto.d.ts.map +1 -0
  163. package/dist/xp-catalog/dto/create-xp-area.dto.js +63 -0
  164. package/dist/xp-catalog/dto/create-xp-area.dto.js.map +1 -0
  165. package/dist/xp-catalog/dto/create-xp-learning-type.dto.d.ts +11 -0
  166. package/dist/xp-catalog/dto/create-xp-learning-type.dto.d.ts.map +1 -0
  167. package/dist/xp-catalog/dto/create-xp-learning-type.dto.js +57 -0
  168. package/dist/xp-catalog/dto/create-xp-learning-type.dto.js.map +1 -0
  169. package/dist/xp-catalog/dto/create-xp-skill.dto.d.ts +11 -0
  170. package/dist/xp-catalog/dto/create-xp-skill.dto.d.ts.map +1 -0
  171. package/dist/xp-catalog/dto/create-xp-skill.dto.js +57 -0
  172. package/dist/xp-catalog/dto/create-xp-skill.dto.js.map +1 -0
  173. package/dist/xp-catalog/dto/update-xp-area.dto.d.ts +12 -0
  174. package/dist/xp-catalog/dto/update-xp-area.dto.d.ts.map +1 -0
  175. package/dist/xp-catalog/dto/update-xp-area.dto.js +66 -0
  176. package/dist/xp-catalog/dto/update-xp-area.dto.js.map +1 -0
  177. package/dist/xp-catalog/dto/update-xp-learning-type.dto.d.ts +11 -0
  178. package/dist/xp-catalog/dto/update-xp-learning-type.dto.d.ts.map +1 -0
  179. package/dist/xp-catalog/dto/update-xp-learning-type.dto.js +60 -0
  180. package/dist/xp-catalog/dto/update-xp-learning-type.dto.js.map +1 -0
  181. package/dist/xp-catalog/dto/update-xp-skill.dto.d.ts +11 -0
  182. package/dist/xp-catalog/dto/update-xp-skill.dto.d.ts.map +1 -0
  183. package/dist/xp-catalog/dto/update-xp-skill.dto.js +60 -0
  184. package/dist/xp-catalog/dto/update-xp-skill.dto.js.map +1 -0
  185. package/dist/xp-catalog/xp-area.controller.d.ts +25 -0
  186. package/dist/xp-catalog/xp-area.controller.d.ts.map +1 -0
  187. package/dist/xp-catalog/xp-area.controller.js +105 -0
  188. package/dist/xp-catalog/xp-area.controller.js.map +1 -0
  189. package/dist/xp-catalog/xp-area.service.d.ts +35 -0
  190. package/dist/xp-catalog/xp-area.service.d.ts.map +1 -0
  191. package/dist/xp-catalog/xp-area.service.js +168 -0
  192. package/dist/xp-catalog/xp-area.service.js.map +1 -0
  193. package/dist/xp-catalog/xp-catalog.module.d.ts +3 -0
  194. package/dist/xp-catalog/xp-catalog.module.d.ts.map +1 -0
  195. package/dist/xp-catalog/xp-catalog.module.js +29 -0
  196. package/dist/xp-catalog/xp-catalog.module.js.map +1 -0
  197. package/dist/xp-catalog/xp-learning-type.controller.d.ts +20 -0
  198. package/dist/xp-catalog/xp-learning-type.controller.d.ts.map +1 -0
  199. package/dist/xp-catalog/xp-learning-type.controller.js +96 -0
  200. package/dist/xp-catalog/xp-learning-type.controller.js.map +1 -0
  201. package/dist/xp-catalog/xp-learning-type.service.d.ts +30 -0
  202. package/dist/xp-catalog/xp-learning-type.service.d.ts.map +1 -0
  203. package/dist/xp-catalog/xp-learning-type.service.js +146 -0
  204. package/dist/xp-catalog/xp-learning-type.service.js.map +1 -0
  205. package/dist/xp-catalog/xp-skill.controller.d.ts +26 -0
  206. package/dist/xp-catalog/xp-skill.controller.d.ts.map +1 -0
  207. package/dist/xp-catalog/xp-skill.controller.js +113 -0
  208. package/dist/xp-catalog/xp-skill.controller.js.map +1 -0
  209. package/dist/xp-catalog/xp-skill.service.d.ts +37 -0
  210. package/dist/xp-catalog/xp-skill.service.d.ts.map +1 -0
  211. package/dist/xp-catalog/xp-skill.service.js +174 -0
  212. package/dist/xp-catalog/xp-skill.service.js.map +1 -0
  213. package/hedhog/data/menu.yaml +101 -0
  214. package/hedhog/data/route.yaml +512 -0
  215. package/hedhog/data/setting_group.yaml +1 -1
  216. package/hedhog/data/xp_area.yaml +164 -0
  217. package/hedhog/data/xp_learning_type.yaml +131 -0
  218. package/hedhog/data/xp_skill.yaml +1834 -0
  219. package/hedhog/frontend/app/achievements/page.tsx.ejs +108 -118
  220. package/hedhog/frontend/app/bitcodes/page.tsx.ejs +22 -34
  221. package/hedhog/frontend/app/bulk-upload-sessions/page.tsx.ejs +1453 -0
  222. package/hedhog/frontend/app/certificates/models/page.tsx.ejs +21 -45
  223. package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +40 -74
  224. package/hedhog/frontend/app/classes/page.tsx.ejs +56 -85
  225. package/hedhog/frontend/app/courses/[id]/_components/CourseDangerZoneCard.tsx.ejs +3 -2
  226. package/hedhog/frontend/app/courses/[id]/_components/CourseMediaCard.tsx.ejs +48 -5
  227. package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +4 -4
  228. package/hedhog/frontend/app/courses/[id]/structure/_components/course-operations-tab.tsx.ejs +19 -2
  229. package/hedhog/frontend/app/courses/[id]/structure/_components/course-overview-tab.tsx.ejs +1170 -0
  230. package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree-dnd.tsx.ejs +16 -0
  231. package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree.tsx.ejs +2 -0
  232. package/hedhog/frontend/app/courses/[id]/structure/_components/course-xp-overview-tab.tsx.ejs +623 -0
  233. package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson-xp-tab.tsx.ejs +1458 -0
  234. package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson.tsx.ejs +55 -2
  235. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +442 -104
  236. package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +296 -49
  237. package/hedhog/frontend/app/courses/[id]/structure/_components/sortable-tree-row.tsx.ejs +3 -0
  238. package/hedhog/frontend/app/courses/[id]/structure/_components/store.ts.ejs +1 -0
  239. package/hedhog/frontend/app/courses/[id]/structure/_components/tree-display-settings-popover.tsx.ejs +101 -85
  240. package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row-lesson.tsx.ejs +21 -1
  241. package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row.tsx.ejs +3 -0
  242. package/hedhog/frontend/app/courses/[id]/structure/_components/use-tree-display-settings.ts.ejs +7 -1
  243. package/hedhog/frontend/app/courses/[id]/structure/_components/xp-premium-pills.tsx.ejs +44 -0
  244. package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-content-overview.ts.ejs +54 -0
  245. package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-structure-mutations.ts.ejs +52 -0
  246. package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-xp-overview.ts.ejs +76 -0
  247. package/hedhog/frontend/app/courses/[id]/structure/_data/use-lesson-xp-map.ts.ejs +128 -0
  248. package/hedhog/frontend/app/courses/[id]/structure/_data/use-transcription-segments.ts.ejs +30 -0
  249. package/hedhog/frontend/app/courses/[id]/structure/_utils/xp-color-config.ts.ejs +115 -0
  250. package/hedhog/frontend/app/courses/_components/CourseDeleteDialog.tsx.ejs +223 -0
  251. package/hedhog/frontend/app/courses/_components/CourseRowActions.tsx.ejs +89 -0
  252. package/hedhog/frontend/app/courses/page.tsx.ejs +400 -230
  253. package/hedhog/frontend/app/enterprise/page.tsx.ejs +39 -63
  254. package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +53 -77
  255. package/hedhog/frontend/app/exams/page.tsx.ejs +54 -90
  256. package/hedhog/frontend/app/instructor-skills/page.tsx.ejs +23 -36
  257. package/hedhog/frontend/app/instructors/page.tsx.ejs +72 -81
  258. package/hedhog/frontend/app/paths/page.tsx.ejs +40 -68
  259. package/hedhog/frontend/app/training/page.tsx.ejs +40 -68
  260. package/hedhog/frontend/app/xp/areas/page.tsx.ejs +782 -0
  261. package/hedhog/frontend/app/xp/learning-types/page.tsx.ejs +690 -0
  262. package/hedhog/frontend/app/xp/skills/page.tsx.ejs +811 -0
  263. package/hedhog/frontend/messages/en.json +386 -3
  264. package/hedhog/frontend/messages/pt.json +386 -3
  265. package/hedhog/table/lesson_xp_map.yaml +50 -0
  266. package/hedhog/table/lesson_xp_segment.yaml +40 -0
  267. package/hedhog/table/lesson_xp_segment_area.yaml +24 -0
  268. package/hedhog/table/lesson_xp_segment_learning_type.yaml +24 -0
  269. package/hedhog/table/lesson_xp_segment_skill.yaml +24 -0
  270. package/hedhog/table/lms_bulk_upload_item.yaml +44 -0
  271. package/hedhog/table/lms_bulk_upload_session.yaml +42 -0
  272. package/hedhog/table/student_area_xp.yaml +30 -0
  273. package/hedhog/table/student_learning_type_xp.yaml +30 -0
  274. package/hedhog/table/student_skill_xp.yaml +30 -0
  275. package/hedhog/table/student_xp_event.yaml +34 -0
  276. package/hedhog/table/xp_area.yaml +39 -0
  277. package/hedhog/table/xp_learning_type.yaml +34 -0
  278. package/hedhog/table/xp_skill.yaml +39 -0
  279. package/package.json +8 -7
  280. package/src/bitcode-wallet/bitcode-wallet.service.ts +113 -0
  281. package/src/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.ts +32 -0
  282. package/src/course/course-audio-transcription.service.ts +58 -21
  283. package/src/course/course-lesson.controller.ts +6 -1
  284. package/src/course/course-structure.controller.ts +10 -0
  285. package/src/course/course-structure.service.ts +174 -1
  286. package/src/course/course-video-conversion.service.ts +113 -75
  287. package/src/course/course.controller.ts +22 -3
  288. package/src/course/course.module.ts +2 -0
  289. package/src/course/course.service.ts +847 -30
  290. package/src/course/dto/cleanup-course-storage.dto.ts +22 -0
  291. package/src/course/dto/cleanup-upload-history.dto.ts +26 -0
  292. package/src/course/dto/create-course-bulk-job.dto.ts +6 -0
  293. package/src/course/lms-bulk-upload-automation.service.ts +560 -0
  294. package/src/course/lms-bulk-upload-infra.service.ts +327 -0
  295. package/src/course/lms-bulk-upload.constants.ts +5 -0
  296. package/src/course/lms-bulk-upload.controller.ts +79 -3
  297. package/src/course/lms-bulk-upload.service.ts +1029 -204
  298. package/src/course/lms-setting.controller.ts +22 -6
  299. package/src/lesson-xp-map/dto/create-lesson-xp-map.dto.ts +17 -0
  300. package/src/lesson-xp-map/dto/create-lesson-xp-segment.dto.ts +102 -0
  301. package/src/lesson-xp-map/dto/review-lesson-xp-map.dto.ts +7 -0
  302. package/src/lesson-xp-map/dto/update-lesson-xp-map.dto.ts +36 -0
  303. package/src/lesson-xp-map/dto/update-lesson-xp-segment.dto.ts +78 -0
  304. package/src/lesson-xp-map/lesson-xp-ai-calculation.service.ts +396 -0
  305. package/src/lesson-xp-map/lesson-xp-map.controller.ts +116 -0
  306. package/src/lesson-xp-map/lesson-xp-map.module.ts +21 -0
  307. package/src/lesson-xp-map/lesson-xp-map.service.ts +442 -0
  308. package/src/lesson-xp-map/lesson-xp-segment.controller.ts +36 -0
  309. package/src/lesson-xp-map/lesson-xp-segment.service.ts +229 -0
  310. package/src/lms.module.ts +17 -2
  311. package/src/platforma/dto/update-profile.dto.ts +59 -0
  312. package/src/platforma/platforma.controller.ts +57 -2
  313. package/src/platforma/platforma.service.ts +268 -0
  314. package/src/student-xp/student-xp.controller.ts +76 -0
  315. package/src/student-xp/student-xp.module.ts +12 -0
  316. package/src/student-xp/student-xp.service.ts +236 -0
  317. package/src/xp-catalog/dto/create-xp-area.dto.ts +40 -0
  318. package/src/xp-catalog/dto/create-xp-learning-type.dto.ts +35 -0
  319. package/src/xp-catalog/dto/create-xp-skill.dto.ts +35 -0
  320. package/src/xp-catalog/dto/update-xp-area.dto.ts +43 -0
  321. package/src/xp-catalog/dto/update-xp-learning-type.dto.ts +38 -0
  322. package/src/xp-catalog/dto/update-xp-skill.dto.ts +38 -0
  323. package/src/xp-catalog/xp-area.controller.ts +64 -0
  324. package/src/xp-catalog/xp-area.service.ts +196 -0
  325. package/src/xp-catalog/xp-catalog.module.ts +16 -0
  326. package/src/xp-catalog/xp-learning-type.controller.ts +59 -0
  327. package/src/xp-catalog/xp-learning-type.service.ts +170 -0
  328. package/src/xp-catalog/xp-skill.controller.ts +71 -0
  329. package/src/xp-catalog/xp-skill.service.ts +205 -0
@@ -413,8 +413,9 @@
413
413
  },
414
414
  "structureEditor": {
415
415
  "tabs": {
416
- "structure": "Structure",
417
- "about": "About",
416
+ "overview": "Overview",
417
+ "details": "Details",
418
+ "xp": "XP",
418
419
  "media": "Media",
419
420
  "resources": "Resources",
420
421
  "extra": "Extra",
@@ -484,6 +485,85 @@
484
485
  }
485
486
  }
486
487
  },
488
+ "xpOverview": {
489
+ "emptyTitle": "No aggregated XP data yet",
490
+ "emptyDescription": "Calculate lesson XP to visualize the course-wide overview by macro areas, skills, and learning types.",
491
+ "errorTitle": "Could not load the XP overview",
492
+ "errorDescription": "Try again in a moment. Once lesson XP maps exist, this tab will show the consolidated course view.",
493
+ "kpis": {
494
+ "totalXp": "Total XP",
495
+ "totalXpDescription": "Sum of the XP already calculated across course lessons",
496
+ "mappedLessons": "Mapped lessons",
497
+ "mappedLessonsDescription": "Lessons that already have an XP map available",
498
+ "segments": "Valid segments",
499
+ "segmentsDescription": "Lesson slices that grant XP",
500
+ "avgXpPerMappedLesson": "Avg XP per lesson",
501
+ "avgXpPerMappedLessonDescription": "Average considering only mapped lessons"
502
+ },
503
+ "charts": {
504
+ "lessonDistribution": {
505
+ "title": "Lesson distribution",
506
+ "description": "Which lessons concentrate the most XP in the course"
507
+ },
508
+ "lessons": {
509
+ "metricXp": "Lesson XP",
510
+ "lessonFallback": "Untitled lesson"
511
+ },
512
+ "macroAreas": {
513
+ "title": "Macro-area angles",
514
+ "description": "Radial reading of the macro areas with the highest weight in the course"
515
+ },
516
+ "skills": {
517
+ "title": "Top skills",
518
+ "description": "Ranking of the most recurrent skills across all lessons"
519
+ },
520
+ "learningTypes": {
521
+ "title": "Learning types",
522
+ "description": "Proportional view of the learning formats most used in the course",
523
+ "metricXp": "Aggregated XP",
524
+ "metricMultiplier": "Multiplier"
525
+ }
526
+ },
527
+ "table": {
528
+ "title": "Lesson breakdown",
529
+ "description": "Summary of the lessons considered in the course XP consolidation",
530
+ "segments": "segments",
531
+ "lessonCodeFallback": "Lesson #{id}"
532
+ }
533
+ },
534
+ "courseOverview": {
535
+ "errorTitle": "Could not load the course overview",
536
+ "errorDescription": "Try again in a moment.",
537
+ "kpis": {
538
+ "modules": "Modules",
539
+ "modulesDescription": "Total course modules",
540
+ "lessons": "Lessons",
541
+ "lessonsDescription": "Total lessons across all modules",
542
+ "extractedImages": "Extracted images",
543
+ "extractedImagesDescription": "Video frame captures extracted from lessons",
544
+ "resourceFiles": "Resource files",
545
+ "resourceFilesDescription": "Downloadable files attached to lessons"
546
+ },
547
+ "lessonTypes": {
548
+ "title": "Lesson types",
549
+ "description": "Distribution of all lessons by type"
550
+ },
551
+ "videos": {
552
+ "title": "Video lessons",
553
+ "description": "Transcription and XP coverage for video lessons",
554
+ "total": "Video lessons",
555
+ "withTranscription": "With transcription",
556
+ "withXp": "With XP"
557
+ },
558
+ "areas": {
559
+ "title": "Macro areas",
560
+ "description": "Areas mapped across lessons, ordered by XP weight"
561
+ },
562
+ "skills": {
563
+ "title": "Skills",
564
+ "description": "Skills mapped across lessons, ordered by XP weight"
565
+ }
566
+ },
487
567
  "footer": {
488
568
  "cancel": "Cancel",
489
569
  "newSession": "New session",
@@ -623,6 +703,8 @@
623
703
  "level": "Level",
624
704
  "status": "Status",
625
705
  "categories": "Categories",
706
+ "sessions": "Sessions",
707
+ "lessons": "Lessons",
626
708
  "students": "Students"
627
709
  },
628
710
  "empty": {
@@ -761,8 +843,24 @@
761
843
  "title": "Confirm Deletion",
762
844
  "description": "Are you sure you want to delete the course",
763
845
  "warning": "This course has {count} enrolled student(s). Deletion is irreversible.",
846
+ "archiveFirst": "Archive the course to enable complete deletion.",
847
+ "archiveReady": "Course archived. Complete deletion can now be started.",
848
+ "relatedContentWarning": "All related videos, audios, materials, and other files will be deleted in the background.",
849
+ "impactTitle": "Deletion impact",
850
+ "impactLoading": "Loading the amount of files and storage that will be removed...",
851
+ "impact": {
852
+ "files": "Files",
853
+ "storage": "Storage",
854
+ "students": "Students"
855
+ },
856
+ "expectedNameLabel": "Exact name that must be typed",
857
+ "confirmationLabel": "Type the exact course name to confirm:",
858
+ "confirmationPlaceholder": "Course name",
859
+ "confirmationHint": "Type the full and exact course name shown above.",
764
860
  "actions": {
765
861
  "cancel": "Cancel",
862
+ "archive": "Archive",
863
+ "archived": "Archived",
766
864
  "delete": "Delete Course"
767
865
  }
768
866
  },
@@ -770,13 +868,22 @@
770
868
  "courseUpdated": "Course updated successfully!",
771
869
  "courseCreated": "Course created successfully! Redirecting...",
772
870
  "courseRemoved": "Course \"{title}\" removed.",
871
+ "courseArchived": "Course \"{title}\" archived successfully.",
872
+ "courseArchiveError": "Unable to archive the course.",
873
+ "courseDeleteQueued": "Deletion for course \"{title}\" started. {files} file(s) will be removed in the background.",
874
+ "courseDeleteQueueError": "Unable to start asynchronous course deletion.",
875
+ "courseDeleteImpactLoadError": "Unable to load the course deletion impact.",
773
876
  "coursesRemoved": "{count} course(s) removed.",
774
877
  "coursesArchived": "{count} course(s) archived.",
775
878
  "deleteOnlyArchived": "Only archived courses can be deleted.",
776
879
  "bulkDeleteArchivedOnly": "Only selected archived courses will be deleted.",
880
+ "bulkDeleteUseSingleFlow": "Use the single-item deletion flow to review impact and follow the async job.",
777
881
  "codeCopied": "Code \"{code}\" copied."
778
882
  },
779
883
  "StructurePage": {
884
+ "common": {
885
+ "all": "All"
886
+ },
780
887
  "pageHeader": {
781
888
  "title": "Course Structure",
782
889
  "description": "{sessions} sessions - {lessons} lessons - {hours}h {minutes}min of content"
@@ -807,6 +914,10 @@
807
914
  "action": "Create First Session"
808
915
  },
809
916
  "loading": "Loading course structure",
917
+ "error": {
918
+ "loadFailed": "Could not load the course structure.",
919
+ "tryAgain": "Try again"
920
+ },
810
921
  "dragHandle": {
811
922
  "disabled": "Clear search to reorder",
812
923
  "enabled": "Drag to reorder"
@@ -941,6 +1052,10 @@
941
1052
  "showTranscriptionIndicator": {
942
1053
  "label": "Transcription",
943
1054
  "description": "Icon when a video has transcription"
1055
+ },
1056
+ "showXpCalculatedIndicator": {
1057
+ "label": "XP calculated",
1058
+ "description": "Icon when the lesson already has an XP map"
944
1059
  }
945
1060
  },
946
1061
  "lessonRow": {
@@ -954,7 +1069,8 @@
954
1069
  "resourcesAria": "{count} resources",
955
1070
  "uploadedVideos": "{count} uploaded video(s)",
956
1071
  "uploadedVideosAria": "{count} uploaded videos",
957
- "hasTranscription": "Has transcription"
1072
+ "hasTranscription": "Has transcription",
1073
+ "xpCalculated": "XP calculated"
958
1074
  },
959
1075
  "sessionRow": {
960
1076
  "collapse": "Collapse session",
@@ -1070,6 +1186,15 @@
1070
1186
  "removeTranscriptionSegment": "Remove segment {count}",
1071
1187
  "transcriptionAcceptedFormats": "Accepted formats: mm:ss and hh:mm:ss.",
1072
1188
  "resourcesCount": "{count} resource(s)",
1189
+ "filterBy": "Filter by",
1190
+ "resourceType": "Type",
1191
+ "resourceTypes": {
1192
+ "supplementary_material": "Supplementary material",
1193
+ "student_download": "Student download",
1194
+ "attachment": "Attachment",
1195
+ "document": "Document",
1196
+ "lesson_audio": "Lesson audio"
1197
+ },
1073
1198
  "addResource": "Add resource",
1074
1199
  "noResources": "No resources added",
1075
1200
  "fileStorageVideosByResolution": "Videos by resolution (File Storage)",
@@ -4613,6 +4738,10 @@
4613
4738
  "duplicateError": "Error duplicating lesson",
4614
4739
  "pasteError": "Error pasting lessons"
4615
4740
  },
4741
+ "resource": {
4742
+ "updateTypeSuccess": "Resource type changed to {type}.",
4743
+ "updateTypeError": "Error changing resource type"
4744
+ },
4616
4745
  "item": {
4617
4746
  "deleteError": "Error deleting items"
4618
4747
  }
@@ -4678,5 +4807,259 @@
4678
4807
  "title": "Delete profile",
4679
4808
  "description": "Are you sure you want to delete the profile \"{name}\"? This action cannot be undone."
4680
4809
  }
4810
+ },
4811
+ "XpAreasPage": {
4812
+ "title": "XP Areas",
4813
+ "description": "Manage macro competency areas for XP distribution.",
4814
+ "breadcrumbs": {
4815
+ "home": "Home",
4816
+ "lms": "LMS",
4817
+ "xp": "XP & Competencies",
4818
+ "current": "Areas"
4819
+ },
4820
+ "sheet": {
4821
+ "createTitle": "New Area",
4822
+ "editTitle": "Edit Area"
4823
+ },
4824
+ "form": {
4825
+ "slug": "Slug",
4826
+ "slugPlaceholder": "e.g. frontend",
4827
+ "namePt": "Name (PT)",
4828
+ "namePtPlaceholder": "e.g. Frontend",
4829
+ "nameEn": "Name (EN)",
4830
+ "nameEnPlaceholder": "e.g. Frontend",
4831
+ "descriptionPt": "Description (PT)",
4832
+ "descriptionPtPlaceholder": "Short description in Portuguese...",
4833
+ "descriptionEn": "Description (EN)",
4834
+ "descriptionEnPlaceholder": "Short description in English...",
4835
+ "color": "Color",
4836
+ "iconSlug": "Icon Slug",
4837
+ "iconSlugPlaceholder": "e.g. code",
4838
+ "sortOrder": "Sort Order",
4839
+ "status": "Status",
4840
+ "statusPlaceholder": "Select status",
4841
+ "validation": {
4842
+ "required": "Required field",
4843
+ "max100": "Maximum 100 characters",
4844
+ "slugPattern": "Only lowercase letters, numbers, and hyphens"
4845
+ }
4846
+ },
4847
+ "table": {
4848
+ "color": "Color",
4849
+ "name": "Name",
4850
+ "slug": "Slug",
4851
+ "status": "Status"
4852
+ },
4853
+ "status": {
4854
+ "active": "Active",
4855
+ "inactive": "Inactive"
4856
+ },
4857
+ "actions": {
4858
+ "create": "New Area",
4859
+ "edit": "Edit",
4860
+ "delete": "Delete",
4861
+ "save": "Save",
4862
+ "saving": "Saving...",
4863
+ "cancel": "Cancel",
4864
+ "deleting": "Deleting..."
4865
+ },
4866
+ "filters": {
4867
+ "searchPlaceholder": "Search areas..."
4868
+ },
4869
+ "empty": {
4870
+ "title": "No areas found",
4871
+ "description": "Create the first XP competency area to get started."
4872
+ },
4873
+ "kpis": {
4874
+ "total": {
4875
+ "label": "Total Areas",
4876
+ "description": "All registered areas"
4877
+ },
4878
+ "active": {
4879
+ "label": "Active",
4880
+ "description": "Currently active areas"
4881
+ },
4882
+ "inactive": {
4883
+ "label": "Inactive",
4884
+ "description": "Deactivated areas"
4885
+ }
4886
+ },
4887
+ "messages": {
4888
+ "createSuccess": "Area created successfully.",
4889
+ "updateSuccess": "Area updated successfully.",
4890
+ "deleteSuccess": "Area deleted successfully.",
4891
+ "saveError": "Error saving area.",
4892
+ "deleteError": "Error deleting area."
4893
+ },
4894
+ "deleteDialog": {
4895
+ "title": "Delete area",
4896
+ "description": "Are you sure you want to delete the area \"{slug}\"? This action cannot be undone."
4897
+ }
4898
+ },
4899
+ "XpSkillsPage": {
4900
+ "title": "XP Skills",
4901
+ "description": "Manage skills and competencies linked to XP areas.",
4902
+ "breadcrumbs": {
4903
+ "home": "Home",
4904
+ "lms": "LMS",
4905
+ "xp": "XP & Competencies",
4906
+ "current": "Skills"
4907
+ },
4908
+ "sheet": {
4909
+ "createTitle": "New Skill",
4910
+ "editTitle": "Edit Skill"
4911
+ },
4912
+ "form": {
4913
+ "slug": "Slug",
4914
+ "slugPlaceholder": "e.g. react-hooks",
4915
+ "namePt": "Name (PT)",
4916
+ "namePtPlaceholder": "e.g. React Hooks",
4917
+ "nameEn": "Name (EN)",
4918
+ "nameEnPlaceholder": "e.g. React Hooks",
4919
+ "descriptionPt": "Description (PT)",
4920
+ "descriptionPtPlaceholder": "Short description in Portuguese...",
4921
+ "descriptionEn": "Description (EN)",
4922
+ "descriptionEnPlaceholder": "Short description in English...",
4923
+ "area": "Area",
4924
+ "areaPlaceholder": "Select an area",
4925
+ "areaNone": "No area",
4926
+ "sortOrder": "Sort Order",
4927
+ "status": "Status",
4928
+ "statusPlaceholder": "Select status",
4929
+ "validation": {
4930
+ "required": "Required field",
4931
+ "max100": "Maximum 100 characters",
4932
+ "slugPattern": "Only lowercase letters, numbers, and hyphens"
4933
+ }
4934
+ },
4935
+ "table": {
4936
+ "name": "Name",
4937
+ "slug": "Slug",
4938
+ "area": "Area",
4939
+ "status": "Status"
4940
+ },
4941
+ "status": {
4942
+ "active": "Active",
4943
+ "inactive": "Inactive"
4944
+ },
4945
+ "actions": {
4946
+ "create": "New Skill",
4947
+ "edit": "Edit",
4948
+ "delete": "Delete",
4949
+ "save": "Save",
4950
+ "saving": "Saving...",
4951
+ "cancel": "Cancel",
4952
+ "deleting": "Deleting..."
4953
+ },
4954
+ "filters": {
4955
+ "searchPlaceholder": "Search skills..."
4956
+ },
4957
+ "empty": {
4958
+ "title": "No skills found",
4959
+ "description": "Create the first XP skill to start mapping competencies."
4960
+ },
4961
+ "kpis": {
4962
+ "total": {
4963
+ "label": "Total Skills",
4964
+ "description": "All registered skills"
4965
+ },
4966
+ "active": {
4967
+ "label": "Active",
4968
+ "description": "Currently active skills"
4969
+ },
4970
+ "inactive": {
4971
+ "label": "Inactive",
4972
+ "description": "Deactivated skills"
4973
+ },
4974
+ "unassigned": {
4975
+ "label": "Unassigned",
4976
+ "description": "Skills without an area"
4977
+ }
4978
+ },
4979
+ "messages": {
4980
+ "createSuccess": "Skill created successfully.",
4981
+ "updateSuccess": "Skill updated successfully.",
4982
+ "deleteSuccess": "Skill deleted successfully.",
4983
+ "saveError": "Error saving skill.",
4984
+ "deleteError": "Error deleting skill."
4985
+ },
4986
+ "deleteDialog": {
4987
+ "title": "Delete skill",
4988
+ "description": "Are you sure you want to delete the skill \"{slug}\"? This action cannot be undone."
4989
+ }
4990
+ },
4991
+ "XpLearningTypesPage": {
4992
+ "title": "Learning Types",
4993
+ "description": "Manage the types of learning activities used in XP segments.",
4994
+ "breadcrumbs": {
4995
+ "home": "Home",
4996
+ "lms": "LMS",
4997
+ "xp": "XP & Competencies",
4998
+ "current": "Learning Types"
4999
+ },
5000
+ "sheet": {
5001
+ "createTitle": "New Learning Type",
5002
+ "editTitle": "Edit Learning Type"
5003
+ },
5004
+ "form": {
5005
+ "slug": "Slug",
5006
+ "slugPlaceholder": "e.g. live-coding",
5007
+ "namePt": "Name (PT)",
5008
+ "namePtPlaceholder": "e.g. Codificação ao vivo",
5009
+ "nameEn": "Name (EN)",
5010
+ "nameEnPlaceholder": "e.g. Live Coding",
5011
+ "descriptionPt": "Description (PT)",
5012
+ "descriptionPtPlaceholder": "Short description in Portuguese...",
5013
+ "descriptionEn": "Description (EN)",
5014
+ "descriptionEnPlaceholder": "Short description in English...",
5015
+ "multiplier": "Multiplier",
5016
+ "multiplierPlaceholder": "e.g. 1.5",
5017
+ "sortOrder": "Sort Order",
5018
+ "status": "Status",
5019
+ "statusPlaceholder": "Select status",
5020
+ "validation": {
5021
+ "required": "Required field",
5022
+ "max100": "Maximum 100 characters",
5023
+ "slugPattern": "Only lowercase letters, numbers, and hyphens",
5024
+ "minZero": "Value must be greater than or equal to zero"
5025
+ }
5026
+ },
5027
+ "table": {
5028
+ "name": "Name",
5029
+ "slug": "Slug",
5030
+ "multiplier": "Multiplier",
5031
+ "status": "Status"
5032
+ },
5033
+ "status": {
5034
+ "active": "Active",
5035
+ "inactive": "Inactive"
5036
+ },
5037
+ "actions": {
5038
+ "create": "New Learning Type",
5039
+ "edit": "Edit",
5040
+ "delete": "Delete",
5041
+ "save": "Save",
5042
+ "saving": "Saving...",
5043
+ "cancel": "Cancel",
5044
+ "deleting": "Deleting..."
5045
+ },
5046
+ "filters": {
5047
+ "searchPlaceholder": "Search learning types..."
5048
+ },
5049
+ "empty": {
5050
+ "title": "No learning types found",
5051
+ "description": "Create the first learning type to categorize XP segments."
5052
+ },
5053
+ "messages": {
5054
+ "createSuccess": "Learning type created successfully.",
5055
+ "updateSuccess": "Learning type updated successfully.",
5056
+ "deleteSuccess": "Learning type deleted successfully.",
5057
+ "saveError": "Error saving learning type.",
5058
+ "deleteError": "Error deleting learning type."
5059
+ },
5060
+ "deleteDialog": {
5061
+ "title": "Delete learning type",
5062
+ "description": "Are you sure you want to delete the learning type \"{slug}\"? This action cannot be undone."
5063
+ }
4681
5064
  }
4682
5065
  }