@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
@@ -1,4 +1,5 @@
1
1
  import { PrismaService } from '@hed-hog/api-prisma';
2
+ import { CreateCurrentBitcodeWalletTransactionDto } from './dto/create-current-bitcode-wallet-transaction.dto';
2
3
  import { CreateBitcodeWalletTransactionDto } from './dto/create-bitcode-wallet-transaction.dto';
3
4
  import { CreateBitcodeWalletDto } from './dto/create-bitcode-wallet.dto';
4
5
  import { UpdateBitcodeWalletDto } from './dto/update-bitcode-wallet.dto';
@@ -73,6 +74,66 @@ export declare class BitcodeWalletService {
73
74
  createdAt: string;
74
75
  updatedAt: string;
75
76
  }>;
77
+ getCurrentUserWallet(userId: number): Promise<{
78
+ transactions: {
79
+ id: number;
80
+ walletId: number;
81
+ type: string;
82
+ amount: number;
83
+ description: string;
84
+ createdAt: string;
85
+ updatedAt: string;
86
+ }[];
87
+ id: number;
88
+ personId: number;
89
+ personName: string;
90
+ currentBalance: number;
91
+ transactionCount: number;
92
+ totalCredits: number;
93
+ totalDebits: number;
94
+ createdAt: string;
95
+ updatedAt: string;
96
+ }>;
97
+ creditCurrentUserWallet(userId: number, dto: CreateCurrentBitcodeWalletTransactionDto): Promise<{
98
+ transactions: {
99
+ id: number;
100
+ walletId: number;
101
+ type: string;
102
+ amount: number;
103
+ description: string;
104
+ createdAt: string;
105
+ updatedAt: string;
106
+ }[];
107
+ id: number;
108
+ personId: number;
109
+ personName: string;
110
+ currentBalance: number;
111
+ transactionCount: number;
112
+ totalCredits: number;
113
+ totalDebits: number;
114
+ createdAt: string;
115
+ updatedAt: string;
116
+ }>;
117
+ createCurrentUserTransaction(userId: number, dto: CreateCurrentBitcodeWalletTransactionDto): Promise<{
118
+ transactions: {
119
+ id: number;
120
+ walletId: number;
121
+ type: string;
122
+ amount: number;
123
+ description: string;
124
+ createdAt: string;
125
+ updatedAt: string;
126
+ }[];
127
+ id: number;
128
+ personId: number;
129
+ personName: string;
130
+ currentBalance: number;
131
+ transactionCount: number;
132
+ totalCredits: number;
133
+ totalDebits: number;
134
+ createdAt: string;
135
+ updatedAt: string;
136
+ }>;
76
137
  update(id: number, dto: UpdateBitcodeWalletDto): Promise<{
77
138
  transactions: {
78
139
  id: number;
@@ -115,11 +176,16 @@ export declare class BitcodeWalletService {
115
176
  updatedAt: string;
116
177
  }>;
117
178
  private ensurePersonExists;
179
+ private resolvePersonIdFromUser;
180
+ private resolveOrCreatePersonForUser;
181
+ private findWalletByPersonId;
182
+ private getOrCreateWalletByPersonId;
118
183
  private ensureWalletExists;
119
184
  private ensurePersonHasNoWallet;
120
185
  private mapWalletRow;
121
186
  private mapTransactionRow;
122
187
  private normalizeOptionalText;
188
+ private buildCurrentTransactionDescription;
123
189
  private param;
124
190
  private queryRows;
125
191
  private querySingle;
@@ -1 +1 @@
1
- {"version":3,"file":"bitcode-wallet.service.d.ts","sourceRoot":"","sources":["../../src/bitcode-wallet/bitcode-wallet.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAgCzE,qBACa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,IAAI,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;IAsGlE,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;IAqDlB,MAAM,CAAC,GAAG,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;IAuBlC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;IAoB9C,MAAM,CAAC,EAAE,EAAE,MAAM;IAKjB,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,iCAAiC;;;;;;;;;;;;;;;;;;;;YA6B1B,kBAAkB;YAWlB,kBAAkB;YAWlB,uBAAuB;IAgBrC,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,KAAK;YAKC,SAAS;YAIT,WAAW;CAI1B"}
1
+ {"version":3,"file":"bitcode-wallet.service.d.ts","sourceRoot":"","sources":["../../src/bitcode-wallet/bitcode-wallet.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD,OAAO,EAAE,wCAAwC,EAAE,MAAM,qDAAqD,CAAC;AAC/G,OAAO,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAgCzE,qBACa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,IAAI,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;IAsGlE,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;IAqDlB,MAAM,CAAC,GAAG,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;IAuBlC,oBAAoB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;IAKnC,uBAAuB,CAC3B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,wCAAwC;;;;;;;;;;;;;;;;;;;;IAQzC,4BAA4B,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,wCAAwC;;;;;;;;;;;;;;;;;;;;IAuBzC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;IAoB9C,MAAM,CAAC,EAAE,EAAE,MAAM;IAKjB,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,iCAAiC;;;;;;;;;;;;;;;;;;;;YA6B1B,kBAAkB;YAWlB,uBAAuB;YAavB,4BAA4B;YAyC5B,oBAAoB;YAOpB,2BAA2B;YA6B3B,kBAAkB;YAWlB,uBAAuB;IAgBrC,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,kCAAkC;IAoB1C,OAAO,CAAC,KAAK;YAKC,SAAS;YAIT,WAAW;CAI1B"}
@@ -154,6 +154,31 @@ let BitcodeWalletService = class BitcodeWalletService {
154
154
  RETURNING id`, [dto.personId]);
155
155
  return this.getById(created.id);
156
156
  }
157
+ async getCurrentUserWallet(userId) {
158
+ const personId = await this.resolveOrCreatePersonForUser(userId);
159
+ return this.getOrCreateWalletByPersonId(personId);
160
+ }
161
+ async creditCurrentUserWallet(userId, dto) {
162
+ return this.createCurrentUserTransaction(userId, Object.assign(Object.assign({}, dto), { type: 'credit' }));
163
+ }
164
+ async createCurrentUserTransaction(userId, dto) {
165
+ var _a, _b;
166
+ const amount = Math.trunc(Number(dto.amount));
167
+ const type = (_a = dto.type) !== null && _a !== void 0 ? _a : 'credit';
168
+ if (!Number.isFinite(amount) || amount < 1) {
169
+ throw new common_1.BadRequestException('BitCode transaction amount must be positive');
170
+ }
171
+ const personId = await this.resolvePersonIdFromUser(userId);
172
+ const wallet = await this.getOrCreateWalletByPersonId(personId);
173
+ if (type === 'debit' && Number((_b = wallet.currentBalance) !== null && _b !== void 0 ? _b : 0) < amount) {
174
+ throw new common_1.BadRequestException('Insufficient BitCode balance');
175
+ }
176
+ return this.createTransaction(wallet.id, {
177
+ type,
178
+ amount,
179
+ description: this.buildCurrentTransactionDescription(dto, type),
180
+ });
181
+ }
157
182
  async update(id, dto) {
158
183
  await this.ensureWalletExists(id);
159
184
  if (dto.personId !== undefined) {
@@ -195,6 +220,57 @@ let BitcodeWalletService = class BitcodeWalletService {
195
220
  throw new common_1.NotFoundException('Person not found');
196
221
  }
197
222
  }
223
+ async resolvePersonIdFromUser(userId) {
224
+ const row = await this.querySingle(`SELECT person_id AS "personId" FROM person_user WHERE user_id = $1 LIMIT 1`, [userId]);
225
+ if (!row) {
226
+ throw new common_1.NotFoundException('No person profile found for this user');
227
+ }
228
+ return Number(row.personId);
229
+ }
230
+ async resolveOrCreatePersonForUser(userId) {
231
+ const existing = await this.querySingle(`SELECT person_id AS "personId" FROM person_user WHERE user_id = $1 LIMIT 1`, [userId]);
232
+ if (existing)
233
+ return Number(existing.personId);
234
+ // Gather name: prefer commerce_customer (richer), fall back to user record
235
+ const customerRow = await this.querySingle(`SELECT name FROM commerce_customer
236
+ WHERE user_id = $1 AND deleted_at IS NULL
237
+ ORDER BY id DESC LIMIT 1`, [userId]);
238
+ const userRow = await this.querySingle(`SELECT name FROM "user" WHERE id = $1`, [userId]);
239
+ const personName = (customerRow === null || customerRow === void 0 ? void 0 : customerRow.name) || (userRow === null || userRow === void 0 ? void 0 : userRow.name) || `Usuário #${userId}`;
240
+ const person = await this.querySingle(`INSERT INTO person (name, type, status, created_at, updated_at)
241
+ VALUES ($1, 'individual'::person_type_6dfa750c4d_enum, 'active'::person_status_7efb97d61c_enum, NOW(), NOW())
242
+ RETURNING id`, [personName]);
243
+ if (!person)
244
+ throw new Error('Failed to create person profile');
245
+ await this.querySingle(`INSERT INTO person_user (person_id, user_id, created_at, updated_at)
246
+ VALUES ($1, $2, NOW(), NOW())
247
+ ON CONFLICT DO NOTHING`, [person.id, userId]);
248
+ return person.id;
249
+ }
250
+ async findWalletByPersonId(personId) {
251
+ return this.querySingle(`SELECT id FROM bitcode_wallet WHERE person_id = $1`, [personId]);
252
+ }
253
+ async getOrCreateWalletByPersonId(personId) {
254
+ await this.ensurePersonExists(personId);
255
+ const created = await this.querySingle(`INSERT INTO bitcode_wallet (
256
+ person_id,
257
+ current_balance,
258
+ created_at,
259
+ updated_at
260
+ ) VALUES (
261
+ $1,
262
+ 0,
263
+ NOW(),
264
+ NOW()
265
+ )
266
+ ON CONFLICT (person_id) DO NOTHING
267
+ RETURNING id`, [personId]);
268
+ const wallet = created !== null && created !== void 0 ? created : (await this.findWalletByPersonId(personId));
269
+ if (!wallet) {
270
+ throw new common_1.NotFoundException('BitCode wallet not found');
271
+ }
272
+ return this.getById(wallet.id);
273
+ }
198
274
  async ensureWalletExists(id) {
199
275
  const row = await this.querySingle(`SELECT id FROM bitcode_wallet WHERE id = $1`, [id]);
200
276
  if (!row) {
@@ -243,6 +319,21 @@ let BitcodeWalletService = class BitcodeWalletService {
243
319
  const normalized = value === null || value === void 0 ? void 0 : value.trim();
244
320
  return normalized ? normalized : null;
245
321
  }
322
+ buildCurrentTransactionDescription(dto, type) {
323
+ const description = this.normalizeOptionalText(dto.description);
324
+ const source = this.normalizeOptionalText(dto.source);
325
+ const fallback = type === 'debit' ? 'Class debit' : 'Class reward';
326
+ if (description && source) {
327
+ return description.toLowerCase().includes(source.toLowerCase())
328
+ ? description
329
+ : `${description} - ${source}`;
330
+ }
331
+ if (description)
332
+ return description;
333
+ if (source)
334
+ return `${fallback}: ${source}`;
335
+ return fallback;
336
+ }
246
337
  param(values, value) {
247
338
  values.push(value);
248
339
  return `$${values.length}`;
@@ -1 +1 @@
1
- {"version":3,"file":"bitcode-wallet.service.js","sourceRoot":"","sources":["../../src/bitcode-wallet/bitcode-wallet.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitcode-wallet.service.js","sourceRoot":"","sources":["../../src/bitcode-wallet/bitcode-wallet.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type BitcodeTransactionType } from './create-bitcode-wallet-transaction.dto';
2
+ export declare class CreateCurrentBitcodeWalletTransactionDto {
3
+ type?: BitcodeTransactionType;
4
+ amount: number;
5
+ description?: string | null;
6
+ source?: string | null;
7
+ }
8
+ //# sourceMappingURL=create-current-bitcode-wallet-transaction.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-current-bitcode-wallet-transaction.dto.d.ts","sourceRoot":"","sources":["../../../src/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,yCAAyC,CAAC;AAEjD,qBAAa,wCAAwC;IAGnD,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAI9B,MAAM,EAAE,MAAM,CAAC;IAKf,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAK5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreateCurrentBitcodeWalletTransactionDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const create_bitcode_wallet_transaction_dto_1 = require("./create-bitcode-wallet-transaction.dto");
15
+ class CreateCurrentBitcodeWalletTransactionDto {
16
+ }
17
+ exports.CreateCurrentBitcodeWalletTransactionDto = CreateCurrentBitcodeWalletTransactionDto;
18
+ __decorate([
19
+ (0, class_validator_1.IsOptional)(),
20
+ (0, class_validator_1.IsEnum)(create_bitcode_wallet_transaction_dto_1.BITCODE_TRANSACTION_TYPE_VALUES),
21
+ __metadata("design:type", String)
22
+ ], CreateCurrentBitcodeWalletTransactionDto.prototype, "type", void 0);
23
+ __decorate([
24
+ (0, class_validator_1.IsInt)(),
25
+ (0, class_validator_1.Min)(1),
26
+ __metadata("design:type", Number)
27
+ ], CreateCurrentBitcodeWalletTransactionDto.prototype, "amount", void 0);
28
+ __decorate([
29
+ (0, class_validator_1.IsOptional)(),
30
+ (0, class_validator_1.IsString)(),
31
+ (0, class_validator_1.MaxLength)(2000),
32
+ __metadata("design:type", String)
33
+ ], CreateCurrentBitcodeWalletTransactionDto.prototype, "description", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.IsOptional)(),
36
+ (0, class_validator_1.IsString)(),
37
+ (0, class_validator_1.MaxLength)(200),
38
+ __metadata("design:type", String)
39
+ ], CreateCurrentBitcodeWalletTransactionDto.prototype, "source", void 0);
40
+ //# sourceMappingURL=create-current-bitcode-wallet-transaction.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-current-bitcode-wallet-transaction.dto.js","sourceRoot":"","sources":["../../../src/bitcode-wallet/dto/create-current-bitcode-wallet-transaction.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,mGAGiD;AAEjD,MAAa,wCAAwC;CAkBpD;AAlBD,4FAkBC;AAfC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,uEAA+B,CAAC;;sEACV;AAI9B;IAFC,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;wEACQ;AAKf;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,IAAI,CAAC;;6EACY;AAK5B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;wEACQ"}
@@ -58,7 +58,7 @@ export declare class ClassGroupController {
58
58
  frequency?: "daily" | "weekly" | "monthly" | "yearly";
59
59
  interval?: number;
60
60
  until?: string;
61
- daysOfWeek?: ("FR" | "SA" | "MO" | "TH" | "TU" | "WE" | "SU")[];
61
+ daysOfWeek?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[];
62
62
  };
63
63
  id: any;
64
64
  code: any;
@@ -176,15 +176,15 @@ export declare class ClassGroupController {
176
176
  status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
177
177
  }[]>;
178
178
  enrollStudent(id: number, dto: EnrollStudentDto): Promise<{
179
- status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
180
179
  id: number;
180
+ status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
181
+ course_id: number;
181
182
  created_at: Date;
182
183
  updated_at: Date;
183
- person_id: number;
184
- course_id: number;
185
184
  course_class_group_id: number | null;
186
185
  completed_at: Date | null;
187
186
  final_score: number | null;
187
+ person_id: number;
188
188
  enrolled_at: Date;
189
189
  progress_percent: number;
190
190
  }>;
@@ -240,7 +240,7 @@ export declare class ClassGroupController {
240
240
  frequency: "daily" | "weekly" | "monthly" | "yearly";
241
241
  interval: number;
242
242
  until: string;
243
- daysOfWeek?: ("FR" | "SA" | "MO" | "TH" | "TU" | "WE" | "SU")[];
243
+ daysOfWeek?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[];
244
244
  };
245
245
  isRecurring: boolean;
246
246
  }[]>;
@@ -266,7 +266,7 @@ export declare class ClassGroupController {
266
266
  frequency: "daily" | "weekly" | "monthly" | "yearly";
267
267
  interval: number;
268
268
  until: string;
269
- daysOfWeek?: ("FR" | "SA" | "MO" | "TH" | "TU" | "WE" | "SU")[];
269
+ daysOfWeek?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[];
270
270
  };
271
271
  isRecurring: boolean;
272
272
  }>;
@@ -292,7 +292,7 @@ export declare class ClassGroupController {
292
292
  frequency: "daily" | "weekly" | "monthly" | "yearly";
293
293
  interval: number;
294
294
  until: string;
295
- daysOfWeek?: ("FR" | "SA" | "MO" | "TH" | "TU" | "WE" | "SU")[];
295
+ daysOfWeek?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[];
296
296
  };
297
297
  isRecurring: boolean;
298
298
  }>;
@@ -319,20 +319,20 @@ export declare class ClassGroupController {
319
319
  }>;
320
320
  listMaterials(id: number, sessionId?: string): Promise<({
321
321
  file: {
322
- size: number;
323
- path: string;
324
322
  id: number;
325
323
  filename: string;
324
+ path: string;
325
+ size: number;
326
326
  };
327
327
  course_class_session: {
328
- title: string;
329
328
  id: number;
329
+ title: string;
330
330
  };
331
331
  } & {
332
+ description: string | null;
333
+ id: number;
332
334
  title: string;
333
335
  url: string | null;
334
- id: number;
335
- description: string | null;
336
336
  created_at: Date;
337
337
  updated_at: Date;
338
338
  course_class_group_id: number;
@@ -343,16 +343,16 @@ export declare class ClassGroupController {
343
343
  })[]>;
344
344
  createMaterial(id: number, dto: CreateMaterialDto): Promise<{
345
345
  file: {
346
- size: number;
347
- path: string;
348
346
  id: number;
349
347
  filename: string;
348
+ path: string;
349
+ size: number;
350
350
  };
351
351
  } & {
352
+ description: string | null;
353
+ id: number;
352
354
  title: string;
353
355
  url: string | null;
354
- id: number;
355
- description: string | null;
356
356
  created_at: Date;
357
357
  updated_at: Date;
358
358
  course_class_group_id: number;
@@ -200,15 +200,15 @@ export declare class ClassGroupService {
200
200
  status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
201
201
  }[]>;
202
202
  enrollStudent(classGroupId: number, personId: number): Promise<{
203
- status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
204
203
  id: number;
204
+ status: import("@prisma/client").$Enums.course_enrollment_status_22007f5947_enum;
205
+ course_id: number;
205
206
  created_at: Date;
206
207
  updated_at: Date;
207
- person_id: number;
208
- course_id: number;
209
208
  course_class_group_id: number | null;
210
209
  completed_at: Date | null;
211
210
  final_score: number | null;
211
+ person_id: number;
212
212
  enrolled_at: Date;
213
213
  progress_percent: number;
214
214
  }>;
@@ -370,20 +370,20 @@ export declare class ClassGroupService {
370
370
  private handlePrismaError;
371
371
  listMaterials(classGroupId: number, sessionId?: number): Promise<({
372
372
  file: {
373
- size: number;
374
- path: string;
375
373
  id: number;
376
374
  filename: string;
375
+ path: string;
376
+ size: number;
377
377
  };
378
378
  course_class_session: {
379
- title: string;
380
379
  id: number;
380
+ title: string;
381
381
  };
382
382
  } & {
383
+ description: string | null;
384
+ id: number;
383
385
  title: string;
384
386
  url: string | null;
385
- id: number;
386
- description: string | null;
387
387
  created_at: Date;
388
388
  updated_at: Date;
389
389
  course_class_group_id: number;
@@ -394,16 +394,16 @@ export declare class ClassGroupService {
394
394
  })[]>;
395
395
  createMaterial(classGroupId: number, dto: import('./dto/material.dto').CreateMaterialDto): Promise<{
396
396
  file: {
397
- size: number;
398
- path: string;
399
397
  id: number;
400
398
  filename: string;
399
+ path: string;
400
+ size: number;
401
401
  };
402
402
  } & {
403
+ description: string | null;
404
+ id: number;
403
405
  title: string;
404
406
  url: string | null;
405
- id: number;
406
- description: string | null;
407
407
  created_at: Date;
408
408
  updated_at: Date;
409
409
  course_class_group_id: number;
@@ -1,6 +1,6 @@
1
1
  import { PrismaService } from '@hed-hog/api-prisma';
2
2
  import { FileService, NotificationService, SettingService } from '@hed-hog/core';
3
- import { IJobHandler, QueueHandlerRegistry } from '@hed-hog/queue';
3
+ import { DatabaseQueueProvider, IJobHandler, QueueHandlerRegistry } from '@hed-hog/queue';
4
4
  import { OnModuleInit } from '@nestjs/common';
5
5
  export declare class CourseAudioTranscriptionService implements OnModuleInit, IJobHandler {
6
6
  private readonly prismaService;
@@ -8,11 +8,12 @@ export declare class CourseAudioTranscriptionService implements OnModuleInit, IJ
8
8
  private readonly fileService;
9
9
  private readonly notificationService;
10
10
  private readonly registry;
11
+ private readonly dbQueue;
11
12
  private readonly logger;
12
13
  private createProgressEvent;
13
14
  private resolveNotificationProgress;
14
15
  private updateAsyncNotification;
15
- constructor(prismaService: PrismaService, settingService: SettingService, fileService: FileService, notificationService: NotificationService, registry: QueueHandlerRegistry);
16
+ constructor(prismaService: PrismaService, settingService: SettingService, fileService: FileService, notificationService: NotificationService, registry: QueueHandlerRegistry, dbQueue: DatabaseQueueProvider);
16
17
  onModuleInit(): void;
17
18
  handle(job: {
18
19
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"course-audio-transcription.service.d.ts","sourceRoot":"","sources":["../../src/course/course-audio-transcription.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAgC,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAIH,YAAY,EAEf,MAAM,gBAAgB,CAAC;AAexB,qBACa,+BAAgC,YAAW,YAAY,EAAE,WAAW;IAsE7E,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IA7E3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoD;YAE7D,mBAAmB;IAqBjC,OAAO,CAAC,2BAA2B;YAqBrB,uBAAuB;gBAyBlB,aAAa,EAAE,aAAa,EAE5B,cAAc,EAAE,cAAc,EAE9B,WAAW,EAAE,WAAW,EAExB,mBAAmB,EAAE,mBAAmB,EAExC,QAAQ,EAAE,oBAAoB;IAGjD,YAAY;IAKN,MAAM,CAAC,GAAG,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC;CA4RlB"}
1
+ {"version":3,"file":"course-audio-transcription.service.d.ts","sourceRoot":"","sources":["../../src/course/course-audio-transcription.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAgC,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAqB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAIH,YAAY,EAEf,MAAM,gBAAgB,CAAC;AAexB,qBACa,+BAAgC,YAAW,YAAY,EAAE,WAAW;IAsE7E,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IA/E1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoD;YAE7D,mBAAmB;IAqBjC,OAAO,CAAC,2BAA2B;YAqBrB,uBAAuB;gBAyBlB,aAAa,EAAE,aAAa,EAE5B,cAAc,EAAE,cAAc,EAE9B,WAAW,EAAE,WAAW,EAExB,mBAAmB,EAAE,mBAAmB,EAExC,QAAQ,EAAE,oBAAoB,EAE9B,OAAO,EAAE,qBAAqB;IAGjD,YAAY;IAKN,MAAM,CAAC,GAAG,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC;CA+TlB"}
@@ -72,12 +72,13 @@ let CourseAudioTranscriptionService = CourseAudioTranscriptionService_1 = class
72
72
  this.logger.warn(`Failed to update async notification ${context.notificationId} for user ${context.userId}: ${error instanceof Error ? error.message : 'unknown error'}`);
73
73
  }
74
74
  }
75
- constructor(prismaService, settingService, fileService, notificationService, registry) {
75
+ constructor(prismaService, settingService, fileService, notificationService, registry, dbQueue) {
76
76
  this.prismaService = prismaService;
77
77
  this.settingService = settingService;
78
78
  this.fileService = fileService;
79
79
  this.notificationService = notificationService;
80
80
  this.registry = registry;
81
+ this.dbQueue = dbQueue;
81
82
  this.logger = new common_1.Logger(CourseAudioTranscriptionService_1.name);
82
83
  }
83
84
  onModuleInit() {
@@ -109,11 +110,11 @@ let CourseAudioTranscriptionService = CourseAudioTranscriptionService_1 = class
109
110
  ]);
110
111
  const transcriptionEnabled = settings['lms-audio-transcription-enabled'] !== false;
111
112
  if (!transcriptionEnabled) {
112
- this.logger.warn(`Transcription skipped for lesson ${lessonId}: disabled by lms-audio-transcription-enabled setting`);
113
+ const msg = `Transcrição desabilitada nas configurações do LMS (lms-audio-transcription-enabled=false).`;
113
114
  if (notificationContext) {
114
- await this.updateAsyncNotification(notificationContext, 100, 'Transcrição desabilitada nas configurações do LMS.', false);
115
+ await this.updateAsyncNotification(notificationContext, 100, msg, false);
115
116
  }
116
- return;
117
+ throw new queue_1.NonRetryableError(msg);
117
118
  }
118
119
  const profileId = Number(settings['ai-openai-profile-id']);
119
120
  let apiKey = '';
@@ -127,11 +128,14 @@ let CourseAudioTranscriptionService = CourseAudioTranscriptionService_1 = class
127
128
  }
128
129
  }
129
130
  if (!apiKey) {
130
- this.logger.warn(`Transcription skipped for lesson ${lessonId}: OpenAI profile not configured`);
131
+ const profileIdValue = settings['ai-openai-profile-id'];
132
+ const msg = profileIdValue
133
+ ? `Perfil de IA (id=${profileIdValue}) não encontrado ou não possui chave de API OpenAI configurada. Verifique em Settings → Integrações → Profiles.`
134
+ : `Transcrição de áudio requer um perfil OpenAI configurado.\n\nComo configurar:\n1. Acesse Settings → Integrações → Profiles\n2. Crie um perfil do tipo OpenAI com sua API Key\n3. Copie o ID do perfil criado\n4. Acesse Settings → LMS e defina o campo \'ai-openai-profile-id\' com esse ID`;
131
135
  if (notificationContext) {
132
- await this.updateAsyncNotification(notificationContext, 100, 'Transcrição não iniciada: perfil de IA não configurado em Settings → AI.', false);
136
+ await this.updateAsyncNotification(notificationContext, 100, msg, false);
133
137
  }
134
- return;
138
+ throw new queue_1.NonRetryableError(msg);
135
139
  }
136
140
  const course = await this.prismaService.course.findUnique({
137
141
  where: { id: courseId },
@@ -259,6 +263,41 @@ let CourseAudioTranscriptionService = CourseAudioTranscriptionService_1 = class
259
263
  }),
260
264
  ]);
261
265
  this.logger.log(`Transcription saved for lesson ${lessonId}: ${allSegments.length} segments`);
266
+ // Automatically trigger XP calculation after transcription completes.
267
+ try {
268
+ const existingMap = await this.prismaService.lesson_xp_map.findUnique({
269
+ where: { course_lesson_id: lessonId },
270
+ select: { id: true },
271
+ });
272
+ let mapId;
273
+ if (existingMap) {
274
+ mapId = existingMap.id;
275
+ await this.prismaService.$executeRawUnsafe(`UPDATE lesson_xp_map
276
+ SET status = 'processing'::lesson_xp_map_status_d4e5f6a7b8_enum,
277
+ processing_error = NULL,
278
+ updated_at = NOW()
279
+ WHERE id = $1`, mapId);
280
+ }
281
+ else {
282
+ const rows = await this.prismaService.$queryRawUnsafe(`INSERT INTO lesson_xp_map (course_lesson_id, version, total_xp, status, created_at, updated_at)
283
+ VALUES ($1, 1, 0, 'processing'::lesson_xp_map_status_d4e5f6a7b8_enum, NOW(), NOW())
284
+ RETURNING id`, lessonId);
285
+ mapId = rows[0].id;
286
+ }
287
+ await this.dbQueue.enqueue({
288
+ type: 'lms.lesson.xp.calculate',
289
+ queueName: 'lms.lesson.xp.calculate',
290
+ payload: { lessonId, mapId, userId: notificationUserId !== null && notificationUserId !== void 0 ? notificationUserId : 0 },
291
+ maxAttempts: 3,
292
+ sourceModule: 'lms',
293
+ sourceEntity: 'course_lesson',
294
+ sourceEntityId: String(lessonId),
295
+ });
296
+ this.logger.log(`XP calculation job enqueued for lesson ${lessonId} (map ${mapId})`);
297
+ }
298
+ catch (xpErr) {
299
+ this.logger.warn(`Failed to enqueue XP calculation for lesson ${lessonId}: ${xpErr instanceof Error ? xpErr.message : String(xpErr)}`);
300
+ }
262
301
  await emitProgress(`Transcrição concluída com ${allSegments.length} segmento(s).`, {
263
302
  phase: 'transcription_done',
264
303
  lessonId,
@@ -290,10 +329,12 @@ exports.CourseAudioTranscriptionService = CourseAudioTranscriptionService = Cour
290
329
  __param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => core_1.FileService))),
291
330
  __param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => core_1.NotificationService))),
292
331
  __param(4, (0, common_1.Inject)((0, common_1.forwardRef)(() => queue_1.QueueHandlerRegistry))),
332
+ __param(5, (0, common_1.Inject)((0, common_1.forwardRef)(() => queue_1.DatabaseQueueProvider))),
293
333
  __metadata("design:paramtypes", [api_prisma_1.PrismaService,
294
334
  core_1.SettingService,
295
335
  core_1.FileService,
296
336
  core_1.NotificationService,
297
- queue_1.QueueHandlerRegistry])
337
+ queue_1.QueueHandlerRegistry,
338
+ queue_1.DatabaseQueueProvider])
298
339
  ], CourseAudioTranscriptionService);
299
340
  //# sourceMappingURL=course-audio-transcription.service.js.map