@hed-hog/lms 0.0.366 → 0.0.370
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.
- package/dist/certificate/certificate.controller.d.ts +1 -1
- package/dist/certificate/certificate.controller.d.ts.map +1 -1
- package/dist/certificate/certificate.controller.js +4 -2
- package/dist/certificate/certificate.controller.js.map +1 -1
- package/dist/certificate/certificate.service.d.ts +50 -0
- package/dist/certificate/certificate.service.d.ts.map +1 -1
- package/dist/certificate/certificate.service.js +73 -0
- package/dist/certificate/certificate.service.js.map +1 -1
- package/dist/course/course-ai-usage.service.d.ts +58 -0
- package/dist/course/course-ai-usage.service.d.ts.map +1 -0
- package/dist/course/course-ai-usage.service.js +176 -0
- package/dist/course/course-ai-usage.service.js.map +1 -0
- package/dist/course/course-audio-transcription.service.d.ts +65 -1
- package/dist/course/course-audio-transcription.service.d.ts.map +1 -1
- package/dist/course/course-audio-transcription.service.js +381 -29
- package/dist/course/course-audio-transcription.service.js.map +1 -1
- package/dist/course/course-export-scorm12.service.d.ts +3 -0
- package/dist/course/course-export-scorm12.service.d.ts.map +1 -1
- package/dist/course/course-export-scorm12.service.js +141 -6
- package/dist/course/course-export-scorm12.service.js.map +1 -1
- package/dist/course/course-export.service.d.ts.map +1 -1
- package/dist/course/course-export.service.js +2 -1
- package/dist/course/course-export.service.js.map +1 -1
- package/dist/course/course-lesson.controller.d.ts +25 -3
- package/dist/course/course-lesson.controller.d.ts.map +1 -1
- package/dist/course/course-lesson.controller.js +71 -8
- package/dist/course/course-lesson.controller.js.map +1 -1
- package/dist/course/course-structure.controller.d.ts +26 -5
- package/dist/course/course-structure.controller.d.ts.map +1 -1
- package/dist/course/course-structure.controller.js +31 -1
- package/dist/course/course-structure.controller.js.map +1 -1
- package/dist/course/course-structure.service.d.ts +37 -5
- package/dist/course/course-structure.service.d.ts.map +1 -1
- package/dist/course/course-structure.service.js +165 -20
- package/dist/course/course-structure.service.js.map +1 -1
- package/dist/course/course-transcription-translation.service.d.ts +31 -0
- package/dist/course/course-transcription-translation.service.d.ts.map +1 -0
- package/dist/course/course-transcription-translation.service.js +227 -0
- package/dist/course/course-transcription-translation.service.js.map +1 -0
- package/dist/course/course-video-agent-pipeline.service.js +7 -7
- package/dist/course/course-video-agent-pipeline.service.js.map +1 -1
- package/dist/course/course.module.d.ts.map +1 -1
- package/dist/course/course.module.js +4 -0
- package/dist/course/course.module.js.map +1 -1
- package/dist/course/dto/create-course-bulk-job.dto.d.ts +2 -1
- package/dist/course/dto/create-course-bulk-job.dto.d.ts.map +1 -1
- package/dist/course/dto/create-course-bulk-job.dto.js +6 -1
- package/dist/course/dto/create-course-bulk-job.dto.js.map +1 -1
- package/dist/course/dto/create-course-export.dto.d.ts +1 -0
- package/dist/course/dto/create-course-export.dto.d.ts.map +1 -1
- package/dist/course/dto/create-course-export.dto.js +6 -0
- package/dist/course/dto/create-course-export.dto.js.map +1 -1
- package/dist/course/lms-bulk-upload-automation.service.d.ts.map +1 -1
- package/dist/course/lms-bulk-upload-automation.service.js +26 -13
- package/dist/course/lms-bulk-upload-automation.service.js.map +1 -1
- package/dist/course/lms-bulk-upload.controller.d.ts +3 -0
- package/dist/course/lms-bulk-upload.controller.d.ts.map +1 -1
- package/dist/course/lms-bulk-upload.service.d.ts +3 -0
- package/dist/course/lms-bulk-upload.service.d.ts.map +1 -1
- package/dist/course/lms-bulk-upload.service.js +48 -29
- package/dist/course/lms-bulk-upload.service.js.map +1 -1
- package/dist/course/subtitle.util.d.ts +46 -0
- package/dist/course/subtitle.util.d.ts.map +1 -0
- package/dist/course/subtitle.util.js +206 -0
- package/dist/course/subtitle.util.js.map +1 -0
- package/dist/enterprise/training/training-student.service.d.ts +27 -0
- package/dist/enterprise/training/training-student.service.d.ts.map +1 -1
- package/dist/enterprise/training/training-student.service.js +197 -10
- package/dist/enterprise/training/training-student.service.js.map +1 -1
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts +3 -1
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.d.ts.map +1 -1
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js +19 -5
- package/dist/lesson-xp-map/lesson-xp-ai-calculation.service.js.map +1 -1
- package/dist/lesson-xp-map/lesson-xp-map.module.d.ts.map +1 -1
- package/dist/lesson-xp-map/lesson-xp-map.module.js +2 -1
- package/dist/lesson-xp-map/lesson-xp-map.module.js.map +1 -1
- package/dist/libraries/lms/tsconfig.tsbuildinfo +1 -1
- package/dist/lms.module.d.ts.map +1 -1
- package/dist/lms.module.js +4 -0
- package/dist/lms.module.js.map +1 -1
- package/dist/platforma/platforma-performance.service.js +121 -121
- package/dist/platforma/platforma-video.service.d.ts +8 -0
- package/dist/platforma/platforma-video.service.d.ts.map +1 -1
- package/dist/platforma/platforma-video.service.js +45 -2
- package/dist/platforma/platforma-video.service.js.map +1 -1
- package/dist/platforma/platforma.controller.d.ts +99 -1
- package/dist/platforma/platforma.controller.d.ts.map +1 -1
- package/dist/platforma/platforma.controller.js +111 -2
- package/dist/platforma/platforma.controller.js.map +1 -1
- package/dist/training/dto/create-training.dto.d.ts +9 -0
- package/dist/training/dto/create-training.dto.d.ts.map +1 -1
- package/dist/training/dto/create-training.dto.js +45 -1
- package/dist/training/dto/create-training.dto.js.map +1 -1
- package/dist/training/training.controller.d.ts +144 -0
- package/dist/training/training.controller.d.ts.map +1 -1
- package/dist/training/training.service.d.ts +149 -0
- package/dist/training/training.service.d.ts.map +1 -1
- package/dist/training/training.service.js +332 -167
- package/dist/training/training.service.js.map +1 -1
- package/hedhog/data/image_type.yaml +10 -0
- package/hedhog/data/route.yaml +251 -0
- package/hedhog/data/setting_group.yaml +97 -0
- package/hedhog/frontend/app/bulk-upload-sessions/page.tsx.ejs +139 -27
- package/hedhog/frontend/app/courses/[id]/_components/CourseFlagsCard.tsx.ejs +69 -57
- package/hedhog/frontend/app/courses/[id]/_components/CourseIssuedCertificatesCard.tsx.ejs +168 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-ai-costs-tab.tsx.ejs +191 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-export-sheet.tsx.ejs +81 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-exports-tab.tsx.ejs +12 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-course.tsx.ejs +69 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson.tsx.ejs +267 -19
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-bulk.tsx.ejs +114 -86
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +239 -31
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +344 -59
- package/hedhog/frontend/app/courses/[id]/structure/_components/lesson-video-preview.tsx.ejs +200 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row-lesson.tsx.ejs +1 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/types.ts.ejs +3 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/adapters/course-structure.adapter.ts.ejs +19 -7
- package/hedhog/frontend/app/courses/[id]/structure/_data/types/api-course.types.ts.ejs +4 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-ai-costs.ts.ejs +40 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-exports.ts.ejs +25 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-structure-mutations.ts.ejs +148 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-transcription-segments.ts.ejs +157 -8
- package/hedhog/frontend/app/courses/_components/CourseRowActions.tsx.ejs +1 -22
- package/hedhog/frontend/app/courses/page.tsx.ejs +26 -4
- package/hedhog/frontend/app/paths/page.tsx.ejs +612 -164
- package/hedhog/frontend/messages/en.json +23 -12
- package/hedhog/frontend/messages/pt.json +23 -12
- package/hedhog/query/triggers.sql +33 -0
- package/hedhog/table/course_ai_usage.yaml +46 -0
- package/hedhog/table/course_lesson.yaml +3 -0
- package/hedhog/table/course_lesson_answer.yaml +37 -0
- package/hedhog/table/course_lesson_transcription_segment.yaml +8 -0
- package/hedhog/table/learning_path.yaml +6 -0
- package/hedhog/table/learning_path_module.yaml +22 -0
- package/hedhog/table/learning_path_step.yaml +9 -6
- package/hedhog/table/lesson_view_event.yaml +66 -66
- package/package.json +9 -9
- package/src/certificate/certificate.controller.ts +2 -0
- package/src/certificate/certificate.service.ts +99 -0
- package/src/course/course-ai-usage.service.ts +221 -0
- package/src/course/course-audio-transcription.service.ts +471 -43
- package/src/course/course-export-scorm12.service.ts +149 -5
- package/src/course/course-export.service.ts +1 -0
- package/src/course/course-lesson.controller.ts +59 -6
- package/src/course/course-structure.controller.ts +16 -0
- package/src/course/course-structure.service.ts +184 -10
- package/src/course/course-transcription-translation.service.ts +293 -0
- package/src/course/course-video-agent-pipeline.service.ts +471 -471
- package/src/course/course.module.ts +4 -0
- package/src/course/dto/create-course-bulk-job.dto.ts +7 -3
- package/src/course/dto/create-course-export.dto.ts +6 -0
- package/src/course/ffmpeg.util.ts +65 -65
- package/src/course/lms-bulk-upload-automation.service.ts +29 -7
- package/src/course/lms-bulk-upload.service.ts +20 -1
- package/src/course/subtitle.util.ts +220 -0
- package/src/enterprise/training/training-student.service.ts +224 -4
- package/src/lesson-xp-map/lesson-xp-ai-calculation.service.ts +14 -0
- package/src/lesson-xp-map/lesson-xp-map.module.ts +2 -1
- package/src/lms.module.ts +4 -0
- package/src/platforma/dto/heartbeat.dto.ts +30 -30
- package/src/platforma/handlers/emit-certificate.handler.ts +117 -117
- package/src/platforma/handlers/lesson-heartbeat.handler.ts +343 -343
- package/src/platforma/platforma-heartbeat.service.ts +33 -33
- package/src/platforma/platforma-performance.service.ts +606 -606
- package/src/platforma/platforma-search.service.ts +48 -48
- package/src/platforma/platforma-video.service.ts +59 -3
- package/src/platforma/platforma.controller.ts +88 -0
- package/src/training/dto/create-training.dto.ts +36 -0
- package/src/training/training.service.ts +360 -163
|
@@ -108,9 +108,18 @@ let CourseStructureController = class CourseStructureController {
|
|
|
108
108
|
getVideoProcessingStats(courseId) {
|
|
109
109
|
return this.courseStructureService.getVideoProcessingStats(courseId);
|
|
110
110
|
}
|
|
111
|
+
getCourseTranscriptionLocales(courseId) {
|
|
112
|
+
return this.courseStructureService.getCourseTranscriptionLocales(courseId);
|
|
113
|
+
}
|
|
114
|
+
deleteAllCourseTranscriptions(courseId) {
|
|
115
|
+
return this.courseStructureService.deleteAllCourseTranscriptions(courseId);
|
|
116
|
+
}
|
|
117
|
+
getCourseAiCosts(courseId) {
|
|
118
|
+
return this.courseStructureService.getCourseAiCosts(courseId);
|
|
119
|
+
}
|
|
111
120
|
createBulkJobs(user, courseId, dto) {
|
|
112
121
|
var _a;
|
|
113
|
-
return this.courseStructureService.bulkEnqueueJobs(courseId, dto.jobType, (_a = user === null || user === void 0 ? void 0 : user.id) !== null && _a !== void 0 ? _a : 0, dto.reprocessAlreadyProcessed);
|
|
122
|
+
return this.courseStructureService.bulkEnqueueJobs(courseId, dto.jobType, (_a = user === null || user === void 0 ? void 0 : user.id) !== null && _a !== void 0 ? _a : 0, dto.reprocessAlreadyProcessed, dto.targetLocaleId);
|
|
114
123
|
}
|
|
115
124
|
};
|
|
116
125
|
exports.CourseStructureController = CourseStructureController;
|
|
@@ -291,6 +300,27 @@ __decorate([
|
|
|
291
300
|
__metadata("design:paramtypes", [Number]),
|
|
292
301
|
__metadata("design:returntype", void 0)
|
|
293
302
|
], CourseStructureController.prototype, "getVideoProcessingStats", null);
|
|
303
|
+
__decorate([
|
|
304
|
+
(0, common_1.Get)('transcription-locales'),
|
|
305
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
|
|
306
|
+
__metadata("design:type", Function),
|
|
307
|
+
__metadata("design:paramtypes", [Number]),
|
|
308
|
+
__metadata("design:returntype", void 0)
|
|
309
|
+
], CourseStructureController.prototype, "getCourseTranscriptionLocales", null);
|
|
310
|
+
__decorate([
|
|
311
|
+
(0, common_1.Delete)('transcription-segments'),
|
|
312
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
|
|
313
|
+
__metadata("design:type", Function),
|
|
314
|
+
__metadata("design:paramtypes", [Number]),
|
|
315
|
+
__metadata("design:returntype", void 0)
|
|
316
|
+
], CourseStructureController.prototype, "deleteAllCourseTranscriptions", null);
|
|
317
|
+
__decorate([
|
|
318
|
+
(0, common_1.Get)('ai-costs'),
|
|
319
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
|
|
320
|
+
__metadata("design:type", Function),
|
|
321
|
+
__metadata("design:paramtypes", [Number]),
|
|
322
|
+
__metadata("design:returntype", void 0)
|
|
323
|
+
], CourseStructureController.prototype, "getCourseAiCosts", null);
|
|
294
324
|
__decorate([
|
|
295
325
|
(0, common_1.Post)('bulk-jobs'),
|
|
296
326
|
__param(0, (0, api_1.User)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-structure.controller.js","sourceRoot":"","sources":["../../src/course/course-structure.controller.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"course-structure.controller.js","sourceRoot":"","sources":["../../src/course/course-structure.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { PrismaService } from '@hed-hog/api-prisma';
|
|
|
2
2
|
import { FileService } from '@hed-hog/core';
|
|
3
3
|
import { QueueJobService } from '@hed-hog/queue';
|
|
4
4
|
import { InstructorService } from '../instructor/instructor.service';
|
|
5
|
+
import { CourseAiUsageService } from './course-ai-usage.service';
|
|
5
6
|
import { CourseOperationsIntegrationService } from './course-operations-integration.service';
|
|
6
7
|
import { CourseVideoHlsService } from './course-video-hls.service';
|
|
7
8
|
import { CreateCourseLessonFrameDto } from './dto/create-course-lesson-frame.dto';
|
|
@@ -26,8 +27,24 @@ export declare class CourseStructureService {
|
|
|
26
27
|
private readonly operationsIntegration;
|
|
27
28
|
private readonly queueJob;
|
|
28
29
|
private readonly courseVideoHlsService;
|
|
30
|
+
private readonly aiUsageService;
|
|
29
31
|
private readonly logger;
|
|
30
|
-
constructor(prisma: PrismaService, fileService: FileService, instructorService: InstructorService, operationsIntegration: CourseOperationsIntegrationService, queueJob: QueueJobService, courseVideoHlsService: CourseVideoHlsService);
|
|
32
|
+
constructor(prisma: PrismaService, fileService: FileService, instructorService: InstructorService, operationsIntegration: CourseOperationsIntegrationService, queueJob: QueueJobService, courseVideoHlsService: CourseVideoHlsService, aiUsageService: CourseAiUsageService);
|
|
33
|
+
getCourseAiCosts(courseId: number): Promise<{
|
|
34
|
+
currency: string;
|
|
35
|
+
totalCostUsd: number;
|
|
36
|
+
byJobType: Array<{
|
|
37
|
+
jobType: string;
|
|
38
|
+
costUsd: number;
|
|
39
|
+
runs: number;
|
|
40
|
+
}>;
|
|
41
|
+
byLesson: Array<{
|
|
42
|
+
lessonId: number | null;
|
|
43
|
+
lessonTitle: string | null;
|
|
44
|
+
costUsd: number;
|
|
45
|
+
runs: number;
|
|
46
|
+
}>;
|
|
47
|
+
}>;
|
|
31
48
|
getStructure(courseId: number): Promise<{
|
|
32
49
|
sessoes: {
|
|
33
50
|
id: string;
|
|
@@ -55,11 +72,12 @@ export declare class CourseStructureService {
|
|
|
55
72
|
conteudoPost: any;
|
|
56
73
|
statusProducao: LessonProductionStatus;
|
|
57
74
|
published: boolean;
|
|
75
|
+
temTranscricao: boolean;
|
|
58
76
|
recursos: {
|
|
59
77
|
id: string;
|
|
60
78
|
nome: string;
|
|
61
79
|
fileId: number;
|
|
62
|
-
tamanho:
|
|
80
|
+
tamanho: number;
|
|
63
81
|
type: LessonFileType;
|
|
64
82
|
is_public: boolean;
|
|
65
83
|
}[];
|
|
@@ -284,8 +302,21 @@ export declare class CourseStructureService {
|
|
|
284
302
|
pasteLessons(courseId: number, targetSessionId: number, dto: PasteLessonsDto): Promise<{
|
|
285
303
|
lessons: any[];
|
|
286
304
|
}>;
|
|
287
|
-
getTranscriptionSegments(lessonId: number): Promise<any>;
|
|
288
|
-
|
|
305
|
+
getTranscriptionSegments(lessonId: number, localeId?: number | null): Promise<any>;
|
|
306
|
+
getAvailableTranscriptionLocales(lessonId: number): Promise<any[]>;
|
|
307
|
+
updateTranscriptionSegments(lessonId: number, dto: UpdateTranscriptionSegmentsDTO, localeId?: number | null): Promise<[any, any]>;
|
|
308
|
+
deleteTranscriptionLocale(lessonId: number, localeId: number | null): Promise<{
|
|
309
|
+
success: boolean;
|
|
310
|
+
deleted: any;
|
|
311
|
+
}>;
|
|
312
|
+
deleteAllCourseTranscriptions(courseId: number): Promise<{
|
|
313
|
+
success: boolean;
|
|
314
|
+
deleted: any;
|
|
315
|
+
}>;
|
|
316
|
+
translateTranscription(lessonId: number, sourceLocaleId: number | null, targetLocaleId: number, notificationId?: number, notificationUserId?: number): Promise<{
|
|
317
|
+
queueJobId: any;
|
|
318
|
+
status: any;
|
|
319
|
+
}>;
|
|
289
320
|
getAudioFiles(lessonId: number): Promise<any>;
|
|
290
321
|
startTranscription(lessonId: number): Promise<{
|
|
291
322
|
queueJobId: any;
|
|
@@ -297,12 +328,13 @@ export declare class CourseStructureService {
|
|
|
297
328
|
withoutOriginal: number;
|
|
298
329
|
alreadyProcessed: number;
|
|
299
330
|
}>;
|
|
300
|
-
bulkEnqueueJobs(courseId: number, jobType: 'transcription' | 'xp_recalculation' | 'video_processing', userId: number, reprocessAlreadyProcessed?: boolean): Promise<{
|
|
331
|
+
bulkEnqueueJobs(courseId: number, jobType: 'transcription' | 'xp_recalculation' | 'video_processing' | 'translate_transcription', userId: number, reprocessAlreadyProcessed?: boolean, targetLocaleId?: number): Promise<{
|
|
301
332
|
queued: number;
|
|
302
333
|
skipped: number;
|
|
303
334
|
skippedWithoutTranscription: number;
|
|
304
335
|
warnings: string[];
|
|
305
336
|
}>;
|
|
337
|
+
getCourseTranscriptionLocales(courseId: number): Promise<any>;
|
|
306
338
|
private syncLessonRelations;
|
|
307
339
|
private getLessonById;
|
|
308
340
|
private ensureCourseExists;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-structure.service.d.ts","sourceRoot":"","sources":["../../src/course/course-structure.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,KAAK,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjD,KAAK,sBAAsB,GACvB,WAAW,GACX,SAAS,GACT,SAAS,GACT,YAAY,GACZ,WAAW,CAAC;AAChB,KAAK,cAAc,GACf,gBAAgB,GAChB,WAAW,GACX,iBAAiB,MAAM,EAAE,GACzB,cAAc,GACd,kBAAkB,GAClB,wBAAwB,CAAC;AAE7B,qBACa,sBAAsB;IAI/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"course-structure.service.d.ts","sourceRoot":"","sources":["../../src/course/course-structure.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,18 +16,23 @@ const core_1 = require("@hed-hog/core");
|
|
|
16
16
|
const queue_1 = require("@hed-hog/queue");
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
18
|
const instructor_service_1 = require("../instructor/instructor.service");
|
|
19
|
+
const course_ai_usage_service_1 = require("./course-ai-usage.service");
|
|
19
20
|
const course_operations_integration_service_1 = require("./course-operations-integration.service");
|
|
20
21
|
const course_video_hls_service_1 = require("./course-video-hls.service");
|
|
21
22
|
let CourseStructureService = CourseStructureService_1 = class CourseStructureService {
|
|
22
|
-
constructor(prisma, fileService, instructorService, operationsIntegration, queueJob, courseVideoHlsService) {
|
|
23
|
+
constructor(prisma, fileService, instructorService, operationsIntegration, queueJob, courseVideoHlsService, aiUsageService) {
|
|
23
24
|
this.prisma = prisma;
|
|
24
25
|
this.fileService = fileService;
|
|
25
26
|
this.instructorService = instructorService;
|
|
26
27
|
this.operationsIntegration = operationsIntegration;
|
|
27
28
|
this.queueJob = queueJob;
|
|
28
29
|
this.courseVideoHlsService = courseVideoHlsService;
|
|
30
|
+
this.aiUsageService = aiUsageService;
|
|
29
31
|
this.logger = new common_1.Logger(CourseStructureService_1.name);
|
|
30
32
|
}
|
|
33
|
+
getCourseAiCosts(courseId) {
|
|
34
|
+
return this.aiUsageService.getCourseAiCosts(courseId);
|
|
35
|
+
}
|
|
31
36
|
async getStructure(courseId) {
|
|
32
37
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
33
38
|
await this.ensureCourseExists(courseId);
|
|
@@ -40,7 +45,9 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
40
45
|
course_lesson: {
|
|
41
46
|
orderBy: { order: 'asc' },
|
|
42
47
|
include: {
|
|
43
|
-
course_lesson_file:
|
|
48
|
+
course_lesson_file: {
|
|
49
|
+
include: { file: { select: { size: true } } },
|
|
50
|
+
},
|
|
44
51
|
course_lesson_video_frame: {
|
|
45
52
|
orderBy: { id: 'asc' },
|
|
46
53
|
include: {
|
|
@@ -133,14 +140,18 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
133
140
|
conteudoPost: parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.conteudoPost,
|
|
134
141
|
statusProducao: this.normalizeProductionStatus(parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.statusProducao),
|
|
135
142
|
published: (_g = lessonPublishedById.get(lesson.id)) !== null && _g !== void 0 ? _g : false,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
143
|
+
temTranscricao: Boolean(lesson.has_transcription),
|
|
144
|
+
recursos: lesson.course_lesson_file.map((fileLink) => {
|
|
145
|
+
var _a, _b;
|
|
146
|
+
return ({
|
|
147
|
+
id: String(fileLink.id),
|
|
148
|
+
nome: fileLink.title,
|
|
149
|
+
fileId: fileLink.file_id,
|
|
150
|
+
tamanho: (_b = (_a = fileLink.file) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0,
|
|
151
|
+
type: this.readLessonFileType(fileLink),
|
|
152
|
+
is_public: this.readLessonFileVisibility(fileLink),
|
|
153
|
+
});
|
|
154
|
+
}),
|
|
144
155
|
frames: lesson.course_lesson_video_frame.map((frame) => {
|
|
145
156
|
var _a, _b, _c, _d;
|
|
146
157
|
return ({
|
|
@@ -887,27 +898,53 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
887
898
|
}
|
|
888
899
|
return { lessons: result };
|
|
889
900
|
}
|
|
890
|
-
async getTranscriptionSegments(lessonId) {
|
|
901
|
+
async getTranscriptionSegments(lessonId, localeId) {
|
|
902
|
+
const where = { course_lesson_id: lessonId };
|
|
903
|
+
if (localeId !== undefined) {
|
|
904
|
+
where.locale_id = localeId !== null && localeId !== void 0 ? localeId : null;
|
|
905
|
+
}
|
|
891
906
|
return this.prisma.course_lesson_transcription_segment.findMany({
|
|
892
|
-
where
|
|
907
|
+
where,
|
|
893
908
|
orderBy: { start_seconds: 'asc' },
|
|
894
909
|
select: {
|
|
895
910
|
id: true,
|
|
911
|
+
locale_id: true,
|
|
896
912
|
start_seconds: true,
|
|
897
913
|
end_seconds: true,
|
|
898
914
|
text: true,
|
|
899
915
|
},
|
|
900
916
|
});
|
|
901
917
|
}
|
|
902
|
-
async
|
|
918
|
+
async getAvailableTranscriptionLocales(lessonId) {
|
|
919
|
+
const rows = await this.prisma.course_lesson_transcription_segment.findMany({
|
|
920
|
+
where: { course_lesson_id: lessonId },
|
|
921
|
+
select: { locale_id: true },
|
|
922
|
+
distinct: ['locale_id'],
|
|
923
|
+
});
|
|
924
|
+
const localeIds = rows.map((r) => r.locale_id);
|
|
925
|
+
const locales = await Promise.all(localeIds.map(async (id) => {
|
|
926
|
+
if (id === null)
|
|
927
|
+
return { id: null, code: null, name: null, region: null };
|
|
928
|
+
const locale = await this.prisma.locale.findUnique({
|
|
929
|
+
where: { id },
|
|
930
|
+
select: { id: true, code: true, name: true, region: true },
|
|
931
|
+
});
|
|
932
|
+
return locale !== null && locale !== void 0 ? locale : { id, code: null, name: null, region: null };
|
|
933
|
+
}));
|
|
934
|
+
return locales;
|
|
935
|
+
}
|
|
936
|
+
async updateTranscriptionSegments(lessonId, dto, localeId) {
|
|
903
937
|
var _a;
|
|
938
|
+
const where = { course_lesson_id: lessonId };
|
|
939
|
+
if (localeId !== undefined) {
|
|
940
|
+
where.locale_id = localeId !== null && localeId !== void 0 ? localeId : null;
|
|
941
|
+
}
|
|
904
942
|
return this.prisma.$transaction([
|
|
905
|
-
this.prisma.course_lesson_transcription_segment.deleteMany({
|
|
906
|
-
where: { course_lesson_id: lessonId },
|
|
907
|
-
}),
|
|
943
|
+
this.prisma.course_lesson_transcription_segment.deleteMany({ where }),
|
|
908
944
|
this.prisma.course_lesson_transcription_segment.createMany({
|
|
909
945
|
data: ((_a = dto.segments) !== null && _a !== void 0 ? _a : []).map((segment) => ({
|
|
910
946
|
course_lesson_id: lessonId,
|
|
947
|
+
locale_id: localeId !== null && localeId !== void 0 ? localeId : null,
|
|
911
948
|
start_seconds: segment.startSeconds,
|
|
912
949
|
end_seconds: segment.endSeconds,
|
|
913
950
|
text: segment.text,
|
|
@@ -915,6 +952,51 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
915
952
|
}),
|
|
916
953
|
]);
|
|
917
954
|
}
|
|
955
|
+
async deleteTranscriptionLocale(lessonId, localeId) {
|
|
956
|
+
const result = await this.prisma.course_lesson_transcription_segment.deleteMany({
|
|
957
|
+
where: { course_lesson_id: lessonId, locale_id: localeId },
|
|
958
|
+
});
|
|
959
|
+
return { success: true, deleted: result.count };
|
|
960
|
+
}
|
|
961
|
+
async deleteAllCourseTranscriptions(courseId) {
|
|
962
|
+
const lessons = await this.prisma.course_lesson.findMany({
|
|
963
|
+
where: { course_module: { course_id: courseId } },
|
|
964
|
+
select: { id: true },
|
|
965
|
+
});
|
|
966
|
+
const lessonIds = lessons.map((l) => l.id);
|
|
967
|
+
if (lessonIds.length === 0) {
|
|
968
|
+
return { success: true, deleted: 0 };
|
|
969
|
+
}
|
|
970
|
+
const result = await this.prisma.course_lesson_transcription_segment.deleteMany({
|
|
971
|
+
where: { course_lesson_id: { in: lessonIds } },
|
|
972
|
+
});
|
|
973
|
+
return { success: true, deleted: result.count };
|
|
974
|
+
}
|
|
975
|
+
async translateTranscription(lessonId, sourceLocaleId, targetLocaleId, notificationId, notificationUserId) {
|
|
976
|
+
const lesson = await this.prisma.course_lesson.findUnique({
|
|
977
|
+
where: { id: lessonId },
|
|
978
|
+
select: { id: true },
|
|
979
|
+
});
|
|
980
|
+
if (!lesson) {
|
|
981
|
+
throw new common_1.NotFoundException(`Lesson ${lessonId} not found`);
|
|
982
|
+
}
|
|
983
|
+
const job = await this.queueJob.enqueue({
|
|
984
|
+
type: 'lms.transcription.translate',
|
|
985
|
+
queueName: 'lms.transcription.translate',
|
|
986
|
+
payload: Object.assign(Object.assign({ lessonId,
|
|
987
|
+
sourceLocaleId,
|
|
988
|
+
targetLocaleId }, (notificationId != null ? { notificationId } : {})), (notificationUserId != null ? { notificationUserId } : {})),
|
|
989
|
+
sourceModule: 'lms',
|
|
990
|
+
sourceEntity: 'course_lesson',
|
|
991
|
+
sourceEntityId: `${lessonId}:${targetLocaleId}`,
|
|
992
|
+
maxAttempts: 3,
|
|
993
|
+
});
|
|
994
|
+
const startedOnDemand = await this.startTranscriptionOnDemandIfNeeded(job.id);
|
|
995
|
+
if (startedOnDemand) {
|
|
996
|
+
return { queueJobId: job.id, status: 'processing' };
|
|
997
|
+
}
|
|
998
|
+
return { queueJobId: job.id, status: job.status };
|
|
999
|
+
}
|
|
918
1000
|
async getAudioFiles(lessonId) {
|
|
919
1001
|
return this.prisma.course_lesson_file.findMany({
|
|
920
1002
|
where: {
|
|
@@ -1009,7 +1091,8 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
1009
1091
|
}
|
|
1010
1092
|
return { withOriginal, withoutOriginal, alreadyProcessed };
|
|
1011
1093
|
}
|
|
1012
|
-
async bulkEnqueueJobs(courseId, jobType, userId, reprocessAlreadyProcessed) {
|
|
1094
|
+
async bulkEnqueueJobs(courseId, jobType, userId, reprocessAlreadyProcessed, targetLocaleId) {
|
|
1095
|
+
var _a;
|
|
1013
1096
|
const lessons = await this.prisma.course_lesson.findMany({
|
|
1014
1097
|
where: {
|
|
1015
1098
|
course_module: { course_id: courseId },
|
|
@@ -1084,7 +1167,7 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
1084
1167
|
}
|
|
1085
1168
|
}
|
|
1086
1169
|
}
|
|
1087
|
-
else {
|
|
1170
|
+
else if (jobType === 'xp_recalculation') {
|
|
1088
1171
|
for (const lesson of lessons) {
|
|
1089
1172
|
const segments = await this.prisma.course_lesson_transcription_segment.findFirst({
|
|
1090
1173
|
where: { course_lesson_id: lesson.id },
|
|
@@ -1124,8 +1207,67 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
1124
1207
|
warnings.push(`${skippedWithoutTranscription} aula(s) sem transcrição foram ignoradas. Gere a transcrição antes de recalcular o XP.`);
|
|
1125
1208
|
}
|
|
1126
1209
|
}
|
|
1210
|
+
else if (jobType === 'translate_transcription') {
|
|
1211
|
+
if (!targetLocaleId) {
|
|
1212
|
+
warnings.push('targetLocaleId é obrigatório para o job de tradução em massa.');
|
|
1213
|
+
return { queued, skipped, skippedWithoutTranscription, warnings };
|
|
1214
|
+
}
|
|
1215
|
+
for (const lesson of lessons) {
|
|
1216
|
+
const sourceSegment = await this.prisma.course_lesson_transcription_segment.findFirst({
|
|
1217
|
+
where: {
|
|
1218
|
+
course_lesson_id: lesson.id,
|
|
1219
|
+
NOT: { locale_id: targetLocaleId },
|
|
1220
|
+
},
|
|
1221
|
+
select: { id: true, locale_id: true },
|
|
1222
|
+
orderBy: { id: 'asc' },
|
|
1223
|
+
});
|
|
1224
|
+
if (!sourceSegment) {
|
|
1225
|
+
skipped++;
|
|
1226
|
+
skippedWithoutTranscription++;
|
|
1227
|
+
continue;
|
|
1228
|
+
}
|
|
1229
|
+
await this.queueJob.enqueue({
|
|
1230
|
+
type: 'lms.transcription.translate',
|
|
1231
|
+
queueName: 'lms.transcription.translate',
|
|
1232
|
+
payload: {
|
|
1233
|
+
lessonId: lesson.id,
|
|
1234
|
+
sourceLocaleId: (_a = sourceSegment.locale_id) !== null && _a !== void 0 ? _a : null,
|
|
1235
|
+
targetLocaleId,
|
|
1236
|
+
},
|
|
1237
|
+
sourceModule: 'lms',
|
|
1238
|
+
sourceEntity: 'course_lesson',
|
|
1239
|
+
sourceEntityId: `${lesson.id}:${targetLocaleId}`,
|
|
1240
|
+
maxAttempts: 3,
|
|
1241
|
+
});
|
|
1242
|
+
queued++;
|
|
1243
|
+
}
|
|
1244
|
+
if (skippedWithoutTranscription > 0) {
|
|
1245
|
+
warnings.push(`${skippedWithoutTranscription} aula(s) sem transcrição foram ignoradas.`);
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1127
1248
|
return { queued, skipped, skippedWithoutTranscription, warnings };
|
|
1128
1249
|
}
|
|
1250
|
+
async getCourseTranscriptionLocales(courseId) {
|
|
1251
|
+
const rows = await this.prisma.course_lesson_transcription_segment.findMany({
|
|
1252
|
+
where: {
|
|
1253
|
+
course_lesson: {
|
|
1254
|
+
course_module: { course_id: courseId },
|
|
1255
|
+
},
|
|
1256
|
+
},
|
|
1257
|
+
select: { locale_id: true },
|
|
1258
|
+
distinct: ['locale_id'],
|
|
1259
|
+
});
|
|
1260
|
+
const localeIds = rows
|
|
1261
|
+
.map((r) => r.locale_id)
|
|
1262
|
+
.filter((id) => id !== null);
|
|
1263
|
+
if (localeIds.length === 0)
|
|
1264
|
+
return [];
|
|
1265
|
+
return this.prisma.locale.findMany({
|
|
1266
|
+
where: { id: { in: localeIds } },
|
|
1267
|
+
select: { id: true, code: true, name: true, region: true },
|
|
1268
|
+
orderBy: { name: 'asc' },
|
|
1269
|
+
});
|
|
1270
|
+
}
|
|
1129
1271
|
async syncLessonRelations(lessonId, dto, client = this.prisma) {
|
|
1130
1272
|
var _a;
|
|
1131
1273
|
const shouldSyncInstructors = Object.prototype.hasOwnProperty.call(dto, 'instructorIds');
|
|
@@ -1198,7 +1340,9 @@ let CourseStructureService = CourseStructureService_1 = class CourseStructureSer
|
|
|
1198
1340
|
},
|
|
1199
1341
|
},
|
|
1200
1342
|
},
|
|
1201
|
-
course_lesson_file:
|
|
1343
|
+
course_lesson_file: {
|
|
1344
|
+
include: { file: { select: { size: true } } },
|
|
1345
|
+
},
|
|
1202
1346
|
course_lesson_question: {
|
|
1203
1347
|
orderBy: { order: 'asc' },
|
|
1204
1348
|
},
|
|
@@ -1474,6 +1618,7 @@ exports.CourseStructureService = CourseStructureService = CourseStructureService
|
|
|
1474
1618
|
instructor_service_1.InstructorService,
|
|
1475
1619
|
course_operations_integration_service_1.CourseOperationsIntegrationService,
|
|
1476
1620
|
queue_1.QueueJobService,
|
|
1477
|
-
course_video_hls_service_1.CourseVideoHlsService
|
|
1621
|
+
course_video_hls_service_1.CourseVideoHlsService,
|
|
1622
|
+
course_ai_usage_service_1.CourseAiUsageService])
|
|
1478
1623
|
], CourseStructureService);
|
|
1479
1624
|
//# sourceMappingURL=course-structure.service.js.map
|