@hed-hog/lms 0.0.355 → 0.0.357
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/course/course-audio-transcription.service.d.ts.map +1 -1
- package/dist/course/course-audio-transcription.service.js +15 -7
- package/dist/course/course-audio-transcription.service.js.map +1 -1
- package/dist/course/course-structure.controller.d.ts +12 -0
- package/dist/course/course-structure.controller.d.ts.map +1 -1
- package/dist/course/course-structure.service.d.ts +22 -0
- package/dist/course/course-structure.service.d.ts.map +1 -1
- package/dist/course/course-structure.service.js +147 -18
- package/dist/course/course-structure.service.js.map +1 -1
- package/dist/course/course.service.d.ts +4 -2
- package/dist/course/course.service.d.ts.map +1 -1
- package/dist/course/course.service.js +61 -2
- package/dist/course/course.service.js.map +1 -1
- package/dist/course/dto/create-course-structure-lesson.dto.d.ts +3 -0
- package/dist/course/dto/create-course-structure-lesson.dto.d.ts.map +1 -1
- package/dist/course/dto/create-course-structure-lesson.dto.js +15 -0
- package/dist/course/dto/create-course-structure-lesson.dto.js.map +1 -1
- package/dist/course/dto/create-course-structure-session.dto.d.ts +1 -0
- package/dist/course/dto/create-course-structure-session.dto.d.ts.map +1 -1
- package/dist/course/dto/create-course-structure-session.dto.js +5 -0
- package/dist/course/dto/create-course-structure-session.dto.js.map +1 -1
- package/dist/enterprise/training/training-student.controller.d.ts +0 -95
- package/dist/enterprise/training/training-student.controller.d.ts.map +1 -1
- package/dist/enterprise/training/training-student.controller.js +1 -34
- package/dist/enterprise/training/training-student.controller.js.map +1 -1
- package/dist/enterprise/training/training-student.service.d.ts +63 -0
- package/dist/enterprise/training/training-student.service.d.ts.map +1 -1
- package/dist/enterprise/training/training-student.service.js +320 -4
- package/dist/enterprise/training/training-student.service.js.map +1 -1
- package/dist/lms.module.d.ts.map +1 -1
- package/dist/lms.module.js +2 -0
- package/dist/lms.module.js.map +1 -1
- package/dist/platforma/platforma.controller.d.ts +287 -0
- package/dist/platforma/platforma.controller.d.ts.map +1 -0
- package/dist/platforma/platforma.controller.js +147 -0
- package/dist/platforma/platforma.controller.js.map +1 -0
- package/hedhog/data/route.yaml +75 -9
- package/hedhog/frontend/app/_components/class-form-sheet.tsx.ejs +2 -2
- package/hedhog/frontend/app/_components/course-form-sheet.tsx.ejs +10 -13
- package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +2 -2
- package/hedhog/frontend/app/courses/[id]/_components/course-edit-types.ts.ejs +1 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/confirm-dialog.tsx.ejs +17 -6
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +14 -7
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +92 -53
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-session.tsx.ejs +25 -60
- package/hedhog/frontend/app/courses/[id]/structure/_components/mock-data.ts.ejs +1 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/store.ts.ejs +11 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-context-menu.tsx.ejs +22 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row-lesson.tsx.ejs +79 -64
- package/hedhog/frontend/app/courses/[id]/structure/_components/tree-row-session.tsx.ejs +31 -14
- package/hedhog/frontend/app/courses/[id]/structure/_components/types.ts.ejs +3 -4
- package/hedhog/frontend/app/courses/[id]/structure/_data/adapters/course-structure.adapter.ts.ejs +28 -24
- package/hedhog/frontend/app/courses/[id]/structure/_data/types/api-course.types.ts.ejs +20 -0
- package/hedhog/frontend/app/courses/[id]/structure/_data/use-course-structure-mutations.ts.ejs +41 -6
- package/hedhog/frontend/app/courses/page.tsx.ejs +59 -15
- package/hedhog/frontend/app/enterprise/_components/enterprise-course-create-sheet.tsx.ejs +1 -1
- package/hedhog/frontend/app/enterprise/_components/enterprise-course-edit-sheet.tsx.ejs +2 -2
- package/hedhog/frontend/app/paths/page.tsx.ejs +1 -1
- package/hedhog/frontend/app/training/page.tsx.ejs +1 -1
- package/hedhog/frontend/messages/en.json +7 -2
- package/hedhog/frontend/messages/pt.json +7 -2
- package/hedhog/table/course_lesson.yaml +2 -2
- package/hedhog/table/course_module.yaml +3 -0
- package/package.json +8 -8
- package/src/course/course-audio-transcription.service.ts +21 -8
- package/src/course/course-structure.service.ts +204 -3
- package/src/course/course.service.ts +67 -1
- package/src/course/dto/create-course-structure-lesson.dto.ts +17 -0
- package/src/course/dto/create-course-structure-session.dto.ts +13 -1
- package/src/enterprise/training/training-student.controller.ts +3 -27
- package/src/enterprise/training/training-student.service.ts +350 -2
- package/src/lms.module.ts +2 -0
- package/src/platforma/platforma.controller.ts +92 -0
|
@@ -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,
|
|
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"}
|
|
@@ -104,12 +104,9 @@ let CourseAudioTranscriptionService = CourseAudioTranscriptionService_1 = class
|
|
|
104
104
|
}
|
|
105
105
|
};
|
|
106
106
|
const settings = await this.settingService.getSettingValues([
|
|
107
|
-
'ai-openai-
|
|
108
|
-
'ai-openai-api-key-enabled',
|
|
107
|
+
'ai-openai-profile-id',
|
|
109
108
|
'lms-audio-transcription-enabled',
|
|
110
109
|
]);
|
|
111
|
-
const apiKey = settings['ai-openai-api-key'];
|
|
112
|
-
const enabled = settings['ai-openai-api-key-enabled'];
|
|
113
110
|
const transcriptionEnabled = settings['lms-audio-transcription-enabled'] !== false;
|
|
114
111
|
if (!transcriptionEnabled) {
|
|
115
112
|
this.logger.warn(`Transcription skipped for lesson ${lessonId}: disabled by lms-audio-transcription-enabled setting`);
|
|
@@ -118,10 +115,21 @@ let CourseAudioTranscriptionService = CourseAudioTranscriptionService_1 = class
|
|
|
118
115
|
}
|
|
119
116
|
return;
|
|
120
117
|
}
|
|
121
|
-
|
|
122
|
-
|
|
118
|
+
const profileId = Number(settings['ai-openai-profile-id']);
|
|
119
|
+
let apiKey = '';
|
|
120
|
+
if (profileId) {
|
|
121
|
+
const profile = await this.prismaService.integration_profile.findUnique({
|
|
122
|
+
where: { id: profileId },
|
|
123
|
+
include: { integration_provider: { select: { slug: true } } },
|
|
124
|
+
});
|
|
125
|
+
if (profile) {
|
|
126
|
+
apiKey = (0, core_1.buildAiConfigFromIntegration)(profile.integration_provider.slug, profile.config).apiKey;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (!apiKey) {
|
|
130
|
+
this.logger.warn(`Transcription skipped for lesson ${lessonId}: OpenAI profile not configured`);
|
|
123
131
|
if (notificationContext) {
|
|
124
|
-
await this.updateAsyncNotification(notificationContext, 100, 'Transcrição não iniciada:
|
|
132
|
+
await this.updateAsyncNotification(notificationContext, 100, 'Transcrição não iniciada: perfil de IA não configurado em Settings → AI.', false);
|
|
125
133
|
}
|
|
126
134
|
return;
|
|
127
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-audio-transcription.service.js","sourceRoot":"","sources":["../../src/course/course-audio-transcription.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,oDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"course-audio-transcription.service.js","sourceRoot":"","sources":["../../src/course/course-audio-transcription.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export declare class CourseStructureController {
|
|
|
21
21
|
codigo: string;
|
|
22
22
|
titulo: string;
|
|
23
23
|
duracao: number;
|
|
24
|
+
published: boolean;
|
|
24
25
|
collapsed: boolean;
|
|
25
26
|
}[];
|
|
26
27
|
aulas: {
|
|
@@ -39,6 +40,8 @@ export declare class CourseStructureController {
|
|
|
39
40
|
videoConversionJobId: any;
|
|
40
41
|
exameVinculado: string;
|
|
41
42
|
conteudoPost: any;
|
|
43
|
+
statusProducao: "preparada" | "gravada" | "editada" | "finalizada" | "publicada";
|
|
44
|
+
published: boolean;
|
|
42
45
|
recursos: {
|
|
43
46
|
id: string;
|
|
44
47
|
nome: string;
|
|
@@ -105,6 +108,7 @@ export declare class CourseStructureController {
|
|
|
105
108
|
codigo: string;
|
|
106
109
|
titulo: string;
|
|
107
110
|
duracao: number;
|
|
111
|
+
published: boolean;
|
|
108
112
|
collapsed: boolean;
|
|
109
113
|
}>;
|
|
110
114
|
reorderSessions(courseId: number, dto: ReorderSessionsDto): Promise<{
|
|
@@ -115,6 +119,7 @@ export declare class CourseStructureController {
|
|
|
115
119
|
codigo: string;
|
|
116
120
|
titulo: string;
|
|
117
121
|
duracao: number;
|
|
122
|
+
published: boolean;
|
|
118
123
|
collapsed: boolean;
|
|
119
124
|
}>;
|
|
120
125
|
deleteSession(courseId: number, sessionId: number): Promise<{
|
|
@@ -126,6 +131,7 @@ export declare class CourseStructureController {
|
|
|
126
131
|
codigo: string;
|
|
127
132
|
titulo: string;
|
|
128
133
|
duracao: number;
|
|
134
|
+
published: boolean;
|
|
129
135
|
collapsed: boolean;
|
|
130
136
|
};
|
|
131
137
|
lessons: any[];
|
|
@@ -145,6 +151,8 @@ export declare class CourseStructureController {
|
|
|
145
151
|
transcricao: any;
|
|
146
152
|
videoConversionJobId: any;
|
|
147
153
|
exameVinculado: string;
|
|
154
|
+
statusProducao: "preparada" | "gravada" | "editada" | "finalizada" | "publicada";
|
|
155
|
+
published: boolean;
|
|
148
156
|
conteudoPost: any;
|
|
149
157
|
recursos: {
|
|
150
158
|
id: string;
|
|
@@ -184,6 +192,8 @@ export declare class CourseStructureController {
|
|
|
184
192
|
transcricao: any;
|
|
185
193
|
videoConversionJobId: any;
|
|
186
194
|
exameVinculado: string;
|
|
195
|
+
statusProducao: "preparada" | "gravada" | "editada" | "finalizada" | "publicada";
|
|
196
|
+
published: boolean;
|
|
187
197
|
conteudoPost: any;
|
|
188
198
|
recursos: {
|
|
189
199
|
id: string;
|
|
@@ -244,6 +254,8 @@ export declare class CourseStructureController {
|
|
|
244
254
|
transcricao: any;
|
|
245
255
|
videoConversionJobId: any;
|
|
246
256
|
exameVinculado: string;
|
|
257
|
+
statusProducao: "preparada" | "gravada" | "editada" | "finalizada" | "publicada";
|
|
258
|
+
published: boolean;
|
|
247
259
|
conteudoPost: any;
|
|
248
260
|
recursos: {
|
|
249
261
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-structure.controller.d.ts","sourceRoot":"","sources":["../../src/course/course-structure.controller.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EACH,8BAA8B,EAC9B,8BAA8B,EACjC,MAAM,0CAA0C,CAAC;AAClD,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;AAE5F,qBAEa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;gBAD5B,sBAAsB,EAAE,sBAAsB,EAC9C,4BAA4B,EAAE,4BAA4B;IAI7E,YAAY,CAA4B,QAAQ,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"course-structure.controller.d.ts","sourceRoot":"","sources":["../../src/course/course-structure.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import { UpdateCourseStructureLessonDto } from './dto/update-course-structure-le
|
|
|
15
15
|
import { UpdateCourseStructureSessionDto } from './dto/update-course-structure-session.dto';
|
|
16
16
|
import { UpdateTranscriptionSegmentsDTO } from './dto/update-transcription-segments.dto';
|
|
17
17
|
type LessonUiType = 'video' | 'questao' | 'post' | 'exercicio';
|
|
18
|
+
type LessonProductionStatus = 'preparada' | 'gravada' | 'editada' | 'finalizada' | 'publicada';
|
|
18
19
|
type LessonFileType = 'video_original' | `video_profile:${number}` | 'lesson_audio' | 'student_download' | 'supplementary_material';
|
|
19
20
|
export declare class CourseStructureService {
|
|
20
21
|
private readonly prisma;
|
|
@@ -28,6 +29,7 @@ export declare class CourseStructureService {
|
|
|
28
29
|
codigo: string;
|
|
29
30
|
titulo: string;
|
|
30
31
|
duracao: number;
|
|
32
|
+
published: boolean;
|
|
31
33
|
collapsed: boolean;
|
|
32
34
|
}[];
|
|
33
35
|
aulas: {
|
|
@@ -46,6 +48,8 @@ export declare class CourseStructureService {
|
|
|
46
48
|
videoConversionJobId: any;
|
|
47
49
|
exameVinculado: string;
|
|
48
50
|
conteudoPost: any;
|
|
51
|
+
statusProducao: LessonProductionStatus;
|
|
52
|
+
published: boolean;
|
|
49
53
|
recursos: {
|
|
50
54
|
id: string;
|
|
51
55
|
nome: string;
|
|
@@ -112,6 +116,7 @@ export declare class CourseStructureService {
|
|
|
112
116
|
codigo: string;
|
|
113
117
|
titulo: string;
|
|
114
118
|
duracao: number;
|
|
119
|
+
published: boolean;
|
|
115
120
|
collapsed: boolean;
|
|
116
121
|
}>;
|
|
117
122
|
updateSession(courseId: number, sessionId: number, dto: UpdateCourseStructureSessionDto): Promise<{
|
|
@@ -119,6 +124,7 @@ export declare class CourseStructureService {
|
|
|
119
124
|
codigo: string;
|
|
120
125
|
titulo: string;
|
|
121
126
|
duracao: number;
|
|
127
|
+
published: boolean;
|
|
122
128
|
collapsed: boolean;
|
|
123
129
|
}>;
|
|
124
130
|
deleteSession(courseId: number, sessionId: number): Promise<{
|
|
@@ -139,6 +145,8 @@ export declare class CourseStructureService {
|
|
|
139
145
|
transcricao: any;
|
|
140
146
|
videoConversionJobId: any;
|
|
141
147
|
exameVinculado: string;
|
|
148
|
+
statusProducao: LessonProductionStatus;
|
|
149
|
+
published: boolean;
|
|
142
150
|
conteudoPost: any;
|
|
143
151
|
recursos: {
|
|
144
152
|
id: string;
|
|
@@ -172,6 +180,8 @@ export declare class CourseStructureService {
|
|
|
172
180
|
transcricao: any;
|
|
173
181
|
videoConversionJobId: any;
|
|
174
182
|
exameVinculado: string;
|
|
183
|
+
statusProducao: LessonProductionStatus;
|
|
184
|
+
published: boolean;
|
|
175
185
|
conteudoPost: any;
|
|
176
186
|
recursos: {
|
|
177
187
|
id: string;
|
|
@@ -223,6 +233,7 @@ export declare class CourseStructureService {
|
|
|
223
233
|
codigo: string;
|
|
224
234
|
titulo: string;
|
|
225
235
|
duracao: number;
|
|
236
|
+
published: boolean;
|
|
226
237
|
collapsed: boolean;
|
|
227
238
|
};
|
|
228
239
|
lessons: any[];
|
|
@@ -242,6 +253,8 @@ export declare class CourseStructureService {
|
|
|
242
253
|
transcricao: any;
|
|
243
254
|
videoConversionJobId: any;
|
|
244
255
|
exameVinculado: string;
|
|
256
|
+
statusProducao: LessonProductionStatus;
|
|
257
|
+
published: boolean;
|
|
245
258
|
conteudoPost: any;
|
|
246
259
|
recursos: {
|
|
247
260
|
id: string;
|
|
@@ -274,6 +287,15 @@ export declare class CourseStructureService {
|
|
|
274
287
|
private mapUiTypeToDbType;
|
|
275
288
|
private mapDbTypeToUiType;
|
|
276
289
|
private serializeContent;
|
|
290
|
+
private normalizeProductionStatus;
|
|
291
|
+
private normalizeIdList;
|
|
292
|
+
private buildIdCsv;
|
|
293
|
+
private getSessionPublishedByIds;
|
|
294
|
+
private getSessionPublished;
|
|
295
|
+
private setSessionPublished;
|
|
296
|
+
private getLessonPublishedByIds;
|
|
297
|
+
private getLessonPublished;
|
|
298
|
+
private setLessonPublished;
|
|
277
299
|
private parseLessonContent;
|
|
278
300
|
private normalizeLessonFileType;
|
|
279
301
|
private readLessonFileType;
|
|
@@ -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;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,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,GAAG,WAAW,CAAC;AAE/D,KAAK,cAAc,GACf,gBAAgB,GAChB,iBAAiB,MAAM,EAAE,GACzB,cAAc,GACd,kBAAkB,GAClB,wBAAwB,CAAC;AAE7B,qBACa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAHrB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,kCAAkC;IAGtE,YAAY,CAAC,QAAQ,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"course-structure.service.d.ts","sourceRoot":"","sources":["../../src/course/course-structure.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,20 +81,26 @@ let CourseStructureService = class CourseStructureService {
|
|
|
81
81
|
}),
|
|
82
82
|
this.operationsIntegration.getCourseProjectLinks([courseId]),
|
|
83
83
|
]);
|
|
84
|
-
const
|
|
84
|
+
const lessonIds = modules.flatMap((module) => module.course_lesson.map((lesson) => lesson.id));
|
|
85
|
+
const [lessonTaskLinks, sessionPublishedById, lessonPublishedById] = await Promise.all([
|
|
86
|
+
this.operationsIntegration.getLessonTaskLinks(lessonIds),
|
|
87
|
+
this.getSessionPublishedByIds(modules.map((module) => module.id)),
|
|
88
|
+
this.getLessonPublishedByIds(lessonIds),
|
|
89
|
+
]);
|
|
85
90
|
const courseProject = courseProjectLinks.get(courseId);
|
|
86
91
|
const sessoes = modules.map((module, index) => {
|
|
87
|
-
var _a, _b;
|
|
92
|
+
var _a, _b, _c;
|
|
88
93
|
return ({
|
|
89
94
|
id: String(module.id),
|
|
90
95
|
codigo: this.formatCode('S', (_a = module.order) !== null && _a !== void 0 ? _a : index + 1),
|
|
91
96
|
titulo: module.title,
|
|
92
97
|
duracao: (_b = module.duration_minutes) !== null && _b !== void 0 ? _b : 0,
|
|
98
|
+
published: (_c = sessionPublishedById.get(module.id)) !== null && _c !== void 0 ? _c : false,
|
|
93
99
|
collapsed: false,
|
|
94
100
|
});
|
|
95
101
|
});
|
|
96
102
|
const aulas = modules.flatMap((module) => module.course_lesson.map((lesson, index) => {
|
|
97
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
103
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
98
104
|
const parsedContent = this.parseLessonContent(lesson.content);
|
|
99
105
|
const tipo = this.mapDbTypeToUiType(lesson.type, parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.sourceType);
|
|
100
106
|
return {
|
|
@@ -117,6 +123,8 @@ let CourseStructureService = class CourseStructureService {
|
|
|
117
123
|
? String(lesson.course_lesson_question[0].question_id)
|
|
118
124
|
: undefined,
|
|
119
125
|
conteudoPost: parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.conteudoPost,
|
|
126
|
+
statusProducao: this.normalizeProductionStatus(parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.statusProducao),
|
|
127
|
+
published: (_f = lessonPublishedById.get(lesson.id)) !== null && _f !== void 0 ? _f : false,
|
|
120
128
|
recursos: lesson.course_lesson_file.map((fileLink) => ({
|
|
121
129
|
id: String(fileLink.id),
|
|
122
130
|
nome: fileLink.title,
|
|
@@ -143,9 +151,9 @@ let CourseStructureService = class CourseStructureService {
|
|
|
143
151
|
nome: this.personName((_a = item.instructor) === null || _a === void 0 ? void 0 : _a.person),
|
|
144
152
|
});
|
|
145
153
|
}),
|
|
146
|
-
operationsTaskId: (
|
|
147
|
-
operationsTaskName: (
|
|
148
|
-
operationsTaskStatus: (
|
|
154
|
+
operationsTaskId: (_h = (_g = lessonTaskLinks.get(lesson.id)) === null || _g === void 0 ? void 0 : _g.taskId) !== null && _h !== void 0 ? _h : null,
|
|
155
|
+
operationsTaskName: (_k = (_j = lessonTaskLinks.get(lesson.id)) === null || _j === void 0 ? void 0 : _j.taskName) !== null && _k !== void 0 ? _k : null,
|
|
156
|
+
operationsTaskStatus: (_m = (_l = lessonTaskLinks.get(lesson.id)) === null || _l === void 0 ? void 0 : _l.taskStatus) !== null && _m !== void 0 ? _m : null,
|
|
149
157
|
};
|
|
150
158
|
}));
|
|
151
159
|
return {
|
|
@@ -207,7 +215,7 @@ let CourseStructureService = class CourseStructureService {
|
|
|
207
215
|
return this.getCourseResources(courseId);
|
|
208
216
|
}
|
|
209
217
|
async createSession(courseId, dto) {
|
|
210
|
-
var _a, _b, _c;
|
|
218
|
+
var _a, _b, _c, _d;
|
|
211
219
|
await this.ensureCourseExists(courseId);
|
|
212
220
|
const nextOrder = await this.nextModuleOrder(courseId);
|
|
213
221
|
const created = await this.prisma.course_module.create({
|
|
@@ -219,16 +227,19 @@ let CourseStructureService = class CourseStructureService {
|
|
|
219
227
|
order: nextOrder,
|
|
220
228
|
},
|
|
221
229
|
});
|
|
230
|
+
const published = (_b = dto.published) !== null && _b !== void 0 ? _b : false;
|
|
231
|
+
await this.setSessionPublished(created.id, published);
|
|
222
232
|
return {
|
|
223
233
|
id: String(created.id),
|
|
224
|
-
codigo: this.formatCode('S', (
|
|
234
|
+
codigo: this.formatCode('S', (_c = created.order) !== null && _c !== void 0 ? _c : nextOrder),
|
|
225
235
|
titulo: created.title,
|
|
226
|
-
duracao: (
|
|
236
|
+
duracao: (_d = created.duration_minutes) !== null && _d !== void 0 ? _d : 0,
|
|
237
|
+
published,
|
|
227
238
|
collapsed: false,
|
|
228
239
|
};
|
|
229
240
|
}
|
|
230
241
|
async updateSession(courseId, sessionId, dto) {
|
|
231
|
-
var _a, _b;
|
|
242
|
+
var _a, _b, _c;
|
|
232
243
|
const module = await this.prisma.course_module.findFirst({
|
|
233
244
|
where: { id: sessionId, course_id: courseId },
|
|
234
245
|
include: {
|
|
@@ -246,11 +257,16 @@ let CourseStructureService = class CourseStructureService {
|
|
|
246
257
|
where: { id: sessionId },
|
|
247
258
|
data: Object.assign(Object.assign(Object.assign({}, (dto.titulo !== undefined && { title: dto.titulo })), (dto.descricao !== undefined && { description: dto.descricao })), (dto.duracao !== undefined && { duration_minutes: dto.duracao })),
|
|
248
259
|
});
|
|
260
|
+
const published = (_a = dto.published) !== null && _a !== void 0 ? _a : (await this.getSessionPublished(sessionId));
|
|
261
|
+
if (dto.published !== undefined) {
|
|
262
|
+
await this.setSessionPublished(sessionId, dto.published);
|
|
263
|
+
}
|
|
249
264
|
return {
|
|
250
265
|
id: String(updated.id),
|
|
251
|
-
codigo: this.formatCode('S', (
|
|
266
|
+
codigo: this.formatCode('S', (_b = updated.order) !== null && _b !== void 0 ? _b : 0),
|
|
252
267
|
titulo: updated.title,
|
|
253
|
-
duracao: (
|
|
268
|
+
duracao: (_c = updated.duration_minutes) !== null && _c !== void 0 ? _c : 0,
|
|
269
|
+
published,
|
|
254
270
|
collapsed: false,
|
|
255
271
|
};
|
|
256
272
|
}
|
|
@@ -286,30 +302,41 @@ let CourseStructureService = class CourseStructureService {
|
|
|
286
302
|
throw new common_1.NotFoundException('Session not found for this course');
|
|
287
303
|
}
|
|
288
304
|
const created = await this.prisma.$transaction(async (tx) => {
|
|
289
|
-
var _a, _b, _c, _d, _e, _f;
|
|
305
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
290
306
|
const nextOrder = await this.nextLessonOrder(sessionId, tx);
|
|
291
307
|
const mappedType = this.mapUiTypeToDbType(dto.tipo);
|
|
308
|
+
const normalizedStatus = this.normalizeProductionStatus(dto.statusProducao);
|
|
309
|
+
const shouldPublish = (_a = dto.published) !== null && _a !== void 0 ? _a : false;
|
|
310
|
+
if (shouldPublish &&
|
|
311
|
+
normalizedStatus !== 'publicada' &&
|
|
312
|
+
!dto.confirmarPublicacaoComStatus) {
|
|
313
|
+
throw new common_1.BadRequestException('LESSON_PUBLISH_REQUIRES_STATUS_CONFIRMATION');
|
|
314
|
+
}
|
|
315
|
+
const statusProducao = shouldPublish && dto.confirmarPublicacaoComStatus
|
|
316
|
+
? 'publicada'
|
|
317
|
+
: normalizedStatus;
|
|
292
318
|
const lesson = await tx.course_lesson.create({
|
|
293
319
|
data: {
|
|
294
320
|
course_module_id: sessionId,
|
|
295
321
|
title: dto.titulo,
|
|
296
|
-
description: (
|
|
322
|
+
description: (_b = dto.descricaoPublica) !== null && _b !== void 0 ? _b : null,
|
|
297
323
|
type: mappedType,
|
|
298
324
|
duration_seconds: dto.duracao * 60,
|
|
299
325
|
order: nextOrder,
|
|
300
|
-
content: this.serializeContent(dto),
|
|
326
|
+
content: this.serializeContent(Object.assign(Object.assign({}, dto), { statusProducao })),
|
|
301
327
|
},
|
|
302
328
|
});
|
|
329
|
+
await this.setLessonPublished(lesson.id, shouldPublish, tx);
|
|
303
330
|
await this.syncLessonRelations(lesson.id, dto, tx);
|
|
304
331
|
const projectLinks = await this.operationsIntegration.getCourseProjectLinks([courseId], tx);
|
|
305
332
|
await this.operationsIntegration.createTaskForLesson(tx, {
|
|
306
333
|
courseId,
|
|
307
334
|
lessonId: lesson.id,
|
|
308
|
-
projectId: (
|
|
309
|
-
courseTitle: (
|
|
335
|
+
projectId: (_d = (_c = projectLinks.get(courseId)) === null || _c === void 0 ? void 0 : _c.projectId) !== null && _d !== void 0 ? _d : null,
|
|
336
|
+
courseTitle: (_f = (_e = module.course) === null || _e === void 0 ? void 0 : _e.title) !== null && _f !== void 0 ? _f : null,
|
|
310
337
|
sessionTitle: module.title,
|
|
311
338
|
lessonTitle: dto.titulo,
|
|
312
|
-
lessonDescription: (
|
|
339
|
+
lessonDescription: (_g = dto.descricaoPublica) !== null && _g !== void 0 ? _g : null,
|
|
313
340
|
});
|
|
314
341
|
return lesson;
|
|
315
342
|
});
|
|
@@ -343,8 +370,25 @@ let CourseStructureService = class CourseStructureService {
|
|
|
343
370
|
conteudoPost: dto.conteudoPost,
|
|
344
371
|
exameVinculado: dto.exameVinculado,
|
|
345
372
|
descricaoPrivada: dto.descricaoPrivada,
|
|
373
|
+
statusProducao: (() => {
|
|
374
|
+
var _a;
|
|
375
|
+
const parsed = this.parseLessonContent(lesson.content);
|
|
376
|
+
const currentStatus = this.normalizeProductionStatus(parsed === null || parsed === void 0 ? void 0 : parsed.statusProducao);
|
|
377
|
+
const nextStatus = this.normalizeProductionStatus((_a = dto.statusProducao) !== null && _a !== void 0 ? _a : currentStatus);
|
|
378
|
+
const shouldPublish = dto.published;
|
|
379
|
+
if (shouldPublish === true && nextStatus !== 'publicada') {
|
|
380
|
+
if (!dto.confirmarPublicacaoComStatus) {
|
|
381
|
+
throw new common_1.BadRequestException('LESSON_PUBLISH_REQUIRES_STATUS_CONFIRMATION');
|
|
382
|
+
}
|
|
383
|
+
return 'publicada';
|
|
384
|
+
}
|
|
385
|
+
return nextStatus;
|
|
386
|
+
})(),
|
|
346
387
|
}) }),
|
|
347
388
|
});
|
|
389
|
+
if (dto.published !== undefined) {
|
|
390
|
+
await this.setLessonPublished(lessonId, dto.published);
|
|
391
|
+
}
|
|
348
392
|
await this.syncLessonRelations(lessonId, dto);
|
|
349
393
|
await this.operationsIntegration.syncTaskForLesson(lessonId);
|
|
350
394
|
return this.getLessonById(updated.id);
|
|
@@ -603,6 +647,8 @@ let CourseStructureService = class CourseStructureService {
|
|
|
603
647
|
order: nextOrder,
|
|
604
648
|
},
|
|
605
649
|
});
|
|
650
|
+
const sourcePublished = await this.getSessionPublished(sourceModule.id);
|
|
651
|
+
await this.setSessionPublished(newModule.id, sourcePublished);
|
|
606
652
|
const newLessons = [];
|
|
607
653
|
const projectLinks = await this.operationsIntegration.getCourseProjectLinks([
|
|
608
654
|
courseId,
|
|
@@ -621,6 +667,8 @@ let CourseStructureService = class CourseStructureService {
|
|
|
621
667
|
order: lessonOrder,
|
|
622
668
|
},
|
|
623
669
|
});
|
|
670
|
+
const lessonPublished = await this.getLessonPublished(lesson.id);
|
|
671
|
+
await this.setLessonPublished(newLesson.id, lessonPublished);
|
|
624
672
|
if (lesson.course_lesson_file.length > 0) {
|
|
625
673
|
await this.prisma.course_lesson_file.createMany({
|
|
626
674
|
data: lesson.course_lesson_file.map((f) => (Object.assign({ course_lesson_id: newLesson.id, title: f.title, file_id: f.file_id }, this.buildLessonFilePersistence(f.type, f.is_public)))),
|
|
@@ -661,6 +709,7 @@ let CourseStructureService = class CourseStructureService {
|
|
|
661
709
|
codigo: this.formatCode('S', (_e = newModule.order) !== null && _e !== void 0 ? _e : nextOrder),
|
|
662
710
|
titulo: newModule.title,
|
|
663
711
|
duracao: (_f = newModule.duration_minutes) !== null && _f !== void 0 ? _f : 0,
|
|
712
|
+
published: sourcePublished,
|
|
664
713
|
collapsed: false,
|
|
665
714
|
},
|
|
666
715
|
lessons: newLessons,
|
|
@@ -709,6 +758,8 @@ let CourseStructureService = class CourseStructureService {
|
|
|
709
758
|
order: nextOrder,
|
|
710
759
|
},
|
|
711
760
|
});
|
|
761
|
+
const sourcePublished = await this.getLessonPublished(sourceLesson.id);
|
|
762
|
+
await this.setLessonPublished(newLesson.id, sourcePublished);
|
|
712
763
|
if (sourceLesson.course_lesson_file.length > 0) {
|
|
713
764
|
await this.prisma.course_lesson_file.createMany({
|
|
714
765
|
data: sourceLesson.course_lesson_file.map((f) => (Object.assign({ course_lesson_id: newLesson.id, title: f.title, file_id: f.file_id }, this.buildLessonFilePersistence(f.type, f.is_public)))),
|
|
@@ -784,6 +835,8 @@ let CourseStructureService = class CourseStructureService {
|
|
|
784
835
|
order: lessonOrder,
|
|
785
836
|
},
|
|
786
837
|
});
|
|
838
|
+
const sourcePublished = await this.getLessonPublished(lesson.id);
|
|
839
|
+
await this.setLessonPublished(newLesson.id, sourcePublished);
|
|
787
840
|
if (lesson.course_lesson_file.length > 0) {
|
|
788
841
|
await this.prisma.course_lesson_file.createMany({
|
|
789
842
|
data: lesson.course_lesson_file.map((f) => (Object.assign({ course_lesson_id: newLesson.id, title: f.title, file_id: f.file_id }, this.buildLessonFilePersistence(f.type, f.is_public)))),
|
|
@@ -958,6 +1011,7 @@ let CourseStructureService = class CourseStructureService {
|
|
|
958
1011
|
const taskLinks = await this.operationsIntegration.getLessonTaskLinks([
|
|
959
1012
|
lessonId,
|
|
960
1013
|
]);
|
|
1014
|
+
const lessonPublished = await this.getLessonPublished(lessonId);
|
|
961
1015
|
const parsedContent = this.parseLessonContent(lesson.content);
|
|
962
1016
|
const tipo = this.mapDbTypeToUiType(lesson.type, parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.sourceType);
|
|
963
1017
|
return {
|
|
@@ -979,6 +1033,8 @@ let CourseStructureService = class CourseStructureService {
|
|
|
979
1033
|
: ((_e = lesson.course_lesson_question[0]) === null || _e === void 0 ? void 0 : _e.question_id) != null
|
|
980
1034
|
? String(lesson.course_lesson_question[0].question_id)
|
|
981
1035
|
: undefined,
|
|
1036
|
+
statusProducao: this.normalizeProductionStatus(parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.statusProducao),
|
|
1037
|
+
published: lessonPublished,
|
|
982
1038
|
conteudoPost: parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.conteudoPost,
|
|
983
1039
|
recursos: lesson.course_lesson_file.map((fileLink) => ({
|
|
984
1040
|
id: String(fileLink.id),
|
|
@@ -1053,6 +1109,7 @@ let CourseStructureService = class CourseStructureService {
|
|
|
1053
1109
|
const payload = {
|
|
1054
1110
|
sourceType: data.tipo,
|
|
1055
1111
|
descricaoPrivada: (_a = data.descricaoPrivada) !== null && _a !== void 0 ? _a : '',
|
|
1112
|
+
statusProducao: this.normalizeProductionStatus(data.statusProducao),
|
|
1056
1113
|
};
|
|
1057
1114
|
if (data.tipo === 'video') {
|
|
1058
1115
|
payload.videoProvedor = (_b = data.videoProvedor) !== null && _b !== void 0 ? _b : 'file_storage';
|
|
@@ -1071,6 +1128,78 @@ let CourseStructureService = class CourseStructureService {
|
|
|
1071
1128
|
}
|
|
1072
1129
|
return JSON.stringify(payload);
|
|
1073
1130
|
}
|
|
1131
|
+
normalizeProductionStatus(value) {
|
|
1132
|
+
if (!value)
|
|
1133
|
+
return 'preparada';
|
|
1134
|
+
const normalized = String(value).trim().toLowerCase();
|
|
1135
|
+
if (normalized === 'preparada')
|
|
1136
|
+
return 'preparada';
|
|
1137
|
+
if (normalized === 'gravada')
|
|
1138
|
+
return 'gravada';
|
|
1139
|
+
if (normalized === 'editada')
|
|
1140
|
+
return 'editada';
|
|
1141
|
+
if (normalized === 'finalizada')
|
|
1142
|
+
return 'finalizada';
|
|
1143
|
+
if (normalized === 'publicada')
|
|
1144
|
+
return 'publicada';
|
|
1145
|
+
return 'preparada';
|
|
1146
|
+
}
|
|
1147
|
+
normalizeIdList(ids) {
|
|
1148
|
+
return ids
|
|
1149
|
+
.map((id) => Number(id))
|
|
1150
|
+
.filter((id) => Number.isInteger(id) && id > 0);
|
|
1151
|
+
}
|
|
1152
|
+
buildIdCsv(ids) {
|
|
1153
|
+
return this.normalizeIdList(ids).join(',');
|
|
1154
|
+
}
|
|
1155
|
+
async getSessionPublishedByIds(sessionIds) {
|
|
1156
|
+
const publishedById = new Map();
|
|
1157
|
+
const csv = this.buildIdCsv(sessionIds);
|
|
1158
|
+
if (!csv)
|
|
1159
|
+
return publishedById;
|
|
1160
|
+
try {
|
|
1161
|
+
const rows = await this.prisma.$queryRawUnsafe(`SELECT id, published FROM course_module WHERE id IN (${csv})`);
|
|
1162
|
+
for (const row of rows) {
|
|
1163
|
+
publishedById.set(row.id, Boolean(row.published));
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
catch (_a) {
|
|
1167
|
+
return publishedById;
|
|
1168
|
+
}
|
|
1169
|
+
return publishedById;
|
|
1170
|
+
}
|
|
1171
|
+
async getSessionPublished(sessionId) {
|
|
1172
|
+
var _a;
|
|
1173
|
+
const rows = await this.prisma.$queryRawUnsafe(`SELECT published FROM course_module WHERE id = ${Number(sessionId)} LIMIT 1`);
|
|
1174
|
+
return Boolean((_a = rows[0]) === null || _a === void 0 ? void 0 : _a.published);
|
|
1175
|
+
}
|
|
1176
|
+
async setSessionPublished(sessionId, published) {
|
|
1177
|
+
await this.prisma.$executeRawUnsafe(`UPDATE course_module SET published = ${published ? 'true' : 'false'} WHERE id = ${Number(sessionId)}`);
|
|
1178
|
+
}
|
|
1179
|
+
async getLessonPublishedByIds(lessonIds) {
|
|
1180
|
+
const publishedById = new Map();
|
|
1181
|
+
const csv = this.buildIdCsv(lessonIds);
|
|
1182
|
+
if (!csv)
|
|
1183
|
+
return publishedById;
|
|
1184
|
+
try {
|
|
1185
|
+
const rows = await this.prisma.$queryRawUnsafe(`SELECT id, published FROM course_lesson WHERE id IN (${csv})`);
|
|
1186
|
+
for (const row of rows) {
|
|
1187
|
+
publishedById.set(row.id, Boolean(row.published));
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
catch (_a) {
|
|
1191
|
+
return publishedById;
|
|
1192
|
+
}
|
|
1193
|
+
return publishedById;
|
|
1194
|
+
}
|
|
1195
|
+
async getLessonPublished(lessonId) {
|
|
1196
|
+
var _a;
|
|
1197
|
+
const rows = await this.prisma.$queryRawUnsafe(`SELECT published FROM course_lesson WHERE id = ${Number(lessonId)} LIMIT 1`);
|
|
1198
|
+
return Boolean((_a = rows[0]) === null || _a === void 0 ? void 0 : _a.published);
|
|
1199
|
+
}
|
|
1200
|
+
async setLessonPublished(lessonId, published, client = this.prisma) {
|
|
1201
|
+
await client.$executeRawUnsafe(`UPDATE course_lesson SET published = ${published ? 'true' : 'false'} WHERE id = ${Number(lessonId)}`);
|
|
1202
|
+
}
|
|
1074
1203
|
parseLessonContent(content) {
|
|
1075
1204
|
if (!content)
|
|
1076
1205
|
return null;
|