@purpleschool/student-works 1.2.1 → 1.3.1

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 (129) hide show
  1. package/api/controller/http/auth.ts +1 -0
  2. package/api/controller/http/files.ts +1 -0
  3. package/api/controller/http/index.ts +1 -0
  4. package/api/controller/http/presentation.ts +37 -0
  5. package/api/routes.ts +91 -0
  6. package/build/api/controller/http/auth.js +1 -0
  7. package/build/api/controller/http/files.js +1 -0
  8. package/build/api/controller/http/index.js +1 -0
  9. package/build/api/controller/http/presentation.js +33 -0
  10. package/build/api/routes.js +53 -0
  11. package/build/commands/auth/change-password.command.js +16 -0
  12. package/build/commands/auth/index.js +1 -0
  13. package/build/commands/index.js +1 -0
  14. package/build/commands/presentation/build-blank-slide.command.js +16 -0
  15. package/build/commands/presentation/create-presentation.command.js +17 -0
  16. package/build/commands/presentation/delete-all-user-presentations.command.js +9 -0
  17. package/build/commands/presentation/delete-presentation.command.js +11 -0
  18. package/build/commands/presentation/delete-slide-outline.command.js +12 -0
  19. package/build/commands/presentation/export-presentation-as-pptx.command.js +17 -0
  20. package/build/commands/presentation/find-presentation-by-uuid.command.js +14 -0
  21. package/build/commands/presentation/find-presentation-outline.command.js +14 -0
  22. package/build/commands/presentation/find-presentations.command.js +18 -0
  23. package/build/commands/presentation/generate-and-insert-slide.command.js +22 -0
  24. package/build/commands/presentation/generate-presentation-slides.command.js +14 -0
  25. package/build/commands/presentation/get-presentation-config.command.js +11 -0
  26. package/build/commands/presentation/index.js +39 -0
  27. package/build/commands/presentation/presentation-generate-report.command.js +17 -0
  28. package/build/commands/presentation/presentation-paraphrase.command.js +20 -0
  29. package/build/commands/presentation/reposition-slide-outline.command.js +15 -0
  30. package/build/commands/presentation/set-reaction-to-presentation.command.js +28 -0
  31. package/build/commands/presentation/update-presentation-outline.command.js +15 -0
  32. package/build/commands/presentation/update-presentation-slides.command.js +25 -0
  33. package/build/commands/presentation/update-presentation.command.js +18 -0
  34. package/build/commands/presentation/update-slide-image-slot.command.js +34 -0
  35. package/build/commands/presentation/update-slide-outline.command.js +23 -0
  36. package/build/commands/presentation/update-slide.command.js +19 -0
  37. package/build/constants/errors/errors.js +246 -0
  38. package/build/constants/index.js +1 -0
  39. package/build/constants/presentation/enums/index.js +26 -0
  40. package/build/constants/presentation/enums/presentation-ai-action-call-status.enum.js +9 -0
  41. package/build/constants/presentation/enums/presentation-ai-action-pricing-type.enum.js +8 -0
  42. package/build/constants/presentation/enums/presentation-ai-action-type.enum.js +8 -0
  43. package/build/constants/presentation/enums/presentation-stage.enum.js +14 -0
  44. package/build/constants/presentation/enums/slide-content-type.enum.js +16 -0
  45. package/build/constants/presentation/enums/slide-icon-slot-status.enum.js +10 -0
  46. package/build/constants/presentation/enums/slide-image-slot-action.enum.js +8 -0
  47. package/build/constants/presentation/enums/slide-image-slot.status.enum.js +10 -0
  48. package/build/constants/presentation/enums/slide-layout.enum.js +8 -0
  49. package/build/constants/presentation/index.js +18 -0
  50. package/build/constants/presentation/maps/index.js +17 -0
  51. package/build/constants/presentation/maps/slide-layout-map.constant.js +17 -0
  52. package/build/helpers/index.js +1 -0
  53. package/build/helpers/presentation/calculate-presentation-ai-action-price.util.js +16 -0
  54. package/build/helpers/presentation/index.js +17 -0
  55. package/build/models/index.js +1 -0
  56. package/build/models/language.schema.js +11 -0
  57. package/build/models/presentation/index.js +24 -0
  58. package/build/models/presentation/pptx-export-payload.schema.js +216 -0
  59. package/build/models/presentation/presentation-ai-action.schema.js +27 -0
  60. package/build/models/presentation/presentation-config.schema.js +21 -0
  61. package/build/models/presentation/presentation-template.schema.js +13 -0
  62. package/build/models/presentation/presentation.schema.js +28 -0
  63. package/build/models/presentation/slide-content-edit.schema.js +146 -0
  64. package/build/models/presentation/slide-content-type.schema.js +14 -0
  65. package/build/models/presentation/slide-content.schema.js +358 -0
  66. package/build/models/presentation/slide-icon-slot.schema.js +15 -0
  67. package/build/models/presentation/slide-image-slot.schema.js +16 -0
  68. package/build/models/presentation/slide-outline.schema.js +50 -0
  69. package/build/models/presentation/slide.schema.js +58 -0
  70. package/commands/auth/change-password.command.ts +18 -0
  71. package/commands/auth/index.ts +1 -0
  72. package/commands/index.ts +1 -0
  73. package/commands/presentation/build-blank-slide.command.ts +18 -0
  74. package/commands/presentation/create-presentation.command.ts +19 -0
  75. package/commands/presentation/delete-all-user-presentations.command.ts +9 -0
  76. package/commands/presentation/delete-presentation.command.ts +13 -0
  77. package/commands/presentation/delete-slide-outline.command.ts +12 -0
  78. package/commands/presentation/export-presentation-as-pptx.command.ts +20 -0
  79. package/commands/presentation/find-presentation-by-uuid.command.ts +16 -0
  80. package/commands/presentation/find-presentation-outline.command.ts +16 -0
  81. package/commands/presentation/find-presentations.command.ts +18 -0
  82. package/commands/presentation/generate-and-insert-slide.command.ts +27 -0
  83. package/commands/presentation/generate-presentation-slides.command.ts +16 -0
  84. package/commands/presentation/get-presentation-config.command.ts +10 -0
  85. package/commands/presentation/index.ts +23 -0
  86. package/commands/presentation/presentation-generate-report.command.ts +21 -0
  87. package/commands/presentation/presentation-paraphrase.command.ts +26 -0
  88. package/commands/presentation/reposition-slide-outline.command.ts +17 -0
  89. package/commands/presentation/set-reaction-to-presentation.command.ts +33 -0
  90. package/commands/presentation/update-presentation-outline.command.ts +18 -0
  91. package/commands/presentation/update-presentation-slides.command.ts +32 -0
  92. package/commands/presentation/update-presentation.command.ts +21 -0
  93. package/commands/presentation/update-slide-image-slot.command.ts +40 -0
  94. package/commands/presentation/update-slide-outline.command.ts +26 -0
  95. package/commands/presentation/update-slide.command.ts +25 -0
  96. package/constants/errors/errors.ts +246 -0
  97. package/constants/index.ts +1 -0
  98. package/constants/presentation/enums/index.ts +10 -0
  99. package/constants/presentation/enums/presentation-ai-action-call-status.enum.ts +5 -0
  100. package/constants/presentation/enums/presentation-ai-action-pricing-type.enum.ts +4 -0
  101. package/constants/presentation/enums/presentation-ai-action-type.enum.ts +4 -0
  102. package/constants/presentation/enums/presentation-stage.enum.ts +13 -0
  103. package/constants/presentation/enums/slide-content-type.enum.ts +12 -0
  104. package/constants/presentation/enums/slide-icon-slot-status.enum.ts +6 -0
  105. package/constants/presentation/enums/slide-image-slot-action.enum.ts +4 -0
  106. package/constants/presentation/enums/slide-image-slot.status.enum.ts +6 -0
  107. package/constants/presentation/enums/slide-layout.enum.ts +4 -0
  108. package/constants/presentation/index.ts +2 -0
  109. package/constants/presentation/maps/index.ts +1 -0
  110. package/constants/presentation/maps/slide-layout-map.constant.ts +15 -0
  111. package/helpers/index.ts +1 -0
  112. package/helpers/presentation/calculate-presentation-ai-action-price.util.ts +20 -0
  113. package/helpers/presentation/index.ts +1 -0
  114. package/models/index.ts +1 -0
  115. package/models/language.schema.ts +9 -0
  116. package/models/presentation/index.ts +8 -0
  117. package/models/presentation/pptx-export-payload.schema.ts +246 -0
  118. package/models/presentation/presentation-ai-action.schema.ts +30 -0
  119. package/models/presentation/presentation-config.schema.ts +20 -0
  120. package/models/presentation/presentation-template.schema.ts +11 -0
  121. package/models/presentation/presentation.schema.ts +29 -0
  122. package/models/presentation/slide-content-edit.schema.ts +175 -0
  123. package/models/presentation/slide-content-type.schema.ts +13 -0
  124. package/models/presentation/slide-content.schema.ts +571 -0
  125. package/models/presentation/slide-icon-slot.schema.ts +13 -0
  126. package/models/presentation/slide-image-slot.schema.ts +14 -0
  127. package/models/presentation/slide-outline.schema.ts +58 -0
  128. package/models/presentation/slide.schema.ts +66 -0
  129. package/package.json +2 -2
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetReactionToPresentationCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../constants");
6
+ const presentation_1 = require("../../models/presentation");
7
+ var SetReactionToPresentationCommand;
8
+ (function (SetReactionToPresentationCommand) {
9
+ SetReactionToPresentationCommand.RequestSchema = zod_1.z.object({
10
+ uuid: zod_1.z.string().uuid(),
11
+ });
12
+ SetReactionToPresentationCommand.RequestBodySchema = zod_1.z
13
+ .object({
14
+ reaction: zod_1.z.nativeEnum(constants_1.USER_REACTION).nullable(),
15
+ dislikeReason: zod_1.z.string().nullable().default(null),
16
+ })
17
+ .refine((data) => {
18
+ if (data.reaction !== constants_1.USER_REACTION.DISLIKED && data.dislikeReason) {
19
+ return false;
20
+ }
21
+ return true;
22
+ }, {
23
+ message: 'Dislike reason is not allowed when reaction is not DISLIKED',
24
+ });
25
+ SetReactionToPresentationCommand.ResponseSchema = zod_1.z.object({
26
+ data: presentation_1.PresentationSchema,
27
+ });
28
+ })(SetReactionToPresentationCommand || (exports.SetReactionToPresentationCommand = SetReactionToPresentationCommand = {}));
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdatePresentationOutlineCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const presentation_1 = require("../../models/presentation");
6
+ var UpdatePresentationOutlineCommand;
7
+ (function (UpdatePresentationOutlineCommand) {
8
+ UpdatePresentationOutlineCommand.RequestParamsSchema = zod_1.z.object({
9
+ uuid: zod_1.z.string().uuid(),
10
+ });
11
+ UpdatePresentationOutlineCommand.RequestBodySchema = presentation_1.SlideOutlineBulkUpdateSchema;
12
+ UpdatePresentationOutlineCommand.ResponseSchema = zod_1.z.object({
13
+ data: presentation_1.SlideOutlineSchema.array(),
14
+ });
15
+ })(UpdatePresentationOutlineCommand || (exports.UpdatePresentationOutlineCommand = UpdatePresentationOutlineCommand = {}));
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdatePresentationSlidesCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const presentation_1 = require("../../models/presentation");
6
+ var UpdatePresentationSlidesCommand;
7
+ (function (UpdatePresentationSlidesCommand) {
8
+ UpdatePresentationSlidesCommand.RequestSchema = zod_1.z.object({
9
+ data: presentation_1.SlideBulkUpdateSchema,
10
+ });
11
+ UpdatePresentationSlidesCommand.RequestParamsSchema = zod_1.z.object({
12
+ uuid: zod_1.z.string().uuid(),
13
+ });
14
+ UpdatePresentationSlidesCommand.ResponseSchema = zod_1.z.object({
15
+ data: zod_1.z.array(zod_1.z.object({
16
+ uuid: zod_1.z.string().uuid(),
17
+ order: zod_1.z.number(),
18
+ contentTypeId: zod_1.z.string(),
19
+ layoutId: zod_1.z.string(),
20
+ content: zod_1.z.record(zod_1.z.any()),
21
+ createdAt: zod_1.z.date(),
22
+ updatedAt: zod_1.z.date(),
23
+ })),
24
+ });
25
+ })(UpdatePresentationSlidesCommand || (exports.UpdatePresentationSlidesCommand = UpdatePresentationSlidesCommand = {}));
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdatePresentationCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const presentation_1 = require("../../models/presentation");
6
+ var UpdatePresentationCommand;
7
+ (function (UpdatePresentationCommand) {
8
+ UpdatePresentationCommand.RequestParamsSchema = zod_1.z.object({
9
+ uuid: zod_1.z.string().uuid(),
10
+ });
11
+ UpdatePresentationCommand.RequestBodySchema = presentation_1.PresentationSchema.pick({
12
+ title: true,
13
+ templateId: true,
14
+ }).partial();
15
+ UpdatePresentationCommand.ResponseSchema = zod_1.z.object({
16
+ data: presentation_1.PresentationSchema,
17
+ });
18
+ })(UpdatePresentationCommand || (exports.UpdatePresentationCommand = UpdatePresentationCommand = {}));
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateSlideImageSlotCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../constants");
6
+ const slide_image_slot_schema_1 = require("../../models/presentation/slide-image-slot.schema");
7
+ var UpdateSlideImageSlotCommand;
8
+ (function (UpdateSlideImageSlotCommand) {
9
+ const ReplacePayload = zod_1.z.object({
10
+ action: zod_1.z.literal(constants_1.SLIDE_IMAGE_SLOT_ACTION.REPLACE),
11
+ fileId: zod_1.z.string().uuid(),
12
+ });
13
+ const GeneratePayload = zod_1.z.object({
14
+ action: zod_1.z.literal(constants_1.SLIDE_IMAGE_SLOT_ACTION.GENERATE),
15
+ prompt: zod_1.z.string().min(1).max(1000).optional(),
16
+ });
17
+ const UpdateImageSlotPayloadSchema = zod_1.z.discriminatedUnion('action', [
18
+ ReplacePayload,
19
+ GeneratePayload,
20
+ ]);
21
+ UpdateSlideImageSlotCommand.RequestSchema = zod_1.z.object({
22
+ payload: UpdateImageSlotPayloadSchema,
23
+ });
24
+ UpdateSlideImageSlotCommand.RequestParamsSchema = zod_1.z.object({
25
+ presentationId: zod_1.z.string().uuid(),
26
+ slideId: zod_1.z.string().uuid(),
27
+ slotId: zod_1.z.string().uuid().optional(),
28
+ });
29
+ UpdateSlideImageSlotCommand.ResponseSchema = zod_1.z.object({
30
+ data: zod_1.z.object({
31
+ imageSlot: slide_image_slot_schema_1.SlideImageSlotSchema,
32
+ }),
33
+ });
34
+ })(UpdateSlideImageSlotCommand || (exports.UpdateSlideImageSlotCommand = UpdateSlideImageSlotCommand = {}));
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateSlideOutlineCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const presentation_1 = require("../../models/presentation");
6
+ const constants_1 = require("../../constants");
7
+ var UpdateSlideOutlineCommand;
8
+ (function (UpdateSlideOutlineCommand) {
9
+ UpdateSlideOutlineCommand.RequestParamsSchema = zod_1.z.object({
10
+ presentationId: zod_1.z.string().uuid(),
11
+ slideOutlineId: zod_1.z.string().uuid(),
12
+ });
13
+ UpdateSlideOutlineCommand.RequestBodySchema = zod_1.z
14
+ .object({
15
+ title: zod_1.z.string(),
16
+ body: zod_1.z.string(),
17
+ contentTypeId: zod_1.z.nativeEnum(constants_1.SLIDE_CONTENT_TYPE),
18
+ })
19
+ .partial();
20
+ UpdateSlideOutlineCommand.ResponseSchema = zod_1.z.object({
21
+ data: presentation_1.SlideOutlineSchema,
22
+ });
23
+ })(UpdateSlideOutlineCommand || (exports.UpdateSlideOutlineCommand = UpdateSlideOutlineCommand = {}));
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateSlideCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const presentation_1 = require("../../models/presentation");
6
+ var UpdateSlideCommand;
7
+ (function (UpdateSlideCommand) {
8
+ UpdateSlideCommand.RequestParamsSchema = zod_1.z.object({
9
+ presentationId: zod_1.z.string(),
10
+ slideId: zod_1.z.string(),
11
+ });
12
+ UpdateSlideCommand.RequestBodySchema = zod_1.z.object({
13
+ data: presentation_1.SlideUpdateSchema,
14
+ });
15
+ UpdateSlideCommand.RequestSchema = UpdateSlideCommand.RequestParamsSchema.merge(UpdateSlideCommand.RequestBodySchema);
16
+ UpdateSlideCommand.ResponseSchema = zod_1.z.object({
17
+ data: presentation_1.SlideSchema,
18
+ });
19
+ })(UpdateSlideCommand || (exports.UpdateSlideCommand = UpdateSlideCommand = {}));
@@ -70,6 +70,16 @@ exports.ERRORS = {
70
70
  code: 'AUTH_010',
71
71
  httpCode: 401,
72
72
  },
