@escapenavigator/types 2.0.13 → 2.0.15

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 (150) hide show
  1. package/dist/city-attraction/attraction-content-languages.d.ts +5 -0
  2. package/dist/city-attraction/attraction-content-languages.js +14 -0
  3. package/dist/city-attraction/attraction-content-prompt-version.d.ts +1 -0
  4. package/dist/city-attraction/attraction-content-prompt-version.js +5 -0
  5. package/dist/city-attraction/attraction-content.d.ts +24 -0
  6. package/dist/city-attraction/attraction-route-meta.d.ts +21 -0
  7. package/dist/city-attraction/attraction-triage.d.ts +29 -0
  8. package/dist/city-attraction/attraction-triage.js +41 -0
  9. package/dist/city-attraction/city-attraction-artifact.ro.d.ts +19 -0
  10. package/dist/city-attraction/city-attraction-artifact.ro.js +2 -0
  11. package/dist/city-attraction/city-attraction-locale.ro.d.ts +15 -0
  12. package/dist/city-attraction/city-attraction-locale.ro.js +2 -0
  13. package/dist/city-attraction/city-attraction.ro.d.ts +49 -0
  14. package/dist/city-attraction/city-attraction.ro.js +2 -0
  15. package/dist/city-attraction/create-city-attraction.dto.d.ts +40 -0
  16. package/dist/city-attraction/create-city-attraction.dto.js +215 -0
  17. package/dist/city-attraction/enum/attraction-artifact-kind.enum.d.ts +13 -0
  18. package/dist/city-attraction/enum/attraction-artifact-kind.enum.js +17 -0
  19. package/dist/city-attraction/enum/attraction-category.enum.d.ts +21 -0
  20. package/dist/city-attraction/enum/attraction-category.enum.js +25 -0
  21. package/dist/city-attraction/enum/attraction-fame.enum.d.ts +10 -0
  22. package/dist/city-attraction/enum/attraction-fame.enum.js +14 -0
  23. package/dist/city-attraction/enum/attraction-fun-fact-kind.enum.d.ts +4 -0
  24. package/dist/city-attraction/enum/attraction-fun-fact-kind.enum.js +8 -0
  25. package/dist/city-attraction/enum/attraction-indoor-outdoor.enum.d.ts +5 -0
  26. package/dist/city-attraction/enum/attraction-indoor-outdoor.enum.js +9 -0
  27. package/dist/city-attraction/enum/attraction-locale-status.enum.d.ts +11 -0
  28. package/dist/city-attraction/enum/attraction-locale-status.enum.js +15 -0
  29. package/dist/city-attraction/enum/attraction-review-status.enum.d.ts +10 -0
  30. package/dist/city-attraction/enum/attraction-review-status.enum.js +14 -0
  31. package/dist/city-attraction/enum/attraction-route-role.enum.d.ts +11 -0
  32. package/dist/city-attraction/enum/attraction-route-role.enum.js +15 -0
  33. package/dist/city-attraction/enum/attraction-source.enum.d.ts +12 -0
  34. package/dist/city-attraction/enum/attraction-source.enum.js +16 -0
  35. package/dist/city-attraction/moderate-city-attraction.dto.d.ts +5 -0
  36. package/dist/{partners-portal/admin/admin-moderate-portal-story.dto.js → city-attraction/moderate-city-attraction.dto.js} +7 -13
  37. package/dist/city-attraction/update-city-attraction.dto.d.ts +5 -0
  38. package/dist/city-attraction/update-city-attraction.dto.js +8 -0
  39. package/dist/city-attraction/upsert-city-attraction-artifact.dto.d.ts +19 -0
  40. package/dist/city-attraction/upsert-city-attraction-artifact.dto.js +104 -0
  41. package/dist/city-attraction/upsert-city-attraction-locale.dto.d.ts +14 -0
  42. package/dist/city-attraction/upsert-city-attraction-locale.dto.js +62 -0
  43. package/dist/city-person/city-person-attraction-link.dto.d.ts +12 -0
  44. package/dist/city-person/city-person-attraction-link.dto.js +61 -0
  45. package/dist/city-person/city-person-attraction-link.ro.d.ts +15 -0
  46. package/dist/city-person/city-person-attraction-link.ro.js +2 -0
  47. package/dist/city-person/city-person-locale.ro.d.ts +15 -0
  48. package/dist/city-person/city-person-locale.ro.js +2 -0
  49. package/dist/city-person/city-person.ro.d.ts +31 -0
  50. package/dist/city-person/city-person.ro.js +2 -0
  51. package/dist/city-person/create-city-person.dto.d.ts +24 -0
  52. package/dist/city-person/create-city-person.dto.js +128 -0
  53. package/dist/city-person/enum/person-attraction-role.enum.d.ts +8 -0
  54. package/dist/city-person/enum/person-attraction-role.enum.js +12 -0
  55. package/dist/city-person/enum/person-domain.enum.d.ts +5 -0
  56. package/dist/city-person/enum/person-domain.enum.js +9 -0
  57. package/dist/city-person/enum/person-fact-kind.enum.d.ts +7 -0
  58. package/dist/city-person/enum/person-fact-kind.enum.js +11 -0
  59. package/dist/city-person/enum/person-locale-status.enum.d.ts +8 -0
  60. package/dist/city-person/enum/person-locale-status.enum.js +12 -0
  61. package/dist/city-person/enum/person-occupation.enum.d.ts +21 -0
  62. package/dist/city-person/enum/person-occupation.enum.js +25 -0
  63. package/dist/city-person/enum/person-source.enum.d.ts +7 -0
  64. package/dist/city-person/enum/person-source.enum.js +11 -0
  65. package/dist/city-person/person-attraction-facts.d.ts +3 -0
  66. package/dist/city-person/person-attraction-facts.js +2 -0
  67. package/dist/city-person/person-content-languages.d.ts +5 -0
  68. package/dist/city-person/person-content-languages.js +14 -0
  69. package/dist/city-person/person-content-prompt-version.d.ts +2 -0
  70. package/dist/city-person/person-content-prompt-version.js +5 -0
  71. package/dist/city-person/person-locale-fact.d.ts +7 -0
  72. package/dist/city-person/person-locale-fact.js +2 -0
  73. package/dist/city-person/update-city-person.dto.d.ts +5 -0
  74. package/dist/city-person/update-city-person.dto.js +8 -0
  75. package/dist/city-person/upsert-city-person-locale.dto.d.ts +21 -0
  76. package/dist/{partners-portal/create-portal-story.dto.js → city-person/upsert-city-person-locale.dto.js} +35 -32
  77. package/dist/city-person/wikidata-autolink.d.ts +23 -0
  78. package/dist/city-person/wikidata-autolink.js +23 -0
  79. package/dist/city-quest/city-quest-content.d.ts +19 -5
  80. package/dist/city-quest/city-quest-locale-content.d.ts +35 -0
  81. package/dist/city-quest/city-quest-locale-content.js +2 -0
  82. package/dist/city-quest/city-quest-locale.ro.d.ts +12 -0
  83. package/dist/city-quest/city-quest-locale.ro.js +2 -0
  84. package/dist/city-quest/city-quest.ro.d.ts +11 -4
  85. package/dist/city-quest/city-quest.ro.js +17 -1
  86. package/dist/city-quest/enum/city-quest-locale-status.enum.d.ts +11 -0
  87. package/dist/city-quest/enum/city-quest-locale-status.enum.js +15 -0
  88. package/dist/city-quest/enum/city-quest-status.enum.d.ts +10 -5
  89. package/dist/city-quest/enum/city-quest-status.enum.js +9 -4
  90. package/dist/city-quest/quest-content-languages.d.ts +5 -0
  91. package/dist/city-quest/quest-content-languages.js +14 -0
  92. package/dist/city-quest/update-city-quest-content.dto.d.ts +5 -0
  93. package/dist/city-quest/update-city-quest-content.dto.js +23 -0
  94. package/dist/city-quest/update-city-quest-stop.dto.d.ts +9 -0
  95. package/dist/city-quest/update-city-quest-stop.dto.js +45 -0
  96. package/dist/city-quest/update-city-quest.dto.d.ts +6 -1
  97. package/dist/city-quest/update-city-quest.dto.js +12 -0
  98. package/dist/city-quest/upsert-city-quest-locale.dto.d.ts +10 -0
  99. package/dist/{partners-portal/update-portal-story.dto.js → city-quest/upsert-city-quest-locale.dto.js} +14 -17
  100. package/dist/google-places/apply-google-places-match.dto.d.ts +4 -0
  101. package/dist/google-places/apply-google-places-match.dto.js +25 -0
  102. package/dist/google-places/google-places-country-stats.ro.d.ts +10 -0
  103. package/dist/google-places/google-places-country-stats.ro.js +45 -0
  104. package/dist/google-places/google-places-match-preview.ro.d.ts +19 -0
  105. package/dist/google-places/google-places-match-preview.ro.js +67 -0
  106. package/dist/google-places/google-places.ro.d.ts +7 -0
  107. package/dist/google-places/google-places.ro.js +25 -1
  108. package/dist/google-places/update-google-places.dto.d.ts +2 -2
  109. package/dist/google-places/update-google-places.dto.js +2 -0
  110. package/dist/openapi/city-player/city-player.ro.d.ts +27 -0
  111. package/dist/openapi/city-player/free-route.d.ts +35 -0
  112. package/dist/openapi/city-player/free-route.js +2 -0
  113. package/dist/openapi/city-quest/play-state.ro.d.ts +15 -0
  114. package/dist/partners-portal/admin/admin-portal-partner.ro.d.ts +3 -3
  115. package/dist/partners-portal/create-partner-attraction.dto.d.ts +33 -0
  116. package/dist/partners-portal/create-partner-attraction.dto.js +173 -0
  117. package/dist/partners-portal/partner-city-quest.dto.d.ts +31 -0
  118. package/dist/partners-portal/partner-city-quest.dto.js +160 -0
  119. package/dist/partners-portal/partner-city-quest.ro.d.ts +11 -0
  120. package/dist/partners-portal/partner-city-quest.ro.js +2 -0
  121. package/dist/partners-portal/portal-stats.ro.d.ts +6 -6
  122. package/dist/partners-portal/update-partner-attraction.dto.d.ts +11 -0
  123. package/dist/partners-portal/update-partner-attraction.dto.js +35 -0
  124. package/dist/shared/ai-cover.d.ts +8 -0
  125. package/dist/shared/ai-cover.js +26 -0
  126. package/dist/shared/city-pipeline.d.ts +40 -0
  127. package/dist/shared/city-pipeline.js +52 -0
  128. package/dist/shared/city-research.d.ts +46 -0
  129. package/dist/shared/city-research.js +49 -0
  130. package/dist/shared/content-batch.d.ts +27 -0
  131. package/dist/shared/content-batch.js +41 -0
  132. package/dist/shared/wikidata-enrichment.d.ts +24 -0
  133. package/dist/shared/wikidata-enrichment.js +31 -0
  134. package/dist/shared/wikidata-import.d.ts +33 -0
  135. package/dist/shared/wikidata-import.js +53 -0
  136. package/dist/tsconfig.build.tsbuildinfo +1 -1
  137. package/dist/upload/enum/image-type.enum.d.ts +3 -1
  138. package/dist/upload/enum/image-type.enum.js +2 -0
  139. package/dist/user/crud/create-user.dto.js +1 -0
  140. package/dist/user/crud/update-user.dto.js +1 -0
  141. package/package.json +2 -2
  142. package/dist/partners-portal/admin/admin-moderate-portal-story.dto.d.ts +0 -8
  143. package/dist/partners-portal/create-portal-story.dto.d.ts +0 -18
  144. package/dist/partners-portal/enum/portal-story-status.enum.d.ts +0 -12
  145. package/dist/partners-portal/enum/portal-story-status.enum.js +0 -16
  146. package/dist/partners-portal/portal-story-step.d.ts +0 -19
  147. package/dist/partners-portal/portal-story.ro.d.ts +0 -19
  148. package/dist/partners-portal/update-portal-story.dto.d.ts +0 -9
  149. /package/dist/{partners-portal/portal-story-step.js → city-attraction/attraction-content.js} +0 -0
  150. /package/dist/{partners-portal/portal-story.ro.js → city-attraction/attraction-route-meta.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { CityQuestSessionStatusEnum } from '../../city-quest/enum/city-quest-session-status.enum';
2
2
  import { CountriesEnum } from '../../shared/enum/countries.enum';
3
3
  import { Languages } from '../../shared/enum/languages.enum';
4
+ import { PlayKeyMilestoneRO } from '../city-quest/play-state.ro';
4
5
  export type CityPlayerRO = {
5
6
  id: number;
6
7
  email: string;
@@ -55,7 +56,12 @@ export type CityPlayerCatalogGameRO = {
55
56
  bookingUrl?: string | null;
56
57
  };
57
58
  export type CityPlayerCatalogCityRO = {
59
+ /** ID города (CityEntity). */
60
+ cityId: number;
61
+ /** Название города (CityEntity.title). */
58
62
  city: string;
63
+ /** Slug города (CityEntity.slug). */
64
+ slug: string;
59
65
  country?: CountriesEnum | null;
60
66
  /** Фото города из `CityEntity.photo`. */
61
67
  photoUrl?: string | null;
@@ -69,3 +75,24 @@ export type CityPlayerCatalogCountryRO = {
69
75
  export type CityPlayerCatalogRO = {
70
76
  cities: CityPlayerCatalogCityRO[];
71
77
  };
78
+ /**
79
+ * Детальное превью квеста в каталоге (до покупки). Показывает схему
80
+ * маршрута по ключевым вехам и блок «что внутри».
81
+ */
82
+ export type CityPlayerQuestPreviewRO = {
83
+ cityQuestId: number;
84
+ key: string;
85
+ title: string;
86
+ tagline?: string | null;
87
+ city?: string | null;
88
+ coverUrl?: string | null;
89
+ voicedBy?: string | null;
90
+ durationMinutes?: number | null;
91
+ distanceKm?: number | null;
92
+ pointsCount: number;
93
+ availableLanguages: Languages[];
94
+ /** Ссылка на booking-страницу привязанного questroom (покупка). */
95
+ bookingUrl?: string | null;
96
+ /** Ключевые вехи маршрута для схемы (фото + название + координаты). */
97
+ keyMilestones: PlayKeyMilestoneRO[];
98
+ };
@@ -0,0 +1,35 @@
1
+ import { AttractionCategoryEnum } from '../../city-attraction/enum/attraction-category.enum';
2
+ import { PersonAttractionRoleEnum } from '../../city-person/enum/person-attraction-role.enum';
3
+ /** Остановка свободного маршрута. */
4
+ export type CityPlayerFreeRouteStopRO = {
5
+ attractionId: number;
6
+ title: string;
7
+ knownFor: string | null;
8
+ category: AttractionCategoryEnum;
9
+ lat: number;
10
+ lng: number;
11
+ photoUrl: string | null;
12
+ /** Рекомендуемое время на точке, минут. */
13
+ visitMinutes: number;
14
+ /** Пешком от предыдущей точки (0 для первой). */
15
+ walkMinutesFromPrev: number;
16
+ distanceMetersFromPrev: number;
17
+ /** Роль связи с личностью, если маршрут построен по личности. */
18
+ personRole: PersonAttractionRoleEnum | null;
19
+ /** Есть ли AI-история места (guide talk) на запрошенном языке. */
20
+ hasStory: boolean;
21
+ };
22
+ /**
23
+ * Свободный маршрут: подобранные точки города в пешеходном порядке.
24
+ * Строится на лету — ничего не сохраняем, пока игрок не начнёт.
25
+ */
26
+ export type CityPlayerFreeRouteRO = {
27
+ cityId: number;
28
+ city: string;
29
+ personId: number | null;
30
+ personName: string | null;
31
+ stops: CityPlayerFreeRouteStopRO[];
32
+ totalDistanceMeters: number;
33
+ /** Прогулка + время на точках, минут. */
34
+ totalDurationMinutes: number;
35
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -82,6 +82,19 @@ export type PlayRoutePointRO = {
82
82
  /** Фото-маркер точки — только для solved/current. */
83
83
  photoUrl?: string | null;
84
84
  };
85
+ /**
86
+ * Ключевая веха маршрута для превью квеста (стартовый экран / детали в
87
+ * каталоге). В отличие от `PlayRoutePointRO`, спойлеров нет: показываем
88
+ * только помеченные в админке точки с названием и фото.
89
+ */
90
+ export type PlayKeyMilestoneRO = {
91
+ id: string;
92
+ order: number;
93
+ title: string;
94
+ lat: number;
95
+ lng: number;
96
+ photoUrl?: string | null;
97
+ };
85
98
  export type PlayFinaleRO = {
86
99
  puzzle?: PlayChallengeRO;
87
100
  choicePrompt?: string;
@@ -174,6 +187,8 @@ export type PlayAccessInfoRO = {
174
187
  voicedBy?: string;
175
188
  /** Кол-во точек маршрута — для схемы маршрута на старте. */
176
189
  pointsCount?: number;
190
+ /** Ключевые вехи для схемы маршрута на стартовом экране. */
191
+ keyMilestones?: PlayKeyMilestoneRO[];
177
192
  availableLanguages?: Languages[];
178
193
  /** Уже начатые командные сессии этого доступа. */
179
194
  sessions?: Array<{
@@ -1,9 +1,9 @@
1
1
  import { PortalPartnerRO } from '../portal-partner.ro';
2
2
  /** Partner row in the admin panel, with aggregates. */
3
3
  export type AdminPortalPartnerRO = PortalPartnerRO & {
4
- /** Authors: stories count by status. */
5
- storiesCount?: number;
6
- storiesInReviewCount?: number;
4
+ /** Authors: city quests created by this partner. */
5
+ questsCount?: number;
6
+ questsInReviewCount?: number;
7
7
  /** Venues: pending material orders. */
8
8
  pendingMaterialOrdersCount?: number;
9
9
  qrScansCount?: number;
@@ -0,0 +1,33 @@
1
+ import { AttractionCategoryEnum } from '../city-attraction/enum/attraction-category.enum';
2
+ import { AttractionFameEnum } from '../city-attraction/enum/attraction-fame.enum';
3
+ import { AttractionIndoorOutdoorEnum } from '../city-attraction/enum/attraction-indoor-outdoor.enum';
4
+ import { AttractionRouteMeta } from '../city-attraction/attraction-route-meta';
5
+ import { AttractionRouteRoleEnum } from '../city-attraction/enum/attraction-route-role.enum';
6
+ /**
7
+ * Partner-facing create payload. cityId/country come from the story;
8
+ * reviewStatus is forced to needReview server-side.
9
+ */
10
+ export declare class CreatePartnerAttractionDto {
11
+ title: string;
12
+ description?: string | null;
13
+ knownFor?: string | null;
14
+ knownForRu?: string | null;
15
+ category: AttractionCategoryEnum;
16
+ fame: AttractionFameEnum;
17
+ cityId: number;
18
+ address?: string | null;
19
+ district?: string | null;
20
+ lat: number;
21
+ lng: number;
22
+ photos?: string[];
23
+ coverPhotoIndex?: number | null;
24
+ tags?: string[];
25
+ mustSeeScore?: number | null;
26
+ wowScore?: number | null;
27
+ touristCrowdScore?: number | null;
28
+ localExperienceScore?: number | null;
29
+ routeRole?: AttractionRouteRoleEnum | null;
30
+ routePriority?: number | null;
31
+ indoorOutdoor?: AttractionIndoorOutdoorEnum | null;
32
+ routeMeta?: AttractionRouteMeta | null;
33
+ }
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreatePartnerAttractionDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const attraction_category_enum_1 = require("../city-attraction/enum/attraction-category.enum");
16
+ const attraction_fame_enum_1 = require("../city-attraction/enum/attraction-fame.enum");
17
+ const attraction_indoor_outdoor_enum_1 = require("../city-attraction/enum/attraction-indoor-outdoor.enum");
18
+ const attraction_route_role_enum_1 = require("../city-attraction/enum/attraction-route-role.enum");
19
+ const is_not_blank_1 = require("../shared/is-not-blank");
20
+ /**
21
+ * Partner-facing create payload. cityId/country come from the story;
22
+ * reviewStatus is forced to needReview server-side.
23
+ */
24
+ class CreatePartnerAttractionDto {
25
+ }
26
+ exports.CreatePartnerAttractionDto = CreatePartnerAttractionDto;
27
+ __decorate([
28
+ (0, is_not_blank_1.IsNotBlank)(),
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", String)
31
+ ], CreatePartnerAttractionDto.prototype, "title", void 0);
32
+ __decorate([
33
+ (0, class_validator_1.IsOptional)(),
34
+ (0, class_validator_1.IsString)(),
35
+ (0, class_transformer_1.Expose)(),
36
+ __metadata("design:type", String)
37
+ ], CreatePartnerAttractionDto.prototype, "description", void 0);
38
+ __decorate([
39
+ (0, class_validator_1.IsOptional)(),
40
+ (0, class_validator_1.IsString)(),
41
+ (0, class_transformer_1.Expose)(),
42
+ __metadata("design:type", String)
43
+ ], CreatePartnerAttractionDto.prototype, "knownFor", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsString)(),
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", String)
49
+ ], CreatePartnerAttractionDto.prototype, "knownForRu", void 0);
50
+ __decorate([
51
+ (0, class_validator_1.IsEnum)(attraction_category_enum_1.AttractionCategoryEnum),
52
+ (0, class_transformer_1.Expose)(),
53
+ __metadata("design:type", String)
54
+ ], CreatePartnerAttractionDto.prototype, "category", void 0);
55
+ __decorate([
56
+ (0, class_validator_1.IsEnum)(attraction_fame_enum_1.AttractionFameEnum),
57
+ (0, class_transformer_1.Expose)(),
58
+ __metadata("design:type", String)
59
+ ], CreatePartnerAttractionDto.prototype, "fame", void 0);
60
+ __decorate([
61
+ (0, class_transformer_1.Type)(() => Number),
62
+ (0, class_validator_1.IsInt)(),
63
+ (0, class_transformer_1.Expose)(),
64
+ __metadata("design:type", Number)
65
+ ], CreatePartnerAttractionDto.prototype, "cityId", void 0);
66
+ __decorate([
67
+ (0, class_validator_1.IsOptional)(),
68
+ (0, class_validator_1.IsString)(),
69
+ (0, class_transformer_1.Expose)(),
70
+ __metadata("design:type", String)
71
+ ], CreatePartnerAttractionDto.prototype, "address", void 0);
72
+ __decorate([
73
+ (0, class_validator_1.IsOptional)(),
74
+ (0, class_validator_1.IsString)(),
75
+ (0, class_transformer_1.Expose)(),
76
+ __metadata("design:type", String)
77
+ ], CreatePartnerAttractionDto.prototype, "district", void 0);
78
+ __decorate([
79
+ (0, class_transformer_1.Type)(() => Number),
80
+ (0, class_validator_1.IsNumber)(),
81
+ (0, class_transformer_1.Expose)(),
82
+ __metadata("design:type", Number)
83
+ ], CreatePartnerAttractionDto.prototype, "lat", void 0);
84
+ __decorate([
85
+ (0, class_transformer_1.Type)(() => Number),
86
+ (0, class_validator_1.IsNumber)(),
87
+ (0, class_transformer_1.Expose)(),
88
+ __metadata("design:type", Number)
89
+ ], CreatePartnerAttractionDto.prototype, "lng", void 0);
90
+ __decorate([
91
+ (0, class_validator_1.IsOptional)(),
92
+ (0, class_validator_1.IsArray)(),
93
+ (0, class_validator_1.IsString)({ each: true }),
94
+ (0, class_transformer_1.Expose)(),
95
+ __metadata("design:type", Array)
96
+ ], CreatePartnerAttractionDto.prototype, "photos", void 0);
97
+ __decorate([
98
+ (0, class_validator_1.IsOptional)(),
99
+ (0, class_transformer_1.Type)(() => Number),
100
+ (0, class_validator_1.IsInt)(),
101
+ (0, class_validator_1.Min)(0),
102
+ (0, class_transformer_1.Expose)(),
103
+ __metadata("design:type", Number)
104
+ ], CreatePartnerAttractionDto.prototype, "coverPhotoIndex", void 0);
105
+ __decorate([
106
+ (0, class_validator_1.IsOptional)(),
107
+ (0, class_validator_1.IsArray)(),
108
+ (0, class_validator_1.IsString)({ each: true }),
109
+ (0, class_transformer_1.Expose)(),
110
+ __metadata("design:type", Array)
111
+ ], CreatePartnerAttractionDto.prototype, "tags", void 0);
112
+ __decorate([
113
+ (0, class_validator_1.IsOptional)(),
114
+ (0, class_transformer_1.Type)(() => Number),
115
+ (0, class_validator_1.IsInt)(),
116
+ (0, class_validator_1.Min)(1),
117
+ (0, class_validator_1.Max)(10),
118
+ (0, class_transformer_1.Expose)(),
119
+ __metadata("design:type", Number)
120
+ ], CreatePartnerAttractionDto.prototype, "mustSeeScore", void 0);
121
+ __decorate([
122
+ (0, class_validator_1.IsOptional)(),
123
+ (0, class_transformer_1.Type)(() => Number),
124
+ (0, class_validator_1.IsInt)(),
125
+ (0, class_validator_1.Min)(1),
126
+ (0, class_validator_1.Max)(10),
127
+ (0, class_transformer_1.Expose)(),
128
+ __metadata("design:type", Number)
129
+ ], CreatePartnerAttractionDto.prototype, "wowScore", void 0);
130
+ __decorate([
131
+ (0, class_validator_1.IsOptional)(),
132
+ (0, class_transformer_1.Type)(() => Number),
133
+ (0, class_validator_1.IsInt)(),
134
+ (0, class_validator_1.Min)(1),
135
+ (0, class_validator_1.Max)(10),
136
+ (0, class_transformer_1.Expose)(),
137
+ __metadata("design:type", Number)
138
+ ], CreatePartnerAttractionDto.prototype, "touristCrowdScore", void 0);
139
+ __decorate([
140
+ (0, class_validator_1.IsOptional)(),
141
+ (0, class_transformer_1.Type)(() => Number),
142
+ (0, class_validator_1.IsInt)(),
143
+ (0, class_validator_1.Min)(1),
144
+ (0, class_validator_1.Max)(10),
145
+ (0, class_transformer_1.Expose)(),
146
+ __metadata("design:type", Number)
147
+ ], CreatePartnerAttractionDto.prototype, "localExperienceScore", void 0);
148
+ __decorate([
149
+ (0, class_validator_1.IsOptional)(),
150
+ (0, class_validator_1.IsEnum)(attraction_route_role_enum_1.AttractionRouteRoleEnum),
151
+ (0, class_transformer_1.Expose)(),
152
+ __metadata("design:type", String)
153
+ ], CreatePartnerAttractionDto.prototype, "routeRole", void 0);
154
+ __decorate([
155
+ (0, class_validator_1.IsOptional)(),
156
+ (0, class_transformer_1.Type)(() => Number),
157
+ (0, class_validator_1.IsInt)(),
158
+ (0, class_validator_1.Min)(1),
159
+ (0, class_validator_1.Max)(100),
160
+ (0, class_transformer_1.Expose)(),
161
+ __metadata("design:type", Number)
162
+ ], CreatePartnerAttractionDto.prototype, "routePriority", void 0);
163
+ __decorate([
164
+ (0, class_validator_1.IsOptional)(),
165
+ (0, class_validator_1.IsEnum)(attraction_indoor_outdoor_enum_1.AttractionIndoorOutdoorEnum),
166
+ (0, class_transformer_1.Expose)(),
167
+ __metadata("design:type", String)
168
+ ], CreatePartnerAttractionDto.prototype, "indoorOutdoor", void 0);
169
+ __decorate([
170
+ (0, class_validator_1.IsOptional)(),
171
+ (0, class_transformer_1.Expose)(),
172
+ __metadata("design:type", Object)
173
+ ], CreatePartnerAttractionDto.prototype, "routeMeta", void 0);
@@ -0,0 +1,31 @@
1
+ import { Languages } from '../shared/enum/languages.enum';
2
+ /** Partner-friendly stop shape; mapped server-side into CityQuestStop. */
3
+ export declare class PartnerCityQuestStopDto {
4
+ id?: string;
5
+ order: number;
6
+ attractionId: number;
7
+ /** In-game / chapter label (prefilled from attraction). */
8
+ title: string;
9
+ storyBefore?: string;
10
+ storyAfter?: string;
11
+ fromPrevious?: string;
12
+ walkMicroTask?: string;
13
+ arrivalInstruction?: string;
14
+ riddle?: string;
15
+ answer?: string;
16
+ hint?: string;
17
+ }
18
+ export declare class CreatePartnerCityQuestDto {
19
+ cityId: number;
20
+ title: string;
21
+ tagline?: string | null;
22
+ language: Languages;
23
+ stops?: PartnerCityQuestStopDto[];
24
+ }
25
+ export declare class UpdatePartnerCityQuestDto {
26
+ title?: string;
27
+ tagline?: string | null;
28
+ language?: Languages;
29
+ cityId?: number;
30
+ stops?: PartnerCityQuestStopDto[];
31
+ }
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdatePartnerCityQuestDto = exports.CreatePartnerCityQuestDto = exports.PartnerCityQuestStopDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const languages_enum_1 = require("../shared/enum/languages.enum");
16
+ const is_not_blank_1 = require("../shared/is-not-blank");
17
+ /** Partner-friendly stop shape; mapped server-side into CityQuestStop. */
18
+ class PartnerCityQuestStopDto {
19
+ }
20
+ exports.PartnerCityQuestStopDto = PartnerCityQuestStopDto;
21
+ __decorate([
22
+ (0, class_validator_1.IsOptional)(),
23
+ (0, class_validator_1.IsString)(),
24
+ (0, class_transformer_1.Expose)(),
25
+ __metadata("design:type", String)
26
+ ], PartnerCityQuestStopDto.prototype, "id", void 0);
27
+ __decorate([
28
+ (0, class_transformer_1.Type)(() => Number),
29
+ (0, class_validator_1.IsInt)(),
30
+ (0, class_transformer_1.Expose)(),
31
+ __metadata("design:type", Number)
32
+ ], PartnerCityQuestStopDto.prototype, "order", void 0);
33
+ __decorate([
34
+ (0, class_transformer_1.Type)(() => Number),
35
+ (0, class_validator_1.IsInt)(),
36
+ (0, class_transformer_1.Expose)(),
37
+ __metadata("design:type", Number)
38
+ ], PartnerCityQuestStopDto.prototype, "attractionId", void 0);
39
+ __decorate([
40
+ (0, is_not_blank_1.IsNotBlank)(),
41
+ (0, class_transformer_1.Expose)(),
42
+ __metadata("design:type", String)
43
+ ], PartnerCityQuestStopDto.prototype, "title", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsString)(),
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", String)
49
+ ], PartnerCityQuestStopDto.prototype, "storyBefore", void 0);
50
+ __decorate([
51
+ (0, class_validator_1.IsOptional)(),
52
+ (0, class_validator_1.IsString)(),
53
+ (0, class_transformer_1.Expose)(),
54
+ __metadata("design:type", String)
55
+ ], PartnerCityQuestStopDto.prototype, "storyAfter", void 0);
56
+ __decorate([
57
+ (0, class_validator_1.IsOptional)(),
58
+ (0, class_validator_1.IsString)(),
59
+ (0, class_transformer_1.Expose)(),
60
+ __metadata("design:type", String)
61
+ ], PartnerCityQuestStopDto.prototype, "fromPrevious", void 0);
62
+ __decorate([
63
+ (0, class_validator_1.IsOptional)(),
64
+ (0, class_validator_1.IsString)(),
65
+ (0, class_transformer_1.Expose)(),
66
+ __metadata("design:type", String)
67
+ ], PartnerCityQuestStopDto.prototype, "walkMicroTask", void 0);
68
+ __decorate([
69
+ (0, class_validator_1.IsOptional)(),
70
+ (0, class_validator_1.IsString)(),
71
+ (0, class_transformer_1.Expose)(),
72
+ __metadata("design:type", String)
73
+ ], PartnerCityQuestStopDto.prototype, "arrivalInstruction", void 0);
74
+ __decorate([
75
+ (0, class_validator_1.IsOptional)(),
76
+ (0, class_validator_1.IsString)(),
77
+ (0, class_transformer_1.Expose)(),
78
+ __metadata("design:type", String)
79
+ ], PartnerCityQuestStopDto.prototype, "riddle", void 0);
80
+ __decorate([
81
+ (0, class_validator_1.IsOptional)(),
82
+ (0, class_validator_1.IsString)(),
83
+ (0, class_transformer_1.Expose)(),
84
+ __metadata("design:type", String)
85
+ ], PartnerCityQuestStopDto.prototype, "answer", void 0);
86
+ __decorate([
87
+ (0, class_validator_1.IsOptional)(),
88
+ (0, class_validator_1.IsString)(),
89
+ (0, class_transformer_1.Expose)(),
90
+ __metadata("design:type", String)
91
+ ], PartnerCityQuestStopDto.prototype, "hint", void 0);
92
+ class CreatePartnerCityQuestDto {
93
+ }
94
+ exports.CreatePartnerCityQuestDto = CreatePartnerCityQuestDto;
95
+ __decorate([
96
+ (0, class_transformer_1.Type)(() => Number),
97
+ (0, class_validator_1.IsInt)(),
98
+ (0, class_transformer_1.Expose)(),
99
+ __metadata("design:type", Number)
100
+ ], CreatePartnerCityQuestDto.prototype, "cityId", void 0);
101
+ __decorate([
102
+ (0, is_not_blank_1.IsNotBlank)(),
103
+ (0, class_transformer_1.Expose)(),
104
+ __metadata("design:type", String)
105
+ ], CreatePartnerCityQuestDto.prototype, "title", void 0);
106
+ __decorate([
107
+ (0, class_validator_1.IsOptional)(),
108
+ (0, class_validator_1.IsString)(),
109
+ (0, class_transformer_1.Expose)(),
110
+ __metadata("design:type", String)
111
+ ], CreatePartnerCityQuestDto.prototype, "tagline", void 0);
112
+ __decorate([
113
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
114
+ (0, class_transformer_1.Expose)(),
115
+ __metadata("design:type", String)
116
+ ], CreatePartnerCityQuestDto.prototype, "language", void 0);
117
+ __decorate([
118
+ (0, class_validator_1.IsOptional)(),
119
+ (0, class_validator_1.IsArray)(),
120
+ (0, class_validator_1.ValidateNested)({ each: true }),
121
+ (0, class_transformer_1.Type)(() => PartnerCityQuestStopDto),
122
+ (0, class_transformer_1.Expose)(),
123
+ __metadata("design:type", Array)
124
+ ], CreatePartnerCityQuestDto.prototype, "stops", void 0);
125
+ class UpdatePartnerCityQuestDto {
126
+ }
127
+ exports.UpdatePartnerCityQuestDto = UpdatePartnerCityQuestDto;
128
+ __decorate([
129
+ (0, class_validator_1.IsOptional)(),
130
+ (0, is_not_blank_1.IsNotBlank)(),
131
+ (0, class_transformer_1.Expose)(),
132
+ __metadata("design:type", String)
133
+ ], UpdatePartnerCityQuestDto.prototype, "title", void 0);
134
+ __decorate([
135
+ (0, class_validator_1.IsOptional)(),
136
+ (0, class_validator_1.IsString)(),
137
+ (0, class_transformer_1.Expose)(),
138
+ __metadata("design:type", String)
139
+ ], UpdatePartnerCityQuestDto.prototype, "tagline", void 0);
140
+ __decorate([
141
+ (0, class_validator_1.IsOptional)(),
142
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
143
+ (0, class_transformer_1.Expose)(),
144
+ __metadata("design:type", String)
145
+ ], UpdatePartnerCityQuestDto.prototype, "language", void 0);
146
+ __decorate([
147
+ (0, class_validator_1.IsOptional)(),
148
+ (0, class_transformer_1.Type)(() => Number),
149
+ (0, class_validator_1.IsInt)(),
150
+ (0, class_transformer_1.Expose)(),
151
+ __metadata("design:type", Number)
152
+ ], UpdatePartnerCityQuestDto.prototype, "cityId", void 0);
153
+ __decorate([
154
+ (0, class_validator_1.IsOptional)(),
155
+ (0, class_validator_1.IsArray)(),
156
+ (0, class_validator_1.ValidateNested)({ each: true }),
157
+ (0, class_transformer_1.Type)(() => PartnerCityQuestStopDto),
158
+ (0, class_transformer_1.Expose)(),
159
+ __metadata("design:type", Array)
160
+ ], UpdatePartnerCityQuestDto.prototype, "stops", void 0);
@@ -0,0 +1,11 @@
1
+ import { CityQuestContent } from '../city-quest/city-quest-content';
2
+ import { CityQuestRO } from '../city-quest/city-quest.ro';
3
+ import { Languages } from '../shared/enum/languages.enum';
4
+ import { PartnerCityQuestStopDto } from './partner-city-quest.dto';
5
+ /** Partner editor view: quest meta + friendly stops (+ raw content for advanced). */
6
+ export type PartnerCityQuestRO = CityQuestRO & {
7
+ language: Languages;
8
+ tagline: string | null;
9
+ content: CityQuestContent | null;
10
+ stops: PartnerCityQuestStopDto[];
11
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -13,10 +13,10 @@ export type PortalMonthlyStatsRO = {
13
13
  /** Commission in minor units, grouped by currency code. */
14
14
  commission: Record<string, number>;
15
15
  };
16
- export type PortalStoryStatsRO = {
17
- storyId: number;
18
- storyTitle: string;
19
- /** Total games granted for the produced quest. */
16
+ export type PortalQuestStatsRO = {
17
+ questId: number;
18
+ questTitle: string;
19
+ /** Total games granted for the quest. */
20
20
  games: number;
21
21
  /** Gross sales in minor units by currency. */
22
22
  sales: Record<string, number>;
@@ -33,6 +33,6 @@ export type PortalPartnerStatsRO = {
33
33
  totalCommission: Record<string, number>;
34
34
  /** Last 12 months, oldest first. */
35
35
  monthly: PortalMonthlyStatsRO[];
36
- /** Author only: per-story breakdown. */
37
- stories?: PortalStoryStatsRO[];
36
+ /** Author only: per-quest breakdown. */
37
+ quests?: PortalQuestStatsRO[];
38
38
  };
@@ -0,0 +1,11 @@
1
+ import { AttractionReviewStatusEnum } from '../city-attraction/enum/attraction-review-status.enum';
2
+ import { CreatePartnerAttractionDto } from './create-partner-attraction.dto';
3
+ declare const UpdatePartnerAttractionDto_base: import("@nestjs/mapped-types").MappedType<Partial<CreatePartnerAttractionDto>>;
4
+ /** Partners may only edit their own needReview attractions. */
5
+ export declare class UpdatePartnerAttractionDto extends UpdatePartnerAttractionDto_base {
6
+ }
7
+ export declare class AdminModerateAttractionDto {
8
+ reviewStatus: AttractionReviewStatusEnum;
9
+ rejectionReason?: string | null;
10
+ }
11
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdminModerateAttractionDto = exports.UpdatePartnerAttractionDto = void 0;
13
+ const mapped_types_1 = require("@nestjs/mapped-types");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
16
+ const attraction_review_status_enum_1 = require("../city-attraction/enum/attraction-review-status.enum");
17
+ const create_partner_attraction_dto_1 = require("./create-partner-attraction.dto");
18
+ /** Partners may only edit their own needReview attractions. */
19
+ class UpdatePartnerAttractionDto extends (0, mapped_types_1.PartialType)(create_partner_attraction_dto_1.CreatePartnerAttractionDto) {
20
+ }
21
+ exports.UpdatePartnerAttractionDto = UpdatePartnerAttractionDto;
22
+ class AdminModerateAttractionDto {
23
+ }
24
+ exports.AdminModerateAttractionDto = AdminModerateAttractionDto;
25
+ __decorate([
26
+ (0, class_validator_1.IsEnum)(attraction_review_status_enum_1.AttractionReviewStatusEnum),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", String)
29
+ ], AdminModerateAttractionDto.prototype, "reviewStatus", void 0);
30
+ __decorate([
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsString)(),
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", String)
35
+ ], AdminModerateAttractionDto.prototype, "rejectionReason", void 0);
@@ -0,0 +1,8 @@
1
+ /** Bump on style prompt / reference changes — чтобы выборочно перегенерить обложки. */
2
+ export declare const COVER_STYLE_PROMPT_VERSION = "v1";
3
+ export type AiCoverQuality = 'low' | 'medium' | 'high';
4
+ /** Генерация стилизованной обложки по фото-референсу (gpt-image-1). */
5
+ export declare class GenerateAiCoverDto {
6
+ /** low ≈ $0.02, medium ≈ $0.06, high ≈ $0.25 за картинку. */
7
+ quality?: AiCoverQuality;
8
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GenerateAiCoverDto = exports.COVER_STYLE_PROMPT_VERSION = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /** Bump on style prompt / reference changes — чтобы выборочно перегенерить обложки. */
16
+ exports.COVER_STYLE_PROMPT_VERSION = 'v1';
17
+ /** Генерация стилизованной обложки по фото-референсу (gpt-image-1). */
18
+ class GenerateAiCoverDto {
19
+ }
20
+ exports.GenerateAiCoverDto = GenerateAiCoverDto;
21
+ __decorate([
22
+ (0, class_validator_1.IsOptional)(),
23
+ (0, class_validator_1.IsIn)(['low', 'medium', 'high']),
24
+ (0, class_transformer_1.Expose)(),
25
+ __metadata("design:type", String)
26
+ ], GenerateAiCoverDto.prototype, "quality", void 0);