@purpleschool/gptbot 0.12.56 → 0.12.58-stage-2

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 (193) hide show
  1. package/api/controllers/http/blog.ts +4 -0
  2. package/api/controllers/http/category.ts +4 -0
  3. package/api/controllers/http/course.ts +12 -0
  4. package/api/controllers/http/page.ts +4 -0
  5. package/api/controllers/http/prompt-category.ts +4 -0
  6. package/api/controllers/http/prompt-topic.ts +4 -0
  7. package/api/controllers/http/prompt.ts +4 -0
  8. package/api/controllers/http/question.ts +4 -0
  9. package/api/controllers/http/team-account.ts +1 -0
  10. package/api/routes.ts +68 -0
  11. package/build/api/controllers/http/blog.js +3 -0
  12. package/build/api/controllers/http/category.js +3 -0
  13. package/build/api/controllers/http/course.js +9 -0
  14. package/build/api/controllers/http/page.js +3 -0
  15. package/build/api/controllers/http/prompt-category.js +3 -0
  16. package/build/api/controllers/http/prompt-topic.js +3 -0
  17. package/build/api/controllers/http/prompt.js +3 -0
  18. package/build/api/controllers/http/question.js +3 -0
  19. package/build/api/controllers/http/team-account.js +1 -0
  20. package/build/api/routes.js +34 -0
  21. package/build/commands/blog/create-post-translation.command.js +23 -0
  22. package/build/commands/blog/create-post.command.js +6 -0
  23. package/build/commands/blog/get-all-post-translations.query.js +14 -0
  24. package/build/commands/blog/index.js +3 -0
  25. package/build/commands/blog/update-post-translation.command.js +23 -0
  26. package/build/commands/blog/update-post.command.js +6 -0
  27. package/build/commands/cabinet/get-user-statistics-by-month.command.js +6 -13
  28. package/build/commands/cabinet/get-user-statistics-overview.command.js +5 -1
  29. package/build/commands/category/create-category-translation.command.js +21 -0
  30. package/build/commands/category/create-category.command.js +4 -0
  31. package/build/commands/category/get-all-category-translations.query.js +14 -0
  32. package/build/commands/category/index.js +3 -0
  33. package/build/commands/category/update-category-translation.command.js +21 -0
  34. package/build/commands/category/update-category.command.js +4 -0
  35. package/build/commands/course/create-course-translation.command.js +22 -0
  36. package/build/commands/course/create-course.command.js +5 -0
  37. package/build/commands/course/create-lesson-translation.command.js +18 -0
  38. package/build/commands/course/create-section-translation.command.js +18 -0
  39. package/build/commands/course/get-all-course-translations.query.js +14 -0
  40. package/build/commands/course/get-all-lesson-translations.query.js +14 -0
  41. package/build/commands/course/get-all-section-translations.query.js +14 -0
  42. package/build/commands/course/index.js +9 -0
  43. package/build/commands/course/update-course-translation.command.js +22 -0
  44. package/build/commands/course/update-lesson-translation.command.js +18 -0
  45. package/build/commands/course/update-section-translation.command.js +18 -0
  46. package/build/commands/page/create-page-translation.command.js +23 -0
  47. package/build/commands/page/create-page.command.js +6 -0
  48. package/build/commands/page/find-page.command.js +10 -2
  49. package/build/commands/page/get-all-page-translations.query.js +14 -0
  50. package/build/commands/page/index.js +3 -0
  51. package/build/commands/page/update-page-translation.command.js +23 -0
  52. package/build/commands/page/update-page.command.js +5 -0
  53. package/build/commands/prompt/create-prompt-translation.command.js +19 -0
  54. package/build/commands/prompt/create-prompt.command.js +2 -0
  55. package/build/commands/prompt/get-all-prompt-translations.query.js +14 -0
  56. package/build/commands/prompt/index.js +3 -0
  57. package/build/commands/prompt/update-prompt-translation.command.js +19 -0
  58. package/build/commands/prompt/update-prompt.command.js +2 -0
  59. package/build/commands/prompt-category/create-prompt-category-translation.command.js +20 -0
  60. package/build/commands/prompt-category/create-prompt-category.command.js +3 -0
  61. package/build/commands/prompt-category/get-all-prompt-category-translations.query.js +14 -0
  62. package/build/commands/prompt-category/index.js +3 -0
  63. package/build/commands/prompt-category/update-prompt-category-translation.command.js +20 -0
  64. package/build/commands/prompt-category/update-prompt-category.command.js +3 -0
  65. package/build/commands/prompt-topic/create-prompt-topic-translation.command.js +22 -0
  66. package/build/commands/prompt-topic/create-prompt-topic.command.js +5 -0
  67. package/build/commands/prompt-topic/get-all-prompt-topic-translations.query.js +14 -0
  68. package/build/commands/prompt-topic/index.js +3 -0
  69. package/build/commands/prompt-topic/update-prompt-topic-translation.command.js +22 -0
  70. package/build/commands/prompt-topic/update-prompt-topic.command.js +5 -0
  71. package/build/commands/question/create-question-translation.command.js +19 -0
  72. package/build/commands/question/create-question.command.js +2 -0
  73. package/build/commands/question/get-all-question-translations.query.js +14 -0
  74. package/build/commands/question/index.js +3 -0
  75. package/build/commands/question/update-question-translation.command.js +19 -0
  76. package/build/commands/question/update-question.command.js +2 -0
  77. package/build/commands/team-account/get-team-account-statistics-by-month.command.js +6 -13
  78. package/build/commands/team-account/get-team-account-statistics-overview.command.js +5 -1
  79. package/build/commands/team-account/index.js +1 -0
  80. package/build/commands/team-account/update-team-account-invite.command.js +17 -0
  81. package/build/commands/ui-notification/create-admin-broadcast-ui-notification.command.js +9 -2
  82. package/build/commands/unregistered-user/patch-locale.command.js +3 -3
  83. package/build/commands/user/get-me.command.js +2 -1
  84. package/build/commands/user/patch-locale.command.js +3 -3
  85. package/build/constants/cabinet/enums/index.js +1 -0
  86. package/build/constants/cabinet/enums/statistics-request-type.enum.js +24 -0
  87. package/build/constants/subscription/enums/index.js +1 -0
  88. package/build/constants/subscription/enums/subscription-balance-field.enum.js +8 -0
  89. package/build/constants/tool/enums/index.js +0 -1
  90. package/build/constants/user/enums/index.js +0 -1
  91. package/build/helpers/image-generation/calculate-gpt-image-2-price-with-margin.helper.js +6 -2
  92. package/build/models/category-translation.schema.js +16 -0
  93. package/build/models/course-translation.schema.js +17 -0
  94. package/build/models/index.js +10 -0
  95. package/build/models/lesson-translation.schema.js +13 -0
  96. package/build/models/page-translation.schema.js +18 -0
  97. package/build/models/post-translation.schema.js +18 -0
  98. package/build/models/prompt-category-translation.schema.js +18 -0
  99. package/build/models/prompt-topic-translation.schema.js +20 -0
  100. package/build/models/prompt-translation.schema.js +14 -0
  101. package/build/models/question-translation.schema.js +14 -0
  102. package/build/models/section-translation.schema.js +13 -0
  103. package/build/models/ui-notification.schema.js +13 -8
  104. package/build/models/user.schema.js +2 -2
  105. package/commands/blog/create-post-translation.command.ts +28 -0
  106. package/commands/blog/create-post.command.ts +6 -0
  107. package/commands/blog/get-all-post-translations.query.ts +16 -0
  108. package/commands/blog/index.ts +3 -0
  109. package/commands/blog/update-post-translation.command.ts +28 -0
  110. package/commands/blog/update-post.command.ts +6 -0
  111. package/commands/cabinet/get-user-statistics-by-month.command.ts +7 -14
  112. package/commands/cabinet/get-user-statistics-overview.command.ts +6 -2
  113. package/commands/category/create-category-translation.command.ts +26 -0
  114. package/commands/category/create-category.command.ts +4 -0
  115. package/commands/category/get-all-category-translations.query.ts +16 -0
  116. package/commands/category/index.ts +3 -0
  117. package/commands/category/update-category-translation.command.ts +26 -0
  118. package/commands/category/update-category.command.ts +4 -0
  119. package/commands/course/create-course-translation.command.ts +27 -0
  120. package/commands/course/create-course.command.ts +5 -0
  121. package/commands/course/create-lesson-translation.command.ts +23 -0
  122. package/commands/course/create-section-translation.command.ts +23 -0
  123. package/commands/course/get-all-course-translations.query.ts +16 -0
  124. package/commands/course/get-all-lesson-translations.query.ts +16 -0
  125. package/commands/course/get-all-section-translations.query.ts +16 -0
  126. package/commands/course/index.ts +9 -0
  127. package/commands/course/update-course-translation.command.ts +27 -0
  128. package/commands/course/update-lesson-translation.command.ts +23 -0
  129. package/commands/course/update-section-translation.command.ts +23 -0
  130. package/commands/page/create-page-translation.command.ts +28 -0
  131. package/commands/page/create-page.command.ts +6 -0
  132. package/commands/page/find-page.command.ts +15 -2
  133. package/commands/page/get-all-page-translations.query.ts +16 -0
  134. package/commands/page/index.ts +3 -0
  135. package/commands/page/update-page-translation.command.ts +28 -0
  136. package/commands/page/update-page.command.ts +5 -0
  137. package/commands/prompt/create-prompt-translation.command.ts +24 -0
  138. package/commands/prompt/create-prompt.command.ts +2 -0
  139. package/commands/prompt/get-all-prompt-translations.query.ts +16 -0
  140. package/commands/prompt/index.ts +3 -0
  141. package/commands/prompt/update-prompt-translation.command.ts +24 -0
  142. package/commands/prompt/update-prompt.command.ts +2 -0
  143. package/commands/prompt-category/create-prompt-category-translation.command.ts +25 -0
  144. package/commands/prompt-category/create-prompt-category.command.ts +3 -0
  145. package/commands/prompt-category/get-all-prompt-category-translations.query.ts +16 -0
  146. package/commands/prompt-category/index.ts +3 -0
  147. package/commands/prompt-category/update-prompt-category-translation.command.ts +25 -0
  148. package/commands/prompt-category/update-prompt-category.command.ts +3 -0
  149. package/commands/prompt-topic/create-prompt-topic-translation.command.ts +27 -0
  150. package/commands/prompt-topic/create-prompt-topic.command.ts +5 -0
  151. package/commands/prompt-topic/get-all-prompt-topic-translations.query.ts +16 -0
  152. package/commands/prompt-topic/index.ts +3 -0
  153. package/commands/prompt-topic/update-prompt-topic-translation.command.ts +27 -0
  154. package/commands/prompt-topic/update-prompt-topic.command.ts +5 -0
  155. package/commands/question/create-question-translation.command.ts +24 -0
  156. package/commands/question/create-question.command.ts +2 -0
  157. package/commands/question/get-all-question-translations.query.ts +16 -0
  158. package/commands/question/index.ts +3 -0
  159. package/commands/question/update-question-translation.command.ts +24 -0
  160. package/commands/question/update-question.command.ts +2 -0
  161. package/commands/team-account/get-team-account-statistics-by-month.command.ts +7 -14
  162. package/commands/team-account/get-team-account-statistics-overview.command.ts +6 -2
  163. package/commands/team-account/index.ts +1 -0
  164. package/commands/team-account/update-team-account-invite.command.ts +22 -0
  165. package/commands/ui-notification/create-admin-broadcast-ui-notification.command.ts +9 -2
  166. package/commands/unregistered-user/patch-locale.command.ts +1 -1
  167. package/commands/user/get-me.command.ts +2 -1
  168. package/commands/user/patch-locale.command.ts +1 -1
  169. package/constants/cabinet/enums/index.ts +1 -0
  170. package/constants/cabinet/enums/statistics-request-type.enum.ts +20 -0
  171. package/constants/subscription/enums/index.ts +1 -0
  172. package/constants/subscription/enums/subscription-balance-field.enum.ts +4 -0
  173. package/constants/tool/enums/index.ts +0 -1
  174. package/constants/user/enums/index.ts +0 -1
  175. package/helpers/image-generation/calculate-gpt-image-2-price-with-margin.helper.ts +11 -9
  176. package/models/category-translation.schema.ts +14 -0
  177. package/models/course-translation.schema.ts +15 -0
  178. package/models/index.ts +10 -0
  179. package/models/lesson-translation.schema.ts +11 -0
  180. package/models/page-translation.schema.ts +16 -0
  181. package/models/post-translation.schema.ts +16 -0
  182. package/models/prompt-category-translation.schema.ts +13 -0
  183. package/models/prompt-topic-translation.schema.ts +15 -0
  184. package/models/prompt-translation.schema.ts +12 -0
  185. package/models/question-translation.schema.ts +12 -0
  186. package/models/section-translation.schema.ts +11 -0
  187. package/models/ui-notification.schema.ts +14 -7
  188. package/models/user.schema.ts +1 -1
  189. package/package.json +2 -1
  190. package/build/constants/tool/enums/job-request-origin.enum.js +0 -8
  191. package/build/constants/user/enums/locale.enum.js +0 -8
  192. package/constants/tool/enums/job-request-origin.enum.ts +0 -4
  193. package/constants/user/enums/locale.enum.ts +0 -4
