@escapenavigator/types 2.0.14 → 2.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/certificate-v2/certificate-design.ro.d.ts +1 -0
- package/dist/certificate-v2/certificate-design.ro.js +4 -0
- package/dist/certificate-v2/create-certificate-design.dto.d.ts +1 -0
- package/dist/certificate-v2/create-certificate-design.dto.js +6 -0
- package/dist/city-attraction/attraction-content-languages.d.ts +5 -0
- package/dist/city-attraction/attraction-content-languages.js +14 -0
- package/dist/city-attraction/attraction-content-prompt-version.d.ts +1 -0
- package/dist/city-attraction/attraction-content-prompt-version.js +5 -0
- package/dist/city-attraction/attraction-content.d.ts +24 -0
- package/dist/city-attraction/attraction-route-meta.d.ts +21 -0
- package/dist/city-attraction/attraction-triage.d.ts +29 -0
- package/dist/city-attraction/attraction-triage.js +41 -0
- package/dist/city-attraction/city-attraction-artifact.ro.d.ts +19 -0
- package/dist/city-attraction/city-attraction-artifact.ro.js +2 -0
- package/dist/city-attraction/city-attraction-locale.ro.d.ts +15 -0
- package/dist/city-attraction/city-attraction-locale.ro.js +2 -0
- package/dist/city-attraction/city-attraction.ro.d.ts +49 -0
- package/dist/city-attraction/city-attraction.ro.js +2 -0
- package/dist/city-attraction/create-city-attraction.dto.d.ts +40 -0
- package/dist/city-attraction/create-city-attraction.dto.js +215 -0
- package/dist/city-attraction/enum/attraction-artifact-kind.enum.d.ts +13 -0
- package/dist/city-attraction/enum/attraction-artifact-kind.enum.js +17 -0
- package/dist/city-attraction/enum/attraction-category.enum.d.ts +21 -0
- package/dist/city-attraction/enum/attraction-category.enum.js +25 -0
- package/dist/city-attraction/enum/attraction-fame.enum.d.ts +10 -0
- package/dist/city-attraction/enum/attraction-fame.enum.js +14 -0
- package/dist/city-attraction/enum/attraction-fun-fact-kind.enum.d.ts +4 -0
- package/dist/city-attraction/enum/attraction-fun-fact-kind.enum.js +8 -0
- package/dist/city-attraction/enum/attraction-indoor-outdoor.enum.d.ts +5 -0
- package/dist/city-attraction/enum/attraction-indoor-outdoor.enum.js +9 -0
- package/dist/city-attraction/enum/attraction-locale-status.enum.d.ts +11 -0
- package/dist/city-attraction/enum/attraction-locale-status.enum.js +15 -0
- package/dist/city-attraction/enum/attraction-review-status.enum.d.ts +10 -0
- package/dist/city-attraction/enum/attraction-review-status.enum.js +14 -0
- package/dist/city-attraction/enum/attraction-route-role.enum.d.ts +11 -0
- package/dist/city-attraction/enum/attraction-route-role.enum.js +15 -0
- package/dist/city-attraction/enum/attraction-source.enum.d.ts +12 -0
- package/dist/city-attraction/enum/attraction-source.enum.js +16 -0
- package/dist/city-attraction/moderate-city-attraction.dto.d.ts +5 -0
- package/dist/{partners-portal/admin/admin-moderate-portal-story.dto.js → city-attraction/moderate-city-attraction.dto.js} +7 -13
- package/dist/city-attraction/update-city-attraction.dto.d.ts +5 -0
- package/dist/city-attraction/update-city-attraction.dto.js +8 -0
- package/dist/city-attraction/upsert-city-attraction-artifact.dto.d.ts +19 -0
- package/dist/city-attraction/upsert-city-attraction-artifact.dto.js +104 -0
- package/dist/city-attraction/upsert-city-attraction-locale.dto.d.ts +14 -0
- package/dist/city-attraction/upsert-city-attraction-locale.dto.js +62 -0
- package/dist/city-person/city-person-attraction-link.dto.d.ts +12 -0
- package/dist/city-person/city-person-attraction-link.dto.js +61 -0
- package/dist/city-person/city-person-attraction-link.ro.d.ts +15 -0
- package/dist/city-person/city-person-attraction-link.ro.js +2 -0
- package/dist/city-person/city-person-locale.ro.d.ts +15 -0
- package/dist/city-person/city-person-locale.ro.js +2 -0
- package/dist/city-person/city-person.ro.d.ts +31 -0
- package/dist/city-person/city-person.ro.js +2 -0
- package/dist/city-person/create-city-person.dto.d.ts +24 -0
- package/dist/city-person/create-city-person.dto.js +128 -0
- package/dist/city-person/enum/person-attraction-role.enum.d.ts +8 -0
- package/dist/city-person/enum/person-attraction-role.enum.js +12 -0
- package/dist/city-person/enum/person-domain.enum.d.ts +5 -0
- package/dist/city-person/enum/person-domain.enum.js +9 -0
- package/dist/city-person/enum/person-fact-kind.enum.d.ts +7 -0
- package/dist/city-person/enum/person-fact-kind.enum.js +11 -0
- package/dist/city-person/enum/person-locale-status.enum.d.ts +8 -0
- package/dist/city-person/enum/person-locale-status.enum.js +12 -0
- package/dist/city-person/enum/person-occupation.enum.d.ts +21 -0
- package/dist/city-person/enum/person-occupation.enum.js +25 -0
- package/dist/city-person/enum/person-source.enum.d.ts +7 -0
- package/dist/city-person/enum/person-source.enum.js +11 -0
- package/dist/city-person/person-attraction-facts.d.ts +3 -0
- package/dist/city-person/person-attraction-facts.js +2 -0
- package/dist/city-person/person-content-languages.d.ts +5 -0
- package/dist/city-person/person-content-languages.js +14 -0
- package/dist/city-person/person-content-prompt-version.d.ts +2 -0
- package/dist/city-person/person-content-prompt-version.js +5 -0
- package/dist/city-person/person-locale-fact.d.ts +7 -0
- package/dist/city-person/person-locale-fact.js +2 -0
- package/dist/city-person/update-city-person.dto.d.ts +5 -0
- package/dist/city-person/update-city-person.dto.js +8 -0
- package/dist/city-person/upsert-city-person-locale.dto.d.ts +21 -0
- package/dist/{partners-portal/create-portal-story.dto.js → city-person/upsert-city-person-locale.dto.js} +35 -32
- package/dist/city-person/wikidata-autolink.d.ts +23 -0
- package/dist/city-person/wikidata-autolink.js +23 -0
- package/dist/city-quest/city-quest-content.d.ts +19 -5
- package/dist/city-quest/city-quest-locale-content.d.ts +35 -0
- package/dist/city-quest/city-quest-locale-content.js +2 -0
- package/dist/city-quest/city-quest-locale.ro.d.ts +12 -0
- package/dist/city-quest/city-quest-locale.ro.js +2 -0
- package/dist/city-quest/city-quest.ro.d.ts +11 -4
- package/dist/city-quest/city-quest.ro.js +17 -1
- package/dist/city-quest/enum/city-quest-locale-status.enum.d.ts +11 -0
- package/dist/city-quest/enum/city-quest-locale-status.enum.js +15 -0
- package/dist/city-quest/enum/city-quest-status.enum.d.ts +10 -5
- package/dist/city-quest/enum/city-quest-status.enum.js +9 -4
- package/dist/city-quest/quest-content-languages.d.ts +5 -0
- package/dist/city-quest/quest-content-languages.js +14 -0
- package/dist/city-quest/update-city-quest-content.dto.d.ts +5 -0
- package/dist/city-quest/update-city-quest-content.dto.js +23 -0
- package/dist/city-quest/update-city-quest-stop.dto.d.ts +9 -0
- package/dist/city-quest/update-city-quest-stop.dto.js +45 -0
- package/dist/city-quest/update-city-quest.dto.d.ts +6 -1
- package/dist/city-quest/update-city-quest.dto.js +12 -0
- package/dist/city-quest/upsert-city-quest-locale.dto.d.ts +10 -0
- package/dist/{partners-portal/update-portal-story.dto.js → city-quest/upsert-city-quest-locale.dto.js} +14 -17
- package/dist/openapi/certificates-v2/openapi-certificate-design.ro.d.ts +1 -0
- package/dist/openapi/certificates-v2/openapi-certificate-design.ro.js +4 -0
- package/dist/openapi/city-player/city-player.ro.d.ts +27 -0
- package/dist/openapi/city-player/free-route.d.ts +35 -0
- package/dist/openapi/city-player/free-route.js +2 -0
- package/dist/openapi/city-quest/play-state.ro.d.ts +15 -0
- package/dist/openapi/widget/openapi-resolve-promocode.ro.d.ts +2 -0
- package/dist/openapi/widget/openapi-resolve-promocode.ro.js +4 -0
- package/dist/openapi/widget/openapi-widget-info.ro.d.ts +6 -0
- package/dist/openapi/widget/openapi-widget-info.ro.js +4 -0
- package/dist/partners-portal/admin/admin-portal-partner.ro.d.ts +3 -3
- package/dist/partners-portal/create-partner-attraction.dto.d.ts +33 -0
- package/dist/partners-portal/create-partner-attraction.dto.js +173 -0
- package/dist/partners-portal/partner-city-quest.dto.d.ts +31 -0
- package/dist/partners-portal/partner-city-quest.dto.js +160 -0
- package/dist/partners-portal/partner-city-quest.ro.d.ts +11 -0
- package/dist/partners-portal/partner-city-quest.ro.js +2 -0
- package/dist/partners-portal/portal-stats.ro.d.ts +6 -6
- package/dist/partners-portal/update-partner-attraction.dto.d.ts +11 -0
- package/dist/partners-portal/update-partner-attraction.dto.js +35 -0
- package/dist/profile/marketing-automation/marketing-automation-capabilities.js +2 -1
- package/dist/profile/marketing-automation/marketing-automation-config.dto.d.ts +2 -1
- package/dist/profile/notification-chanel/notification-chanel.ro.d.ts +3 -0
- package/dist/profile/notification-chanel/notification-chanel.ro.js +6 -0
- package/dist/profile/notification-chanel/test-notification-chanel.dto.d.ts +6 -0
- package/dist/profile/notification-chanel/test-notification-chanel.dto.js +29 -0
- package/dist/profile/notification-chanel/webhook-health.ro.d.ts +36 -0
- package/dist/profile/notification-chanel/webhook-health.ro.js +54 -0
- package/dist/profile/notification-chanel/webhook-test-result.ro.d.ts +11 -0
- package/dist/profile/notification-chanel/webhook-test-result.ro.js +42 -0
- package/dist/promocode/create-promocode.dto.d.ts +5 -0
- package/dist/promocode/create-promocode.dto.js +18 -3
- package/dist/promocode/emun/promocode-type.enum.d.ts +7 -1
- package/dist/promocode/emun/promocode-type.enum.js +6 -0
- package/dist/promocode/promocode.ro.d.ts +1 -0
- package/dist/promocode/promocode.ro.js +4 -0
- package/dist/shared/ai-cover.d.ts +8 -0
- package/dist/shared/ai-cover.js +26 -0
- package/dist/shared/city-pipeline.d.ts +40 -0
- package/dist/shared/city-pipeline.js +52 -0
- package/dist/shared/city-research.d.ts +46 -0
- package/dist/shared/city-research.js +49 -0
- package/dist/shared/content-batch.d.ts +27 -0
- package/dist/shared/content-batch.js +41 -0
- package/dist/shared/wikidata-enrichment.d.ts +24 -0
- package/dist/shared/wikidata-enrichment.js +31 -0
- package/dist/shared/wikidata-import.d.ts +33 -0
- package/dist/shared/wikidata-import.js +53 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/upload/enum/image-type.enum.d.ts +3 -1
- package/dist/upload/enum/image-type.enum.js +2 -0
- package/dist/user/crud/create-user.dto.js +1 -0
- package/dist/user/crud/update-user.dto.js +1 -0
- package/dist/widget/create-widget.dto.d.ts +1 -0
- package/dist/widget/create-widget.dto.js +7 -0
- package/dist/widget/widget.ro.d.ts +5 -0
- package/package.json +2 -2
- package/dist/partners-portal/admin/admin-moderate-portal-story.dto.d.ts +0 -8
- package/dist/partners-portal/create-portal-story.dto.d.ts +0 -18
- package/dist/partners-portal/enum/portal-story-status.enum.d.ts +0 -12
- package/dist/partners-portal/enum/portal-story-status.enum.js +0 -16
- package/dist/partners-portal/portal-story-step.d.ts +0 -19
- package/dist/partners-portal/portal-story.ro.d.ts +0 -19
- package/dist/partners-portal/update-portal-story.dto.d.ts +0 -9
- /package/dist/{partners-portal/portal-story-step.js → city-attraction/attraction-content.js} +0 -0
- /package/dist/{partners-portal/portal-story.ro.js → city-attraction/attraction-route-meta.js} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CountriesEnum } from '../shared/enum/countries.enum';
|
|
2
2
|
import { Languages } from '../shared/enum/languages.enum';
|
|
3
3
|
import { RO } from '../shared/ro-class';
|
|
4
|
+
import { CityQuestLocaleRO } from './city-quest-locale.ro';
|
|
4
5
|
import { CityQuestStatusEnum } from './enum/city-quest-status.enum';
|
|
5
6
|
export declare class CityQuestBindingRO {
|
|
6
7
|
id: number;
|
|
@@ -16,18 +17,24 @@ export declare class CityQuestAssetRO extends RO {
|
|
|
16
17
|
export declare class CityQuestRO extends RO {
|
|
17
18
|
/** game_id из контента (esc-muc-stolen-hour-v1). */
|
|
18
19
|
key: string;
|
|
20
|
+
/** @deprecated Свободный текст города — заменён на cityId/cityTitle. */
|
|
19
21
|
city?: string;
|
|
22
|
+
/** Город каталога (FK на CityEntity). */
|
|
23
|
+
cityId?: number | null;
|
|
24
|
+
/** Название города из CityEntity — для отображения выбранного города в админке. */
|
|
25
|
+
cityTitle?: string | null;
|
|
20
26
|
country?: CountriesEnum | null;
|
|
21
|
-
/** Кто озвучил игру (
|
|
27
|
+
/** Кто озвучил игру (content.voiced_by) — для стартового экрана. */
|
|
22
28
|
voicedBy?: string;
|
|
23
29
|
title: Partial<Record<Languages, string>>;
|
|
24
30
|
status: CityQuestStatusEnum;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
31
|
+
rejectionReason?: string | null;
|
|
32
|
+
createdByPartnerId?: number | null;
|
|
33
|
+
/** Когда контент последний раз меняли. */
|
|
28
34
|
draftUpdatedAt?: Date | null;
|
|
29
35
|
stopsCount: number;
|
|
30
36
|
/** Ключи ассетов из контента, для которых не загружен файл. */
|
|
31
37
|
missingAssets?: string[];
|
|
32
38
|
bindings?: CityQuestBindingRO[];
|
|
39
|
+
locales?: CityQuestLocaleRO[];
|
|
33
40
|
}
|
|
@@ -60,6 +60,14 @@ __decorate([
|
|
|
60
60
|
(0, class_transformer_1.Expose)(),
|
|
61
61
|
__metadata("design:type", String)
|
|
62
62
|
], CityQuestRO.prototype, "city", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, class_transformer_1.Expose)(),
|
|
65
|
+
__metadata("design:type", Number)
|
|
66
|
+
], CityQuestRO.prototype, "cityId", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, class_transformer_1.Expose)(),
|
|
69
|
+
__metadata("design:type", String)
|
|
70
|
+
], CityQuestRO.prototype, "cityTitle", void 0);
|
|
63
71
|
__decorate([
|
|
64
72
|
(0, class_transformer_1.Expose)(),
|
|
65
73
|
__metadata("design:type", String)
|
|
@@ -76,10 +84,14 @@ __decorate([
|
|
|
76
84
|
(0, class_transformer_1.Expose)(),
|
|
77
85
|
__metadata("design:type", String)
|
|
78
86
|
], CityQuestRO.prototype, "status", void 0);
|
|
87
|
+
__decorate([
|
|
88
|
+
(0, class_transformer_1.Expose)(),
|
|
89
|
+
__metadata("design:type", String)
|
|
90
|
+
], CityQuestRO.prototype, "rejectionReason", void 0);
|
|
79
91
|
__decorate([
|
|
80
92
|
(0, class_transformer_1.Expose)(),
|
|
81
93
|
__metadata("design:type", Number)
|
|
82
|
-
], CityQuestRO.prototype, "
|
|
94
|
+
], CityQuestRO.prototype, "createdByPartnerId", void 0);
|
|
83
95
|
__decorate([
|
|
84
96
|
(0, class_transformer_1.Expose)(),
|
|
85
97
|
__metadata("design:type", Date)
|
|
@@ -96,3 +108,7 @@ __decorate([
|
|
|
96
108
|
(0, class_transformer_1.Expose)(),
|
|
97
109
|
__metadata("design:type", Array)
|
|
98
110
|
], CityQuestRO.prototype, "bindings", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
(0, class_transformer_1.Expose)(),
|
|
113
|
+
__metadata("design:type", Array)
|
|
114
|
+
], CityQuestRO.prototype, "locales", void 0);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale readiness for quest narrative content.
|
|
3
|
+
* empty — no package yet
|
|
4
|
+
* generated — AI wrote it, not human-reviewed
|
|
5
|
+
* reviewed — moderator accepted this language
|
|
6
|
+
*/
|
|
7
|
+
export declare enum CityQuestLocaleStatusEnum {
|
|
8
|
+
EMPTY = "empty",
|
|
9
|
+
GENERATED = "generated",
|
|
10
|
+
REVIEWED = "reviewed"
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CityQuestLocaleStatusEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Locale readiness for quest narrative content.
|
|
6
|
+
* empty — no package yet
|
|
7
|
+
* generated — AI wrote it, not human-reviewed
|
|
8
|
+
* reviewed — moderator accepted this language
|
|
9
|
+
*/
|
|
10
|
+
var CityQuestLocaleStatusEnum;
|
|
11
|
+
(function (CityQuestLocaleStatusEnum) {
|
|
12
|
+
CityQuestLocaleStatusEnum["EMPTY"] = "empty";
|
|
13
|
+
CityQuestLocaleStatusEnum["GENERATED"] = "generated";
|
|
14
|
+
CityQuestLocaleStatusEnum["REVIEWED"] = "reviewed";
|
|
15
|
+
})(CityQuestLocaleStatusEnum || (exports.CityQuestLocaleStatusEnum = CityQuestLocaleStatusEnum = {}));
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle of a city quest (street game).
|
|
3
|
+
* Only `ready` is visible in the player catalog and playable.
|
|
4
|
+
*/
|
|
1
5
|
export declare enum CityQuestStatusEnum {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
DRAFT = "draft",
|
|
7
|
+
NEED_REVIEW = "need_review",
|
|
8
|
+
REJECTED = "rejected",
|
|
9
|
+
READY = "ready",
|
|
10
|
+
/** Hidden from catalog without deleting. */
|
|
11
|
+
PAUSED = "paused"
|
|
7
12
|
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CityQuestStatusEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Lifecycle of a city quest (street game).
|
|
6
|
+
* Only `ready` is visible in the player catalog and playable.
|
|
7
|
+
*/
|
|
4
8
|
var CityQuestStatusEnum;
|
|
5
9
|
(function (CityQuestStatusEnum) {
|
|
6
|
-
CityQuestStatusEnum["
|
|
7
|
-
CityQuestStatusEnum["
|
|
8
|
-
CityQuestStatusEnum["
|
|
10
|
+
CityQuestStatusEnum["DRAFT"] = "draft";
|
|
11
|
+
CityQuestStatusEnum["NEED_REVIEW"] = "need_review";
|
|
12
|
+
CityQuestStatusEnum["REJECTED"] = "rejected";
|
|
13
|
+
CityQuestStatusEnum["READY"] = "ready";
|
|
14
|
+
/** Hidden from catalog without deleting. */
|
|
9
15
|
CityQuestStatusEnum["PAUSED"] = "paused";
|
|
10
|
-
CityQuestStatusEnum["RETIRED"] = "retired";
|
|
11
16
|
})(CityQuestStatusEnum || (exports.CityQuestStatusEnum = CityQuestStatusEnum = {}));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Languages } from '../shared/enum/languages.enum';
|
|
2
|
+
/** First-wave languages for quest narrative locales (same set as attractions). */
|
|
3
|
+
export declare const QUEST_CONTENT_LANGUAGES: readonly [Languages.EN, Languages.RU, Languages.DE, Languages.FR, Languages.ES];
|
|
4
|
+
export type QuestContentLanguage = (typeof QUEST_CONTENT_LANGUAGES)[number];
|
|
5
|
+
export declare const isQuestContentLanguage: (lang: string) => lang is QuestContentLanguage;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isQuestContentLanguage = exports.QUEST_CONTENT_LANGUAGES = void 0;
|
|
4
|
+
const languages_enum_1 = require("../shared/enum/languages.enum");
|
|
5
|
+
/** First-wave languages for quest narrative locales (same set as attractions). */
|
|
6
|
+
exports.QUEST_CONTENT_LANGUAGES = [
|
|
7
|
+
languages_enum_1.Languages.EN,
|
|
8
|
+
languages_enum_1.Languages.RU,
|
|
9
|
+
languages_enum_1.Languages.DE,
|
|
10
|
+
languages_enum_1.Languages.FR,
|
|
11
|
+
languages_enum_1.Languages.ES,
|
|
12
|
+
];
|
|
13
|
+
const isQuestContentLanguage = (lang) => exports.QUEST_CONTENT_LANGUAGES.includes(lang);
|
|
14
|
+
exports.isQuestContentLanguage = isQuestContentLanguage;
|
|
@@ -0,0 +1,23 @@
|
|
|
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.UpdateCityQuestContentDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/** Replace live quest content (admin / shared builder). */
|
|
16
|
+
class UpdateCityQuestContentDto {
|
|
17
|
+
}
|
|
18
|
+
exports.UpdateCityQuestContentDto = UpdateCityQuestContentDto;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_validator_1.IsObject)(),
|
|
21
|
+
(0, class_transformer_1.Expose)(),
|
|
22
|
+
__metadata("design:type", Object)
|
|
23
|
+
], UpdateCityQuestContentDto.prototype, "content", void 0);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Точечное редактирование одной точки (stop) в content квеста. */
|
|
2
|
+
export declare class UpdateCityQuestStopDto {
|
|
3
|
+
/** Ключевая веха — показывать точку на схеме маршрута в плеере. */
|
|
4
|
+
isKeyMilestone?: boolean;
|
|
5
|
+
/** Привязка к каталогу достопримечательностей. */
|
|
6
|
+
attractionId?: number;
|
|
7
|
+
gpsRadiusM?: number;
|
|
8
|
+
displayNameBeforeSolve?: string | null;
|
|
9
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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.UpdateCityQuestStopDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/** Точечное редактирование одной точки (stop) в content квеста. */
|
|
16
|
+
class UpdateCityQuestStopDto {
|
|
17
|
+
}
|
|
18
|
+
exports.UpdateCityQuestStopDto = UpdateCityQuestStopDto;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_validator_1.IsOptional)(),
|
|
21
|
+
(0, class_validator_1.IsBoolean)(),
|
|
22
|
+
(0, class_transformer_1.Expose)(),
|
|
23
|
+
__metadata("design:type", Boolean)
|
|
24
|
+
], UpdateCityQuestStopDto.prototype, "isKeyMilestone", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
27
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
28
|
+
(0, class_validator_1.IsInt)(),
|
|
29
|
+
(0, class_transformer_1.Expose)(),
|
|
30
|
+
__metadata("design:type", Number)
|
|
31
|
+
], UpdateCityQuestStopDto.prototype, "attractionId", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_validator_1.IsOptional)(),
|
|
34
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
35
|
+
(0, class_validator_1.IsNumber)(),
|
|
36
|
+
(0, class_validator_1.Min)(1),
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
__metadata("design:type", Number)
|
|
39
|
+
], UpdateCityQuestStopDto.prototype, "gpsRadiusM", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.IsString)(),
|
|
43
|
+
(0, class_transformer_1.Expose)(),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], UpdateCityQuestStopDto.prototype, "displayNameBeforeSolve", void 0);
|
|
@@ -2,8 +2,13 @@ import { CountriesEnum } from '../shared/enum/countries.enum';
|
|
|
2
2
|
import { CityQuestStatusEnum } from './enum/city-quest-status.enum';
|
|
3
3
|
export declare class UpdateCityQuestDto {
|
|
4
4
|
status?: CityQuestStatusEnum;
|
|
5
|
+
/** @deprecated Свободный текст города — заменён на cityId. */
|
|
5
6
|
city?: string;
|
|
7
|
+
/** Город каталога (FK на CityEntity). null — отвязать. */
|
|
8
|
+
cityId?: number | null;
|
|
6
9
|
country?: CountriesEnum;
|
|
7
|
-
/** Кто озвучил игру — пишется в
|
|
10
|
+
/** Кто озвучил игру — пишется в content.voiced_by. */
|
|
8
11
|
voicedBy?: string;
|
|
12
|
+
/** Required when status=rejected. */
|
|
13
|
+
rejectionReason?: string | null;
|
|
9
14
|
}
|
|
@@ -29,6 +29,12 @@ __decorate([
|
|
|
29
29
|
(0, class_transformer_1.Expose)(),
|
|
30
30
|
__metadata("design:type", String)
|
|
31
31
|
], UpdateCityQuestDto.prototype, "city", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_validator_1.IsOptional)(),
|
|
34
|
+
(0, class_validator_1.IsNumber)(),
|
|
35
|
+
(0, class_transformer_1.Expose)(),
|
|
36
|
+
__metadata("design:type", Number)
|
|
37
|
+
], UpdateCityQuestDto.prototype, "cityId", void 0);
|
|
32
38
|
__decorate([
|
|
33
39
|
(0, class_validator_1.IsOptional)(),
|
|
34
40
|
(0, class_validator_1.IsEnum)(countries_enum_1.CountriesEnum),
|
|
@@ -41,3 +47,9 @@ __decorate([
|
|
|
41
47
|
(0, class_transformer_1.Expose)(),
|
|
42
48
|
__metadata("design:type", String)
|
|
43
49
|
], UpdateCityQuestDto.prototype, "voicedBy", 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
|
+
], UpdateCityQuestDto.prototype, "rejectionReason", void 0);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Languages } from '../shared/enum/languages.enum';
|
|
2
|
+
import { CityQuestLocaleContent } from './city-quest-locale-content';
|
|
3
|
+
import { CityQuestLocaleStatusEnum } from './enum/city-quest-locale-status.enum';
|
|
4
|
+
export declare class UpsertCityQuestLocaleDto {
|
|
5
|
+
language: Languages;
|
|
6
|
+
title?: string;
|
|
7
|
+
tagline?: string | null;
|
|
8
|
+
content?: CityQuestLocaleContent | null;
|
|
9
|
+
status?: CityQuestLocaleStatusEnum;
|
|
10
|
+
}
|
|
@@ -9,43 +9,40 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.UpsertCityQuestLocaleDto = void 0;
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const languages_enum_1 = require("../shared/enum/languages.enum");
|
|
16
|
-
const
|
|
17
|
-
class
|
|
16
|
+
const city_quest_locale_status_enum_1 = require("./enum/city-quest-locale-status.enum");
|
|
17
|
+
class UpsertCityQuestLocaleDto {
|
|
18
18
|
}
|
|
19
|
-
exports.
|
|
19
|
+
exports.UpsertCityQuestLocaleDto = UpsertCityQuestLocaleDto;
|
|
20
20
|
__decorate([
|
|
21
|
-
(0, class_validator_1.
|
|
22
|
-
(0, class_validator_1.IsString)(),
|
|
21
|
+
(0, class_validator_1.IsEnum)(languages_enum_1.Languages),
|
|
23
22
|
(0, class_transformer_1.Expose)(),
|
|
24
23
|
__metadata("design:type", String)
|
|
25
|
-
],
|
|
24
|
+
], UpsertCityQuestLocaleDto.prototype, "language", void 0);
|
|
26
25
|
__decorate([
|
|
27
26
|
(0, class_validator_1.IsOptional)(),
|
|
28
27
|
(0, class_validator_1.IsString)(),
|
|
29
28
|
(0, class_transformer_1.Expose)(),
|
|
30
29
|
__metadata("design:type", String)
|
|
31
|
-
],
|
|
30
|
+
], UpsertCityQuestLocaleDto.prototype, "title", void 0);
|
|
32
31
|
__decorate([
|
|
33
32
|
(0, class_validator_1.IsOptional)(),
|
|
34
33
|
(0, class_validator_1.IsString)(),
|
|
35
34
|
(0, class_transformer_1.Expose)(),
|
|
36
35
|
__metadata("design:type", String)
|
|
37
|
-
],
|
|
36
|
+
], UpsertCityQuestLocaleDto.prototype, "tagline", void 0);
|
|
38
37
|
__decorate([
|
|
39
38
|
(0, class_validator_1.IsOptional)(),
|
|
40
|
-
(0, class_validator_1.
|
|
39
|
+
(0, class_validator_1.IsObject)(),
|
|
41
40
|
(0, class_transformer_1.Expose)(),
|
|
42
|
-
__metadata("design:type",
|
|
43
|
-
],
|
|
41
|
+
__metadata("design:type", Object)
|
|
42
|
+
], UpsertCityQuestLocaleDto.prototype, "content", void 0);
|
|
44
43
|
__decorate([
|
|
45
44
|
(0, class_validator_1.IsOptional)(),
|
|
46
|
-
(0, class_validator_1.
|
|
47
|
-
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
48
|
-
(0, class_transformer_1.Type)(() => create_portal_story_dto_1.PortalStoryStepDto),
|
|
45
|
+
(0, class_validator_1.IsEnum)(city_quest_locale_status_enum_1.CityQuestLocaleStatusEnum),
|
|
49
46
|
(0, class_transformer_1.Expose)(),
|
|
50
|
-
__metadata("design:type",
|
|
51
|
-
],
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], UpsertCityQuestLocaleDto.prototype, "status", void 0);
|
|
@@ -42,6 +42,10 @@ __decorate([
|
|
|
42
42
|
(0, class_transformer_1.Expose)(),
|
|
43
43
|
__metadata("design:type", Boolean)
|
|
44
44
|
], OpenapiCertificateDesignRO.prototype, "availablePickup", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_transformer_1.Expose)(),
|
|
47
|
+
__metadata("design:type", Boolean)
|
|
48
|
+
], OpenapiCertificateDesignRO.prototype, "allowCustomNominal", void 0);
|
|
45
49
|
__decorate([
|
|
46
50
|
(0, class_transformer_1.Expose)(),
|
|
47
51
|
__metadata("design:type", String)
|
|
@@ -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
|
+
};
|
|
@@ -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<{
|
|
@@ -17,6 +17,8 @@ export declare class OpenapiPromocodeWidgetRO {
|
|
|
17
17
|
availableForCertificates: boolean;
|
|
18
18
|
canUseWithOtherPromocodes: boolean;
|
|
19
19
|
canUseWithOtherCertificates: boolean;
|
|
20
|
+
/** Промокод требует онлайн-оплаты заказа (оплата на месте недоступна). */
|
|
21
|
+
onlinePaymentOnly: boolean;
|
|
20
22
|
allQuestrooms: boolean;
|
|
21
23
|
questroomsIds: number[];
|
|
22
24
|
validFrom?: string;
|
|
@@ -59,6 +59,10 @@ __decorate([
|
|
|
59
59
|
(0, class_transformer_1.Expose)(),
|
|
60
60
|
__metadata("design:type", Boolean)
|
|
61
61
|
], OpenapiPromocodeWidgetRO.prototype, "canUseWithOtherCertificates", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, class_transformer_1.Expose)(),
|
|
64
|
+
__metadata("design:type", Boolean)
|
|
65
|
+
], OpenapiPromocodeWidgetRO.prototype, "onlinePaymentOnly", void 0);
|
|
62
66
|
__decorate([
|
|
63
67
|
(0, class_transformer_1.Expose)(),
|
|
64
68
|
__metadata("design:type", Boolean)
|
|
@@ -70,6 +70,12 @@ export declare class OpenapiWidgetInfoRO {
|
|
|
70
70
|
* Единственный источник данных для подарочных сертификатов в виджете.
|
|
71
71
|
*/
|
|
72
72
|
certificatesShop?: OpenapiCertificatesShopRO;
|
|
73
|
+
/**
|
|
74
|
+
* Виджет продаёт один конкретный дизайн сертификата. В этом режиме
|
|
75
|
+
* `certificatesShop.designs` уже отфильтрован до одного элемента, а виджет
|
|
76
|
+
* скрывает шаг выбора дизайна (остаются номиналы и способы доставки).
|
|
77
|
+
*/
|
|
78
|
+
certificateDesignId?: number | null;
|
|
73
79
|
profile: Profile;
|
|
74
80
|
ga4Id?: string;
|
|
75
81
|
gaCoversationId?: string;
|
|
@@ -205,6 +205,10 @@ __decorate([
|
|
|
205
205
|
(0, class_transformer_1.Type)(() => openapi_certificates_shop_ro_1.OpenapiCertificatesShopRO),
|
|
206
206
|
__metadata("design:type", openapi_certificates_shop_ro_1.OpenapiCertificatesShopRO)
|
|
207
207
|
], OpenapiWidgetInfoRO.prototype, "certificatesShop", void 0);
|
|
208
|
+
__decorate([
|
|
209
|
+
(0, class_transformer_1.Expose)(),
|
|
210
|
+
__metadata("design:type", Number)
|
|
211
|
+
], OpenapiWidgetInfoRO.prototype, "certificateDesignId", void 0);
|
|
208
212
|
__decorate([
|
|
209
213
|
(0, class_transformer_1.Expose)(),
|
|
210
214
|
(0, class_transformer_1.Type)(() => Profile),
|
|
@@ -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:
|
|
5
|
-
|
|
6
|
-
|
|
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 { AttractionRouteMeta } from '../city-attraction/attraction-route-meta';
|
|
2
|
+
import { AttractionCategoryEnum } from '../city-attraction/enum/attraction-category.enum';
|
|
3
|
+
import { AttractionFameEnum } from '../city-attraction/enum/attraction-fame.enum';
|
|
4
|
+
import { AttractionIndoorOutdoorEnum } from '../city-attraction/enum/attraction-indoor-outdoor.enum';
|
|
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
|
+
}
|