73
+ AUTH_PASSWORD_IDENTICAL: {
74
+ message: 'Новый пароль совпадает с текущим',
75
+ code: 'AUTH_012',
76
+ httpCode: 400,
77
+ },
78
+ AUTH_CHANGE_PASSWORD_ERROR: {
79
+ message: 'Ошибка при смене пароля',
80
+ code: 'AUTH_013',
81
+ httpCode: 500,
82
+ },
73
83
  AUTH_EMAIL_VERIFICATION_CODE_INVALID: {
74
84
  message: 'Код подтверждения email некорректен',
75
85
  code: 'AUTH_011',
@@ -1178,4 +1188,240 @@ exports.ERRORS = {
1178
1188
  code: 'TOOLS_001',
1179
1189
  httpCode: 500,
1180
1190
  },
1191
+ // PRESENTATION
1192
+ PRESENTATION_SAVE_ERROR: {
1193
+ message: 'Ошибка при сохранении презентации',
1194
+ code: 'PRESENTATION_001',
1195
+ httpCode: 500,
1196
+ },
1197
+ PRESENTATION_NOT_FOUND: {
1198
+ message: 'Презентация не найдена',
1199
+ code: 'PRESENTATION_002',
1200
+ httpCode: 404,
1201
+ },
1202
+ PRESENTATION_OWNERSHIP_ERROR: {
1203
+ message: 'Пользователь не является владельцем презентации',
1204
+ code: 'PRESENTATION_003',
1205
+ httpCode: 403,
1206
+ },
1207
+ PRESENTATION_STAGE_OUTLINE_GENERATED_REQUIRED: {
1208
+ message: 'Требуется стадия генерации плана презентации',
1209
+ code: 'PRESENTATION_004',
1210
+ httpCode: 400,
1211
+ },
1212
+ PRESENTATION_TOO_MANY_SLIDES: {
1213
+ message: 'Слишком много слайдов в презентации',
1214
+ code: 'PRESENTATION_005',
1215
+ httpCode: 400,
1216
+ },
1217
+ PRESENTATION_TOO_FEW_SLIDES: {
1218
+ message: 'Слишком мало слайдов в презентации',
1219
+ code: 'PRESENTATION_006',
1220
+ httpCode: 400,
1221
+ },
1222
+ PRESENTATION_CREATE_BLANK_SLIDE_ERROR: {
1223
+ message: 'Ошибка при создании пустого слайда',
1224
+ code: 'PRESENTATION_007',
1225
+ httpCode: 500,
1226
+ },
1227
+ PRESENTATION_SLIDE_NOT_FOUND: {
1228
+ message: 'Слайд не найден',
1229
+ code: 'PRESENTATION_008',
1230
+ httpCode: 404,
1231
+ },
1232
+ PRESENTATION_INVALID_CONTENT_TYPE_CHANGE: {
1233
+ message: 'Недопустимое изменение типа содержимого',
1234
+ code: 'PRESENTATION_009',
1235
+ httpCode: 400,
1236
+ },
1237
+ PRESENTATION_SLIDE_IMAGE_SLOT_NOT_FOUND: {
1238
+ message: 'Слот изображения слайда не найден',
1239
+ code: 'PRESENTATION_010',
1240
+ httpCode: 404,
1241
+ },
1242
+ PRESENTATION_SLIDE_IMAGE_UPDATE_ERROR: {
1243
+ message: 'Ошибка при обновлении изображения слайда',
1244
+ code: 'PRESENTATION_011',
1245
+ httpCode: 500,
1246
+ },
1247
+ PRESENTATION_IMAGE_GENERATION_ERROR: {
1248
+ message: 'Ошибка при генерации изображения',
1249
+ code: 'PRESENTATION_012',
1250
+ httpCode: 500,
1251
+ },
1252
+ PRESENTATION_INVALID_SLIDE_POSITION: {
1253
+ message: 'Недопустимая позиция слайда',
1254
+ code: 'PRESENTATION_013',
1255
+ httpCode: 400,
1256
+ },
1257
+ PRESENTATION_OUTLINE_UPDATE_ERROR: {
1258
+ message: 'Ошибка при обновлении плана презентации',
1259
+ code: 'PRESENTATION_014',
1260
+ httpCode: 500,
1261
+ },
1262
+ PRESENTATION_SAVE_SLIDES_ERROR: {
1263
+ message: 'Ошибка при сохранении слайдов',
1264
+ code: 'PRESENTATION_015',
1265
+ httpCode: 500,
1266
+ },
1267
+ PRESENTATION_GENERATE_OUTLINE_ERROR: {
1268
+ message: 'Ошибка при генерации плана презентации',
1269
+ code: 'PRESENTATION_016',
1270
+ httpCode: 500,
1271
+ },
1272
+ PRESENTATION_FIND_ERROR: {
1273
+ message: 'Ошибка при поиске презентации',
1274
+ code: 'PRESENTATION_017',
1275
+ httpCode: 500,
1276
+ },
1277
+ PRESENTATION_GENERATE_SLIDES_ERROR: {
1278
+ message: 'Ошибка при генерации слайдов',
1279
+ code: 'PRESENTATION_018',
1280
+ httpCode: 500,
1281
+ },
1282
+ PRESENTATION_DELETE_ERROR: {
1283
+ message: 'Ошибка при удалении презентации',
1284
+ code: 'PRESENTATION_019',
1285
+ httpCode: 500,
1286
+ },
1287
+ PRESENTATION_STAGE_CREATED_REQUIRED: {
1288
+ message: 'Требуется стадия создания презентации',
1289
+ code: 'PRESENTATION_020',
1290
+ httpCode: 400,
1291
+ },
1292
+ PRESENTATION_STAGE_SLIDES_GENERATED_REQUIRED: {
1293
+ message: 'Требуется стадия генерации слайдов',
1294
+ code: 'PRESENTATION_021',
1295
+ httpCode: 400,
1296
+ },
1297
+ // SLIDE_OUTLINE
1298
+ SLIDE_OUTLINE_INVALID_POSITION: {
1299
+ message: 'Недопустимая позиция слайда в плане',
1300
+ code: 'SLIDE_OUTLINE_001',
1301
+ httpCode: 400,
1302
+ },
1303
+ SLIDE_OUTLINE_NOT_FOUND: {
1304
+ message: 'Слайд в плане не найден',
1305
+ code: 'SLIDE_OUTLINE_002',
1306
+ httpCode: 404,
1307
+ },
1308
+ SLIDE_OUTLINE_FIND_ERROR: {
1309
+ message: 'Ошибка при поиске слайдов в плане',
1310
+ code: 'SLIDE_OUTLINE_003',
1311
+ httpCode: 500,
1312
+ },
1313
+ SLIDE_OUTLINE_UPDATE_ERROR: {
1314
+ message: 'Ошибка при обновлении слайда в плане',
1315
+ code: 'SLIDE_OUTLINE_004',
1316
+ httpCode: 500,
1317
+ },
1318
+ SLIDE_OUTLINE_REPOSITION_ERROR: {
1319
+ message: 'Ошибка при изменении позиции слайда в плане',
1320
+ code: 'SLIDE_OUTLINE_005',
1321
+ httpCode: 500,
1322
+ },
1323
+ SLIDE_OUTLINE_DELETE_ERROR: {
1324
+ message: 'Ошибка при удалении слайда из плана',
1325
+ code: 'SLIDE_OUTLINE_006',
1326
+ httpCode: 500,
1327
+ },
1328
+ SLIDE_OUTLINE_SAVE_ERROR: {
1329
+ message: 'Ошибка при сохранении слайдов в плане',
1330
+ code: 'SLIDE_OUTLINE_007',
1331
+ httpCode: 500,
1332
+ },
1333
+ // PPTX_GENERATION
1334
+ PPTX_GENERATION_INTERNAL_ERROR: {
1335
+ message: 'Ошибка при генерации PPTX файла',
1336
+ code: 'PPTX_GENERATION_001',
1337
+ httpCode: 500,
1338
+ },
1339
+ // PRESENTATION_AI_ACTION
1340
+ PRESENTATION_AI_ACTION_PROMPT_TOO_LONG: {
1341
+ message: 'Промпт для действия AI слишком длинный',
1342
+ code: 'PRESENTATION_AI_ACTION_001',
1343
+ httpCode: 400,
1344
+ },
1345
+ PRESENTATION_AI_ACTION_NOT_FOUND: {
1346
+ message: 'Действие AI не найдено',
1347
+ code: 'PRESENTATION_AI_ACTION_002',
1348
+ httpCode: 404,
1349
+ },
1350
+ PRESENTATION_AI_ACTION_FIND_ERROR: {
1351
+ message: 'Ошибка при поиске действия AI',
1352
+ code: 'PRESENTATION_AI_ACTION_003',
1353
+ httpCode: 500,
1354
+ },
1355
+ // AI
1356
+ AI_ERROR: {
1357
+ message: 'Ошибка при работе с AI',
1358
+ code: 'AI_001',
1359
+ httpCode: 500,
1360
+ },
1361
+ // SLIDE_LAYOUT
1362
+ SLIDE_LAYOUT_FIND_ERROR: {
1363
+ message: 'Ошибка при поиске макета слайда',
1364
+ code: 'SLIDE_LAYOUT_001',
1365
+ httpCode: 500,
1366
+ },
1367
+ SLIDE_LAYOUT_NOT_FOUND: {
1368
+ message: 'Макет слайда не найден',
1369
+ code: 'SLIDE_LAYOUT_002',
1370
+ httpCode: 404,
1371
+ },
1372
+ SLIDE_LAYOUT_SAVE_ERROR: {
1373
+ message: 'Ошибка при сохранении макета слайда',
1374
+ code: 'SLIDE_LAYOUT_003',
1375
+ httpCode: 500,
1376
+ },
1377
+ // SLIDE_IMAGE_SLOT
1378
+ SLIDE_IMAGE_SLOT_SAVE_ERROR: {
1379
+ message: 'Ошибка при сохранении слота изображения слайда',
1380
+ code: 'SLIDE_IMAGE_SLOT_001',
1381
+ httpCode: 500,
1382
+ },
1383
+ // SLIDE_CONTENT_TYPE
1384
+ SLIDE_CONTENT_TYPE_FIND_ERROR: {
1385
+ message: 'Ошибка при поиске типа содержимого слайда',
1386
+ code: 'SLIDE_CONTENT_TYPE_001',
1387
+ httpCode: 500,
1388
+ },
1389
+ // PRESENTATION_TEMPLATE
1390
+ PRESENTATION_TEMPLATE_NOT_FOUND: {
1391
+ message: 'Шаблон презентации не найден',
1392
+ code: 'PRESENTATION_TEMPLATE_001',
1393
+ httpCode: 404,
1394
+ },
1395
+ PRESENTATION_TEMPLATE_FIND_ERROR: {
1396
+ message: 'Ошибка при поиске шаблона презентации',
1397
+ code: 'PRESENTATION_TEMPLATE_002',
1398
+ httpCode: 500,
1399
+ },
1400
+ // PRESENTATION_AI_ACTION_CALL
1401
+ PRESENTATION_AI_ACTION_CALL_NOT_FOUND: {
1402
+ message: 'Вызов действия AI не найден',
1403
+ code: 'PRESENTATION_AI_ACTION_CALL_001',
1404
+ httpCode: 404,
1405
+ },
1406
+ PRESENTATION_AI_ACTION_CALL_FIND_ERROR: {
1407
+ message: 'Ошибка при поиске вызова действия AI',
1408
+ code: 'PRESENTATION_AI_ACTION_CALL_002',
1409
+ httpCode: 500,
1410
+ },
1411
+ PRESENTATION_AI_ACTION_CALL_SAVE_ERROR: {
1412
+ message: 'Ошибка при сохранении вызова действия AI',
1413
+ code: 'PRESENTATION_AI_ACTION_CALL_003',
1414
+ httpCode: 500,
1415
+ },
1416
+ // LANGUAGE
1417
+ LANGUAGE_NOT_FOUND: {
1418
+ message: 'Язык не найден',
1419
+ code: 'LANGUAGE_001',
1420
+ httpCode: 404,
1421
+ },
1422
+ LANGUAGE_FIND_ERROR: {
1423
+ message: 'Ошибка при поиске языка',
1424
+ code: 'LANGUAGE_002',
1425
+ httpCode: 500,
1426
+ },
1181
1427
  };