@@ -1,9 +1,16 @@
1
1
  import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
2
3
 
3
4
  export namespace CreateAdminBroadcastUiNotificationCommand {
4
5
  export const RequestBodySchema = z.object({
5
- title: z.string().trim().min(1),
6
- message: z.string().trim().min(1),
6
+ title: z.object({
7
+ [LOCALE.RU]: z.string().trim().min(1),
8
+ [LOCALE.EN]: z.string().trim().min(1),
9
+ }),
10
+ message: z.object({
11
+ [LOCALE.RU]: z.string().trim().min(1),
12
+ [LOCALE.EN]: z.string().trim().min(1),
13
+ }),
7
14
  onlyRegistered: z.boolean().optional(),
8
15
  });
9
16
 
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { LOCALE } from '../../constants';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
3
 
4
4
  export namespace PatchUnregisteredUserLocaleCommand {
5
5
  export const RequestSchema = z.object({
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
- import { LOCALE, ROLE, SIGNUP_METHOD, USER_STATUS } from '../../constants';
2
+ import { ROLE, SIGNUP_METHOD, USER_STATUS } from '../../constants';
3
3
  import { UserProfileResponseSchema } from '../../models';
4
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
4
5
 
5
6
  export namespace GetMeCommand {
6
7
  export const RequestSchema = z.object({});
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { LOCALE } from '../../constants';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
3
 
4
4
  export namespace PatchUserLocaleCommand {
5
5
  export const RequestSchema = z.object({
@@ -1,2 +1,3 @@
1
1
  export * from './group-by.enum';
2
2
  export * from './statistics-metric-type.enum';
3
+ export * from './statistics-request-type.enum';
@@ -0,0 +1,20 @@
1
+ export enum STATISTICS_REQUEST_TYPE {
2
+ IMAGE = 'IMAGE',
3
+ VIDEO = 'VIDEO',
4
+ PRESENTATION = 'PRESENTATION',
5
+ TEXT = 'TEXT',
6
+ AUDIO = 'AUDIO',
7
+ PARAPHRASE = 'PARAPHRASE',
8
+ WRITER = 'WRITER',
9
+ PRESENTATION_AI_ACTION = 'PRESENTATION_AI_ACTION',
10
+ WRITER_ACTION = 'WRITER_ACTION',
11
+ VIDEO_EDITOR = 'VIDEO_EDITOR',
12
+ MUSIC = 'MUSIC',
13
+ MUSIC_ACTION = 'MUSIC_ACTION',
14
+ INTERIOR_DESIGN = 'INTERIOR_DESIGN',
15
+ MARKETPLACE_CARD = 'MARKETPLACE_CARD',
16
+ SOLVING_EDU_TASK = 'SOLVING_EDU_TASK',
17
+ SPELL_CORRECTOR = 'SPELL_CORRECTOR',
18
+ DIAGRAMS = 'DIAGRAMS',
19
+ HTML_PAGE_BUILDER = 'HTML_PAGE_BUILDER',
20
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './subscription-action.enum';
2
+ export * from './subscription-balance-field.enum';
2
3
  export * from './subscription-feature-type.enum';
3
4
  export * from './subscription-plan.enum';
4
5
  export * from './subscription-status.enum';
@@ -0,0 +1,4 @@
1
+ export enum SUBSCRIPTION_BALANCE_FIELD {
2
+ TOKEN_BALANCE = 'tokenBalance',
3
+ CARRIED_OVER_TOKEN_BALANCE = 'carriedOverTokenBalance',
4
+ }
@@ -1,7 +1,6 @@
1
1
  export * from './tool-content-type.enum';
2
2
  export * from './tool-group.enum';
3
3
  export * from './tool-job-status.enum';
4
- export * from './job-request-origin.enum';
5
4
  export * from './tool-type.enum';
6
5
  export * from './tool-workspace-item-slot.enum';
7
6
  export * from './tool-workspace-status.enum';
@@ -2,4 +2,3 @@ export * from './singup-method.enum';
2
2
  export * from './user-status';
3
3
  export * from './user-sort-by.enum';
4
4
  export * from './sort-order.enum';
5
- export * from './locale.enum';
@@ -5,6 +5,7 @@ export type GptImage2ResolutionTier = '1K' | '2K' | '4K';
5
5
  export const GPT_IMAGE_2_DEFAULT_OUTPUT_PRICE_PER_1M_USD = 30;
6
6
  export const DEFAULT_STAR_PRICE_USD = 0.018;
7
7
  export const DEFAULT_TARGET_MARGIN = 0.6;
8
+ export const GPT_IMAGE_2_INPUT_IMAGE_SURCHARGE_STARS = 2;
8
9
 
9
10
  const GPT_IMAGE_2_OUTPUT_TOKENS_BY_QUALITY_RATIO_AND_TIER: Record<
10
11
  GptImage2Quality,
@@ -51,10 +52,7 @@ export function estimateGptImage2OutputCostUsdFromTokens(params: {
51
52
  return (outputTokens / 1_000_000) * outputPricePer1MUsd;
52
53
  }
53
54
 
54
- export function applyTargetMargin(params: {
55
- cost: number;
56
- targetMargin?: number;
57
- }): number {
55
+ export function applyTargetMargin(params: { cost: number; targetMargin?: number }): number {
58
56
  const { cost, targetMargin = DEFAULT_TARGET_MARGIN } = params;
59
57
  if (targetMargin < 0 || targetMargin >= 1) {
60
58
  throw new Error(`targetMargin must be in [0, 1), got ${targetMargin}`);
@@ -63,10 +61,7 @@ export function applyTargetMargin(params: {
63
61
  return cost / (1 - targetMargin);
64
62
  }
65
63
 
66
- export function convertUsdToStarsCeil(params: {
67
- usd: number;
68
- starPriceUsd?: number;
69
- }): number {
64
+ export function convertUsdToStarsCeil(params: { usd: number; starPriceUsd?: number }): number {
70
65
  const { usd, starPriceUsd = DEFAULT_STAR_PRICE_USD } = params;
71
66
  if (starPriceUsd <= 0) {
72
67
  throw new Error(`starPriceUsd must be > 0, got ${starPriceUsd}`);
@@ -77,6 +72,7 @@ export function convertUsdToStarsCeil(params: {
77
72
 
78
73
  export function calculateGptImage2PriceInStarsFromTokens(params: {
79
74
  outputTokens: number;
75
+ hasAttachedImage?: boolean;
80
76
  outputPricePer1MUsd?: number;
81
77
  targetMargin?: number;
82
78
  starPriceUsd?: number;
@@ -95,11 +91,15 @@ export function calculateGptImage2PriceInStarsFromTokens(params: {
95
91
  targetMargin: params.targetMargin,
96
92
  });
97
93
 
94
+ const sellStars = convertUsdToStarsCeil({ usd: sellUsd, starPriceUsd: params.starPriceUsd });
95
+ const finalSellStars =
96
+ sellStars + (params.hasAttachedImage ? GPT_IMAGE_2_INPUT_IMAGE_SURCHARGE_STARS : 0);
97
+
98
98
  return {
99
99
  costUsd,
100
100
  sellUsd,
101
101
  costStars: convertUsdToStarsCeil({ usd: costUsd, starPriceUsd: params.starPriceUsd }),
102
- sellStars: convertUsdToStarsCeil({ usd: sellUsd, starPriceUsd: params.starPriceUsd }),
102
+ sellStars: finalSellStars,
103
103
  };
104
104
  }
105
105
 
@@ -107,6 +107,7 @@ export function calculateGptImage2PriceInStarsByTier(params: {
107
107
  quality: GptImage2Quality;
108
108
  aspectRatio: GptImage2AspectRatio;
109
109
  resolutionTier: GptImage2ResolutionTier;
110
+ hasAttachedImage?: boolean;
110
111
  outputPricePer1MUsd?: number;
111
112
  targetMargin?: number;
112
113
  starPriceUsd?: number;
@@ -124,6 +125,7 @@ export function calculateGptImage2PriceInStarsByTier(params: {
124
125
  });
125
126
  const priced = calculateGptImage2PriceInStarsFromTokens({
126
127
  outputTokens,
128
+ hasAttachedImage: params.hasAttachedImage,
127
129
  outputPricePer1MUsd: params.outputPricePer1MUsd,
128
130
  targetMargin: params.targetMargin,
129
131
  starPriceUsd: params.starPriceUsd,
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const CategoryTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ categoryId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ name: z.string().min(3).max(16384),
9
+ prompt: z.nullable(z.string().min(3).max(16384)),
10
+ placeholder: z.nullable(z.string()),
11
+ seoName: z.string().min(3).max(16384),
12
+ createdAt: z.date(),
13
+ updatedAt: z.date(),
14
+ });
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const CourseTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ courseId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ title: z.string(),
9
+ subtitle: z.string(),
10
+ prerequisites: z.string(),
11
+ description: z.string(),
12
+ skills: z.array(z.string()),
13
+ createdAt: z.date(),
14
+ updatedAt: z.date(),
15
+ });
package/models/index.ts CHANGED
@@ -5,11 +5,13 @@ export * from './ai-model.schema';
5
5
  export * from './ai-vendor.schema';
6
6
  export * from './canvas.schema';
7
7
  export * from './category.schema';
8
+ export * from './category-translation.schema';
8
9
  export * from './chat-with-messages.schema';
9
10
  export * from './chat.schema';
10
11
  export * from './cloud-payments-receipt.schema';
11
12
  export * from './course-author.schema';
12
13
  export * from './course.schema';
14
+ export * from './course-translation.schema';
13
15
  export * from './date.schema';
14
16
  export * from './feedback.schema';
15
17
  export * from './file.schema';
@@ -17,19 +19,24 @@ export * from './key-value.schema';
17
19
  export * from './form-submission.schema';
18
20
  export * from './icon-variants.schema';
19
21
  export * from './lesson.schema';
22
+ export * from './lesson-translation.schema';
20
23
  export * from './message.schema';
21
24
  export * from './midjourney-job.schema';
22
25
  export * from './order.schema';
23
26
  export * from './page.schema';
27
+ export * from './page-translation.schema';
24
28
  export * from './payment-history-item.schema';
25
29
  export * from './payment.schema';
26
30
  export * from './invoice-for-payment.schema';
27
31
  export * from './post.schema';
32
+ export * from './post-translation.schema';
28
33
  export * from './product.schema';
29
34
  export * from './promocode.schema';
30
35
  export * from './question.schema';
36
+ export * from './question-translation.schema';
31
37
  export * from './referral-bonus.schema';
32
38
  export * from './section.schema';
39
+ export * from './section-translation.schema';
33
40
  export * from './subscription-feature.schema';
34
41
  export * from './team-subscription-feature.schema';
35
42
  export * from './subscription-upgrade-schema';
@@ -48,8 +55,11 @@ export * from './utm.schema';
48
55
  export * from './ui-notification.schema';
49
56
  export * from './review.schema';
50
57
  export * from './prompt-category.schema';
58
+ export * from './prompt-category-translation.schema';
51
59
  export * from './prompt-topic.schema';
60
+ export * from './prompt-topic-translation.schema';
52
61
  export * from './prompt.schema';
62
+ export * from './prompt-translation.schema';
53
63
  export * from './folder.schema';
54
64
  export * from './filters.schema';
55
65
  export * from './users-filter-notification.schema';
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const LessonTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ lessonId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ title: z.string(),
9
+ createdAt: z.date(),
10
+ updatedAt: z.date(),
11
+ });
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const PageTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ pageId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ metaTitle: z.string().min(3).max(16384),
9
+ metaDescription: z.string().min(3).max(16384),
10
+ title: z.string().min(3).max(16384),
11
+ subTitle: z.string().min(3).max(16384),
12
+ seoTextMd: z.string().min(3).max(16384),
13
+ toolTitle: z.string().nullable(),
14
+ createdAt: z.date(),
15
+ updatedAt: z.date(),
16
+ });
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const PostTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ postId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ title: z.string(),
9
+ content: z.string(),
10
+ author: z.string(),
11
+ contentPreview: z.nullable(z.string()),
12
+ metaTitle: z.nullable(z.string()),
13
+ metaDescription: z.nullable(z.string()),
14
+ createdAt: z.date(),
15
+ updatedAt: z.date(),
16
+ });
@@ -0,0 +1,13 @@
1
+ import z from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const PromptCategoryTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ promptCategoryId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ title: z.string(),
9
+ metaTitle: z.string().nullable(),
10
+ metaDescription: z.string().nullable(),
11
+ createdAt: z.date(),
12
+ updatedAt: z.date(),
13
+ });
@@ -0,0 +1,15 @@
1
+ import z from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const PromptTopicTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ promptTopicId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ title: z.string(),
9
+ content: z.string(),
10
+ metaTitle: z.string().nullable(),
11
+ metaDescription: z.string().nullable(),
12
+ seoText: z.string().nullable(),
13
+ createdAt: z.date(),
14
+ updatedAt: z.date(),
15
+ });
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const PromptTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ promptId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ title: z.string().nullable(),
9
+ content: z.string(),
10
+ createdAt: z.date(),
11
+ updatedAt: z.date(),
12
+ });
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const QuestionTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ questionId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ question: z.string().min(3).max(16384),
9
+ answer: z.string().min(3).max(16384),
10
+ createdAt: z.date(),
11
+ updatedAt: z.date(),
12
+ });
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
3
+
4
+ export const SectionTranslationSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ sectionId: z.string().uuid(),
7
+ locale: z.nativeEnum(LOCALE),
8
+ title: z.string(),
9
+ createdAt: z.date(),
10
+ updatedAt: z.date(),
11
+ });
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
2
3
  import {
3
4
  UI_NOTIFICATION_CONDITION_OF_EXECUTION,
4
5
  UI_NOTIFICATION_STATUS,
@@ -18,6 +19,12 @@ export const UiNotificationBaseSchema = z.object({
18
19
  });
19
20
  export type UiNotificationBase = z.infer<typeof UiNotificationBaseSchema>;
20
21
 
22
+ export const LocalizedUiNotificationTextSchema = z.object({
23
+ [LOCALE.RU]: z.string(),
24
+ [LOCALE.EN]: z.string(),
25
+ });
26
+ export type LocalizedUiNotificationText = z.infer<typeof LocalizedUiNotificationTextSchema>;
27
+
21
28
  export const ConnectTelegramBonusUiContentSchema = z.object({
22
29
  promocode: z.string(),
23
30
  bonusPercent: z.number(),
@@ -32,14 +39,14 @@ export const SubscriptionPastDueUiContentSchema = z.object({
32
39
  export type SubscriptionPastDueUiContent = z.infer<typeof SubscriptionPastDueUiContentSchema>;
33
40
 
34
41
  export const FraudDetectedUiContentSchema = z.object({
35
- message: z.string(),
42
+ message: LocalizedUiNotificationTextSchema,
36
43
  endDate: z.string().datetime(),
37
44
  });
38
45
  export type FraudDetectedUiContent = z.infer<typeof FraudDetectedUiContentSchema>;
39
46
 
40
47
  export const PromocodeOfferUiContentSchema = z.object({
41
- title: z.string(),
42
- message: z.string(),
48
+ title: LocalizedUiNotificationTextSchema,
49
+ message: LocalizedUiNotificationTextSchema,
43
50
  promocode: z.string(),
44
51
  bonusPercent: z.number(),
45
52
  validTill: z.string().datetime().nullable(),
@@ -47,14 +54,14 @@ export const PromocodeOfferUiContentSchema = z.object({
47
54
  export type PromocodeOfferUiContent = z.infer<typeof PromocodeOfferUiContentSchema>;
48
55
 
49
56
  export const GenericUiContentSchema = z.object({
50
- title: z.string(),
51
- message: z.string(),
57
+ title: LocalizedUiNotificationTextSchema,
58
+ message: LocalizedUiNotificationTextSchema,
52
59
  });
53
60
  export type GenericUiContentType = z.infer<typeof GenericUiContentSchema>;
54
61
 
55
62
  export const EmailNotVerifiedUiContentSchema = z.object({
56
- title: z.string(),
57
- message: z.string(),
63
+ title: LocalizedUiNotificationTextSchema,
64
+ message: LocalizedUiNotificationTextSchema,
58
65
  });
59
66
  export type EmailNotVerifiedUiContent = z.infer<typeof EmailNotVerifiedUiContentSchema>;
60
67
 
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { UserToSubscriptionSchema } from './user-to-subscription.schema';
3
3
  import { UserToProductSchema } from './user-to-product.schema';
4
- import { LOCALE } from '../constants';
4
+ import { LOCALE } from '@purpleschool/rugpt-lib-common';
5
5
 
6
6
  export const UserSchema = z.object({
7
7
  uuid: z.string().uuid(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpleschool/gptbot",
3
- "version": "0.12.56",
3
+ "version": "0.12.58-stage-2",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -12,6 +12,7 @@
12
12
  "author": "",
13
13
  "license": "ISC",
14
14
  "dependencies": {
15
+ "@purpleschool/rugpt-lib-common": "^0.0.21",
15
16
  "zod": "^3.25.67"
16
17
  }
17
18
  }
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JOB_REQUEST_ORIGIN = void 0;
4
- var JOB_REQUEST_ORIGIN;
5
- (function (JOB_REQUEST_ORIGIN) {
6
- JOB_REQUEST_ORIGIN["API"] = "api";
7
- JOB_REQUEST_ORIGIN["B2B"] = "b2b";
8
- })(JOB_REQUEST_ORIGIN || (exports.JOB_REQUEST_ORIGIN = JOB_REQUEST_ORIGIN = {}));
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LOCALE = void 0;
4
- var LOCALE;
5
- (function (LOCALE) {
6
- LOCALE["RU"] = "ru";
7
- LOCALE["EN"] = "en";
8
- })(LOCALE || (exports.LOCALE = LOCALE = {}));
@@ -1,4 +0,0 @@
1
- export enum JOB_REQUEST_ORIGIN {
2
- API = 'api',
3
- B2B = 'b2b',
4
- }
@@ -1,4 +0,0 @@
1
- export enum LOCALE {
2
- RU = 'ru',
3
- EN = 'en',
4
- }