@@ -30,3 +30,4 @@ __exportStar(require("./page"), exports);
30
30
  __exportStar(require("./writer"), exports);
31
31
  __exportStar(require("./files"), exports);
32
32
  __exportStar(require("./common"), exports);
33
+ __exportStar(require("./presentation"), exports);
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./presentation-stage.enum"), exports);
18
+ __exportStar(require("./slide-content-type.enum"), exports);
19
+ __exportStar(require("./slide-icon-slot-status.enum"), exports);
20
+ __exportStar(require("./slide-image-slot.status.enum"), exports);
21
+ __exportStar(require("./slide-layout.enum"), exports);
22
+ __exportStar(require("./slide-image-slot-action.enum"), exports);
23
+ __exportStar(require("./presentation-ai-action-type.enum"), exports);
24
+ __exportStar(require("./presentation-ai-action-pricing-type.enum"), exports);
25
+ __exportStar(require("./presentation-ai-action-call-status.enum"), exports);
26
+ __exportStar(require("./slide-icon-slot-status.enum"), exports);
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRESENTATION_AI_ACTION_CALL_STATUS = void 0;
4
+ var PRESENTATION_AI_ACTION_CALL_STATUS;
5
+ (function (PRESENTATION_AI_ACTION_CALL_STATUS) {
6
+ PRESENTATION_AI_ACTION_CALL_STATUS["PROCESSING"] = "processing";
7
+ PRESENTATION_AI_ACTION_CALL_STATUS["COMPLETED"] = "completed";
8
+ PRESENTATION_AI_ACTION_CALL_STATUS["FAILED"] = "failed";
9
+ })(PRESENTATION_AI_ACTION_CALL_STATUS || (exports.PRESENTATION_AI_ACTION_CALL_STATUS = PRESENTATION_AI_ACTION_CALL_STATUS = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRESENTATION_AI_ACTION_PRICING_TYPE = void 0;
4
+ var PRESENTATION_AI_ACTION_PRICING_TYPE;
5
+ (function (PRESENTATION_AI_ACTION_PRICING_TYPE) {
6
+ PRESENTATION_AI_ACTION_PRICING_TYPE["PER_CHARACTER"] = "PER_CHARACTER";
7
+ PRESENTATION_AI_ACTION_PRICING_TYPE["FLAT"] = "FLAT";
8
+ })(PRESENTATION_AI_ACTION_PRICING_TYPE || (exports.PRESENTATION_AI_ACTION_PRICING_TYPE = PRESENTATION_AI_ACTION_PRICING_TYPE = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRESENTATION_AI_ACTION_TYPE = void 0;
4
+ var PRESENTATION_AI_ACTION_TYPE;
5
+ (function (PRESENTATION_AI_ACTION_TYPE) {
6
+ PRESENTATION_AI_ACTION_TYPE["PARAPHRASE"] = "PARAPHRASE";
7
+ PRESENTATION_AI_ACTION_TYPE["GENERATE_REPORT"] = "GENERATE_REPORT";
8
+ })(PRESENTATION_AI_ACTION_TYPE || (exports.PRESENTATION_AI_ACTION_TYPE = PRESENTATION_AI_ACTION_TYPE = {}));
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRESENTATION_STAGE = void 0;
4
+ var PRESENTATION_STAGE;
5
+ (function (PRESENTATION_STAGE) {
6
+ PRESENTATION_STAGE["CREATED"] = "CREATED";
7
+ PRESENTATION_STAGE["GENERATING_OUTLINE"] = "GENERATING_OUTLINE";
8
+ PRESENTATION_STAGE["OUTLINE_GENERATED"] = "OUTLINE_GENERATED";
9
+ PRESENTATION_STAGE["OUTLINE_GENERATION_FAILED"] = "OUTLINE_GENERATION_FAILED";
10
+ PRESENTATION_STAGE["GENERATING_SLIDES"] = "GENERATING_SLIDES";
11
+ PRESENTATION_STAGE["SLIDES_GENERATED"] = "SLIDES_GENERATED";
12
+ PRESENTATION_STAGE["SLIDES_GENERATION_FAILED"] = "SLIDES_GENERATION_FAILED";
13
+ PRESENTATION_STAGE["DELETED"] = "DELETED";
14
+ })(PRESENTATION_STAGE || (exports.PRESENTATION_STAGE = PRESENTATION_STAGE = {}));
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLIDE_CONTENT_TYPE = void 0;
4
+ var SLIDE_CONTENT_TYPE;
5
+ (function (SLIDE_CONTENT_TYPE) {
6
+ SLIDE_CONTENT_TYPE["COVER"] = "COVER";
7
+ SLIDE_CONTENT_TYPE["TEXT"] = "TEXT";
8
+ SLIDE_CONTENT_TYPE["TEXT_WITH_IMAGE"] = "TEXT_WITH_IMAGE";
9
+ SLIDE_CONTENT_TYPE["SECTION_BREAK"] = "SECTION_BREAK";
10
+ SLIDE_CONTENT_TYPE["STRUCTURED_LIST"] = "STRUCTURED_LIST";
11
+ SLIDE_CONTENT_TYPE["CONTENTS"] = "CONTENTS";
12
+ SLIDE_CONTENT_TYPE["THANK_YOU"] = "THANK_YOU";
13
+ SLIDE_CONTENT_TYPE["TABLE"] = "TABLE";
14
+ SLIDE_CONTENT_TYPE["CHART"] = "CHART";
15
+ SLIDE_CONTENT_TYPE["TIMELINE"] = "TIMELINE";
16
+ })(SLIDE_CONTENT_TYPE || (exports.SLIDE_CONTENT_TYPE = SLIDE_CONTENT_TYPE = {}));
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLIDE_ICON_SLOT_STATUS = void 0;
4
+ var SLIDE_ICON_SLOT_STATUS;
5
+ (function (SLIDE_ICON_SLOT_STATUS) {
6
+ SLIDE_ICON_SLOT_STATUS["PENDING"] = "PENDING";
7
+ SLIDE_ICON_SLOT_STATUS["IN_PROGRESS"] = "IN_PROGRESS";
8
+ SLIDE_ICON_SLOT_STATUS["READY"] = "READY";
9
+ SLIDE_ICON_SLOT_STATUS["ERROR"] = "ERROR";
10
+ })(SLIDE_ICON_SLOT_STATUS || (exports.SLIDE_ICON_SLOT_STATUS = SLIDE_ICON_SLOT_STATUS = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLIDE_IMAGE_SLOT_ACTION = void 0;
4
+ var SLIDE_IMAGE_SLOT_ACTION;
5
+ (function (SLIDE_IMAGE_SLOT_ACTION) {
6
+ SLIDE_IMAGE_SLOT_ACTION["REPLACE"] = "REPLACE";
7
+ SLIDE_IMAGE_SLOT_ACTION["GENERATE"] = "GENERATE";
8
+ })(SLIDE_IMAGE_SLOT_ACTION || (exports.SLIDE_IMAGE_SLOT_ACTION = SLIDE_IMAGE_SLOT_ACTION = {}));
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLIDE_IMAGE_SLOT_STATUS = void 0;
4
+ var SLIDE_IMAGE_SLOT_STATUS;
5
+ (function (SLIDE_IMAGE_SLOT_STATUS) {
6
+ SLIDE_IMAGE_SLOT_STATUS["PENDING"] = "PENDING";
7
+ SLIDE_IMAGE_SLOT_STATUS["IN_PROGRESS"] = "IN_PROGRESS";
8
+ SLIDE_IMAGE_SLOT_STATUS["READY"] = "READY";
9
+ SLIDE_IMAGE_SLOT_STATUS["ERROR"] = "ERROR";
10
+ })(SLIDE_IMAGE_SLOT_STATUS || (exports.SLIDE_IMAGE_SLOT_STATUS = SLIDE_IMAGE_SLOT_STATUS = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLIDE_LAYOUT = void 0;
4
+ var SLIDE_LAYOUT;
5
+ (function (SLIDE_LAYOUT) {
6
+ SLIDE_LAYOUT["TYPE_1"] = "TYPE_1";
7
+ SLIDE_LAYOUT["TYPE_2"] = "TYPE_2";
8
+ })(SLIDE_LAYOUT || (exports.SLIDE_LAYOUT = SLIDE_LAYOUT = {}));
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./enums"), exports);
18
+ __exportStar(require("./maps"), exports);
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./slide-layout-map.constant"), exports);
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLIDE_LAYOUT_MAP = void 0;
4
+ const enums_1 = require("../enums");
5
+ const slide_layout_enum_1 = require("../enums/slide-layout.enum");
6
+ exports.SLIDE_LAYOUT_MAP = new Map([
7
+ [enums_1.SLIDE_CONTENT_TYPE.COVER, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
8
+ [enums_1.SLIDE_CONTENT_TYPE.STRUCTURED_LIST, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1, slide_layout_enum_1.SLIDE_LAYOUT.TYPE_2]],
9
+ [enums_1.SLIDE_CONTENT_TYPE.TEXT, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1, slide_layout_enum_1.SLIDE_LAYOUT.TYPE_2]],
10
+ [enums_1.SLIDE_CONTENT_TYPE.SECTION_BREAK, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
11
+ [enums_1.SLIDE_CONTENT_TYPE.CONTENTS, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
12
+ [enums_1.SLIDE_CONTENT_TYPE.TEXT_WITH_IMAGE, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
13
+ [enums_1.SLIDE_CONTENT_TYPE.THANK_YOU, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
14
+ [enums_1.SLIDE_CONTENT_TYPE.TABLE, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
15
+ [enums_1.SLIDE_CONTENT_TYPE.CHART, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
16
+ [enums_1.SLIDE_CONTENT_TYPE.TIMELINE, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
17
+ ]);
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./subscription"), exports);
18
18
  __exportStar(require("./writer"), exports);
19
+ __exportStar(require("./presentation"), exports);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculatePresentationAiActionPrice = calculatePresentationAiActionPrice;
4
+ const constants_1 = require("../../constants");
5
+ function calculatePresentationAiActionPrice(pricingRules, selectionText) {
6
+ switch (pricingRules.type) {
7
+ case constants_1.PRESENTATION_AI_ACTION_PRICING_TYPE.PER_CHARACTER:
8
+ const characterCount = selectionText.length;
9
+ const price = characterCount * pricingRules.price;
10
+ return Math.max(1, Math.ceil(price));
11
+ case constants_1.PRESENTATION_AI_ACTION_PRICING_TYPE.FLAT:
12
+ return Math.max(1, Math.ceil(pricingRules.price));
13
+ default:
14
+ throw new Error(`Unknown pricing type`);
15
+ }
16
+ }