@escapenavigator/types 2.0.17 → 2.0.20

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 (64) hide show
  1. package/dist/city-attraction/attraction-content-languages.d.ts +2 -2
  2. package/dist/city-attraction/attraction-content-languages.js +3 -2
  3. package/dist/city-attraction/city-attraction.ro.d.ts +6 -0
  4. package/dist/city-attraction/enum/attraction-review-status.enum.d.ts +3 -1
  5. package/dist/city-attraction/enum/attraction-review-status.enum.js +2 -0
  6. package/dist/city-person/city-person.ro.d.ts +15 -0
  7. package/dist/city-person/create-city-person.dto.d.ts +5 -0
  8. package/dist/city-person/create-city-person.dto.js +20 -0
  9. package/dist/city-person/enum/person-domain.enum.d.ts +11 -1
  10. package/dist/city-person/enum/person-domain.enum.js +10 -0
  11. package/dist/city-person/enum/person-occupation.enum.d.ts +7 -1
  12. package/dist/city-person/enum/person-occupation.enum.js +6 -0
  13. package/dist/city-person/enum/person-recognition.enum.d.ts +9 -0
  14. package/dist/city-person/enum/person-recognition.enum.js +13 -0
  15. package/dist/city-person/enum/person-review-status.enum.d.ts +11 -0
  16. package/dist/city-person/enum/person-review-status.enum.js +15 -0
  17. package/dist/city-person/moderate-city-person.dto.d.ts +5 -0
  18. package/dist/city-person/moderate-city-person.dto.js +29 -0
  19. package/dist/city-person/person-content-languages.d.ts +2 -2
  20. package/dist/city-person/person-content-languages.js +3 -2
  21. package/dist/city-person/person-domain-color.d.ts +20 -0
  22. package/dist/city-person/person-domain-color.js +78 -0
  23. package/dist/city-ready-route/city-ready-route-locale.ro.d.ts +9 -0
  24. package/dist/city-ready-route/city-ready-route-locale.ro.js +2 -0
  25. package/dist/city-ready-route/city-ready-route-stop.ro.d.ts +24 -0
  26. package/dist/city-ready-route/city-ready-route-stop.ro.js +2 -0
  27. package/dist/city-ready-route/city-ready-route.ro.d.ts +22 -0
  28. package/dist/city-ready-route/city-ready-route.ro.js +2 -0
  29. package/dist/city-ready-route/create-city-ready-route.dto.d.ts +15 -0
  30. package/dist/city-ready-route/create-city-ready-route.dto.js +90 -0
  31. package/dist/city-ready-route/enum/ready-route-status.enum.d.ts +4 -0
  32. package/dist/city-ready-route/enum/ready-route-status.enum.js +8 -0
  33. package/dist/city-ready-route/enum/ready-route-stop-kind.enum.d.ts +4 -0
  34. package/dist/city-ready-route/enum/ready-route-stop-kind.enum.js +8 -0
  35. package/dist/city-ready-route/estimate-ready-route-path.dto.d.ts +14 -0
  36. package/dist/city-ready-route/estimate-ready-route-path.dto.js +39 -0
  37. package/dist/city-ready-route/generate-ready-route-stop-audio.dto.d.ts +13 -0
  38. package/dist/city-ready-route/generate-ready-route-stop-audio.dto.js +45 -0
  39. package/dist/city-ready-route/ready-route-map-pool.ro.d.ts +28 -0
  40. package/dist/city-ready-route/ready-route-map-pool.ro.js +2 -0
  41. package/dist/city-ready-route/ready-route-stop-content.d.ts +12 -0
  42. package/dist/city-ready-route/ready-route-stop-content.js +2 -0
  43. package/dist/city-ready-route/update-city-ready-route.dto.d.ts +5 -0
  44. package/dist/city-ready-route/update-city-ready-route.dto.js +8 -0
  45. package/dist/city-ready-route/upsert-city-ready-route-locale.dto.d.ts +7 -0
  46. package/dist/city-ready-route/upsert-city-ready-route-locale.dto.js +41 -0
  47. package/dist/city-ready-route/upsert-city-ready-route-stop.dto.d.ts +18 -0
  48. package/dist/city-ready-route/upsert-city-ready-route-stop.dto.js +86 -0
  49. package/dist/openapi/city-player/city-explore.ro.d.ts +4 -1
  50. package/dist/openapi/city-player/city-ready-route.ro.d.ts +57 -0
  51. package/dist/openapi/city-player/city-ready-route.ro.js +2 -0
  52. package/dist/shared/city-pipeline.d.ts +11 -3
  53. package/dist/shared/city-pipeline.js +8 -2
  54. package/dist/shared/city-research.d.ts +2 -0
  55. package/dist/shared/content-base-language.d.ts +7 -0
  56. package/dist/shared/content-base-language.js +10 -0
  57. package/dist/shared/editorial-research.d.ts +70 -0
  58. package/dist/shared/editorial-research.js +4 -0
  59. package/dist/shared/fill-complete.d.ts +26 -0
  60. package/dist/shared/fill-complete.js +46 -0
  61. package/dist/tsconfig.build.tsbuildinfo +1 -1
  62. package/dist/upload/enum/image-type.enum.d.ts +2 -1
  63. package/dist/upload/enum/image-type.enum.js +1 -0
  64. package/package.json +2 -2
@@ -0,0 +1,4 @@
1
+ export declare enum ReadyRouteStatusEnum {
2
+ DRAFT = "draft",
3
+ PUBLISHED = "published"
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadyRouteStatusEnum = void 0;
4
+ var ReadyRouteStatusEnum;
5
+ (function (ReadyRouteStatusEnum) {
6
+ ReadyRouteStatusEnum["DRAFT"] = "draft";
7
+ ReadyRouteStatusEnum["PUBLISHED"] = "published";
8
+ })(ReadyRouteStatusEnum || (exports.ReadyRouteStatusEnum = ReadyRouteStatusEnum = {}));
@@ -0,0 +1,4 @@
1
+ export declare enum ReadyRouteStopKindEnum {
2
+ ATTRACTION = "attraction",
3
+ WAYPOINT = "waypoint"
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadyRouteStopKindEnum = void 0;
4
+ var ReadyRouteStopKindEnum;
5
+ (function (ReadyRouteStopKindEnum) {
6
+ ReadyRouteStopKindEnum["ATTRACTION"] = "attraction";
7
+ ReadyRouteStopKindEnum["WAYPOINT"] = "waypoint";
8
+ })(ReadyRouteStopKindEnum || (exports.ReadyRouteStopKindEnum = ReadyRouteStopKindEnum = {}));
@@ -0,0 +1,14 @@
1
+ export declare class ReadyRoutePathPointDto {
2
+ lat: number;
3
+ lng: number;
4
+ }
5
+ export declare class EstimateReadyRoutePathDto {
6
+ points: ReadyRoutePathPointDto[];
7
+ }
8
+ export type EstimateReadyRoutePathRO = {
9
+ distanceKm: number;
10
+ durationFromMinutes: number;
11
+ durationToMinutes: number;
12
+ /** [lng, lat][] polyline for admin preview */
13
+ geometry: [number, number][];
14
+ };
@@ -0,0 +1,39 @@
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.EstimateReadyRoutePathDto = exports.ReadyRoutePathPointDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ class ReadyRoutePathPointDto {
16
+ }
17
+ exports.ReadyRoutePathPointDto = ReadyRoutePathPointDto;
18
+ __decorate([
19
+ (0, class_transformer_1.Type)(() => Number),
20
+ (0, class_validator_1.IsNumber)(),
21
+ (0, class_transformer_1.Expose)(),
22
+ __metadata("design:type", Number)
23
+ ], ReadyRoutePathPointDto.prototype, "lat", void 0);
24
+ __decorate([
25
+ (0, class_transformer_1.Type)(() => Number),
26
+ (0, class_validator_1.IsNumber)(),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", Number)
29
+ ], ReadyRoutePathPointDto.prototype, "lng", void 0);
30
+ class EstimateReadyRoutePathDto {
31
+ }
32
+ exports.EstimateReadyRoutePathDto = EstimateReadyRoutePathDto;
33
+ __decorate([
34
+ (0, class_validator_1.IsArray)(),
35
+ (0, class_validator_1.ValidateNested)({ each: true }),
36
+ (0, class_transformer_1.Type)(() => ReadyRoutePathPointDto),
37
+ (0, class_transformer_1.Expose)(),
38
+ __metadata("design:type", Array)
39
+ ], EstimateReadyRoutePathDto.prototype, "points", void 0);
@@ -0,0 +1,13 @@
1
+ import { RiddleTtsMoodEnum } from '../questroom-riddle/enum/riddle-tts-mood.enum';
2
+ import { RiddleTtsVoiceEnum } from '../questroom-riddle/enum/riddle-tts-voice.enum';
3
+ import { Languages } from '../shared/enum/languages.enum';
4
+ export declare class GenerateReadyRouteStopAudioDto {
5
+ language: Languages;
6
+ /** Текст для озвучки. Если не передан — берётся guideTalk стопа (override или база атракшена). */
7
+ text?: string;
8
+ voice?: RiddleTtsVoiceEnum;
9
+ mood?: RiddleTtsMoodEnum;
10
+ }
11
+ export type GenerateReadyRouteStopAudioRO = {
12
+ url: string;
13
+ };
@@ -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.GenerateReadyRouteStopAudioDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const riddle_tts_mood_enum_1 = require("../questroom-riddle/enum/riddle-tts-mood.enum");
16
+ const riddle_tts_voice_enum_1 = require("../questroom-riddle/enum/riddle-tts-voice.enum");
17
+ const languages_enum_1 = require("../shared/enum/languages.enum");
18
+ class GenerateReadyRouteStopAudioDto {
19
+ }
20
+ exports.GenerateReadyRouteStopAudioDto = GenerateReadyRouteStopAudioDto;
21
+ __decorate([
22
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
23
+ (0, class_transformer_1.Expose)(),
24
+ __metadata("design:type", String)
25
+ ], GenerateReadyRouteStopAudioDto.prototype, "language", void 0);
26
+ __decorate([
27
+ (0, class_validator_1.IsOptional)(),
28
+ (0, class_validator_1.IsString)(),
29
+ (0, class_validator_1.MinLength)(1),
30
+ (0, class_validator_1.MaxLength)(12000),
31
+ (0, class_transformer_1.Expose)(),
32
+ __metadata("design:type", String)
33
+ ], GenerateReadyRouteStopAudioDto.prototype, "text", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.IsOptional)(),
36
+ (0, class_validator_1.IsEnum)(riddle_tts_voice_enum_1.RiddleTtsVoiceEnum),
37
+ (0, class_transformer_1.Expose)(),
38
+ __metadata("design:type", String)
39
+ ], GenerateReadyRouteStopAudioDto.prototype, "voice", void 0);
40
+ __decorate([
41
+ (0, class_validator_1.IsOptional)(),
42
+ (0, class_validator_1.IsEnum)(riddle_tts_mood_enum_1.RiddleTtsMoodEnum),
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", String)
45
+ ], GenerateReadyRouteStopAudioDto.prototype, "mood", void 0);
@@ -0,0 +1,28 @@
1
+ import { AttractionReviewStatusEnum } from '../city-attraction/enum/attraction-review-status.enum';
2
+ import { PersonDomainEnum } from '../city-person/enum/person-domain.enum';
3
+ export type ReadyRouteMapPoolPersonRO = {
4
+ personId: number;
5
+ name: string;
6
+ photoUrl: string | null;
7
+ domains: PersonDomainEnum[];
8
+ };
9
+ export type ReadyRouteMapPoolAttractionRO = {
10
+ attractionId: number;
11
+ title: string;
12
+ knownFor: string | null;
13
+ knownForRu: string | null;
14
+ reviewStatus: AttractionReviewStatusEnum;
15
+ archived: boolean;
16
+ lat: number | null;
17
+ lng: number | null;
18
+ photoUrl: string | null;
19
+ hookRu: string | null;
20
+ people: ReadyRouteMapPoolPersonRO[];
21
+ };
22
+ export type ReadyRouteMapPoolRO = {
23
+ cityId: number;
24
+ city: string;
25
+ lat: number | null;
26
+ lng: number | null;
27
+ attractions: ReadyRouteMapPoolAttractionRO[];
28
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import { AttractionContentCard, AttractionFunFact } from '../city-attraction/attraction-content';
2
+ /**
3
+ * Partial override of attraction guide content for a route stop.
4
+ * Null/omitted fields inherit from the attraction locale.
5
+ */
6
+ export type ReadyRouteStopContentOverride = {
7
+ hook?: string | null;
8
+ cards?: AttractionContentCard[] | null;
9
+ guideTalk?: string | null;
10
+ funFact?: AttractionFunFact | null;
11
+ lookFor?: string[] | null;
12
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { CreateCityReadyRouteDto } from './create-city-ready-route.dto';
2
+ declare const UpdateCityReadyRouteDto_base: import("@nestjs/mapped-types").MappedType<Partial<CreateCityReadyRouteDto>>;
3
+ export declare class UpdateCityReadyRouteDto extends UpdateCityReadyRouteDto_base {
4
+ }
5
+ export {};
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateCityReadyRouteDto = void 0;
4
+ const mapped_types_1 = require("@nestjs/mapped-types");
5
+ const create_city_ready_route_dto_1 = require("./create-city-ready-route.dto");
6
+ class UpdateCityReadyRouteDto extends (0, mapped_types_1.PartialType)(create_city_ready_route_dto_1.CreateCityReadyRouteDto) {
7
+ }
8
+ exports.UpdateCityReadyRouteDto = UpdateCityReadyRouteDto;
@@ -0,0 +1,7 @@
1
+ import { Languages } from '../shared/enum/languages.enum';
2
+ export declare class UpsertCityReadyRouteLocaleDto {
3
+ language: Languages;
4
+ title: string;
5
+ teaser?: string | null;
6
+ description?: string | null;
7
+ }
@@ -0,0 +1,41 @@
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.UpsertCityReadyRouteLocaleDto = 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
+ class UpsertCityReadyRouteLocaleDto {
18
+ }
19
+ exports.UpsertCityReadyRouteLocaleDto = UpsertCityReadyRouteLocaleDto;
20
+ __decorate([
21
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
22
+ (0, class_transformer_1.Expose)(),
23
+ __metadata("design:type", String)
24
+ ], UpsertCityReadyRouteLocaleDto.prototype, "language", void 0);
25
+ __decorate([
26
+ (0, is_not_blank_1.IsNotBlank)(),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", String)
29
+ ], UpsertCityReadyRouteLocaleDto.prototype, "title", 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
+ ], UpsertCityReadyRouteLocaleDto.prototype, "teaser", void 0);
36
+ __decorate([
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsString)(),
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", String)
41
+ ], UpsertCityReadyRouteLocaleDto.prototype, "description", void 0);
@@ -0,0 +1,18 @@
1
+ import { Languages } from '../shared/enum/languages.enum';
2
+ import { ReadyRouteStopKindEnum } from './enum/ready-route-stop-kind.enum';
3
+ import { ReadyRouteStopContentOverride } from './ready-route-stop-content';
4
+ export declare class UpsertCityReadyRouteStopLocaleDto {
5
+ language: Languages;
6
+ content?: ReadyRouteStopContentOverride | null;
7
+ /** Озвучка guideTalk этого стопа (отдельная от аудио самой точки). */
8
+ guideAudioUrl?: string | null;
9
+ guideAudioDurationSec?: number | null;
10
+ }
11
+ export declare class UpsertCityReadyRouteStopDto {
12
+ order: number;
13
+ kind: ReadyRouteStopKindEnum;
14
+ attractionId?: number | null;
15
+ lat?: number | null;
16
+ lng?: number | null;
17
+ locales?: UpsertCityReadyRouteStopLocaleDto[];
18
+ }
@@ -0,0 +1,86 @@
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.UpsertCityReadyRouteStopDto = exports.UpsertCityReadyRouteStopLocaleDto = 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 ready_route_stop_kind_enum_1 = require("./enum/ready-route-stop-kind.enum");
17
+ class UpsertCityReadyRouteStopLocaleDto {
18
+ }
19
+ exports.UpsertCityReadyRouteStopLocaleDto = UpsertCityReadyRouteStopLocaleDto;
20
+ __decorate([
21
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
22
+ (0, class_transformer_1.Expose)(),
23
+ __metadata("design:type", String)
24
+ ], UpsertCityReadyRouteStopLocaleDto.prototype, "language", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsOptional)(),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", Object)
29
+ ], UpsertCityReadyRouteStopLocaleDto.prototype, "content", 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
+ ], UpsertCityReadyRouteStopLocaleDto.prototype, "guideAudioUrl", void 0);
36
+ __decorate([
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_transformer_1.Type)(() => Number),
39
+ (0, class_validator_1.IsNumber)(),
40
+ (0, class_transformer_1.Expose)(),
41
+ __metadata("design:type", Number)
42
+ ], UpsertCityReadyRouteStopLocaleDto.prototype, "guideAudioDurationSec", void 0);
43
+ class UpsertCityReadyRouteStopDto {
44
+ }
45
+ exports.UpsertCityReadyRouteStopDto = UpsertCityReadyRouteStopDto;
46
+ __decorate([
47
+ (0, class_transformer_1.Type)(() => Number),
48
+ (0, class_validator_1.IsInt)(),
49
+ (0, class_validator_1.Min)(0),
50
+ (0, class_transformer_1.Expose)(),
51
+ __metadata("design:type", Number)
52
+ ], UpsertCityReadyRouteStopDto.prototype, "order", void 0);
53
+ __decorate([
54
+ (0, class_validator_1.IsEnum)(ready_route_stop_kind_enum_1.ReadyRouteStopKindEnum),
55
+ (0, class_transformer_1.Expose)(),
56
+ __metadata("design:type", String)
57
+ ], UpsertCityReadyRouteStopDto.prototype, "kind", void 0);
58
+ __decorate([
59
+ (0, class_validator_1.IsOptional)(),
60
+ (0, class_transformer_1.Type)(() => Number),
61
+ (0, class_validator_1.IsInt)(),
62
+ (0, class_transformer_1.Expose)(),
63
+ __metadata("design:type", Number)
64
+ ], UpsertCityReadyRouteStopDto.prototype, "attractionId", void 0);
65
+ __decorate([
66
+ (0, class_validator_1.IsOptional)(),
67
+ (0, class_transformer_1.Type)(() => Number),
68
+ (0, class_validator_1.IsNumber)(),
69
+ (0, class_transformer_1.Expose)(),
70
+ __metadata("design:type", Number)
71
+ ], UpsertCityReadyRouteStopDto.prototype, "lat", void 0);
72
+ __decorate([
73
+ (0, class_validator_1.IsOptional)(),
74
+ (0, class_transformer_1.Type)(() => Number),
75
+ (0, class_validator_1.IsNumber)(),
76
+ (0, class_transformer_1.Expose)(),
77
+ __metadata("design:type", Number)
78
+ ], UpsertCityReadyRouteStopDto.prototype, "lng", void 0);
79
+ __decorate([
80
+ (0, class_validator_1.IsOptional)(),
81
+ (0, class_validator_1.IsArray)(),
82
+ (0, class_validator_1.ValidateNested)({ each: true }),
83
+ (0, class_transformer_1.Type)(() => UpsertCityReadyRouteStopLocaleDto),
84
+ (0, class_transformer_1.Expose)(),
85
+ __metadata("design:type", Array)
86
+ ], UpsertCityReadyRouteStopDto.prototype, "locales", void 0);
@@ -1,8 +1,9 @@
1
1
  import { AttractionCategoryEnum } from '../../city-attraction/enum/attraction-category.enum';
2
- import { PersonLocaleFact } from '../../city-person/person-locale-fact';
3
2
  import { PersonAttractionRoleEnum } from '../../city-person/enum/person-attraction-role.enum';
4
3
  import { PersonDomainEnum } from '../../city-person/enum/person-domain.enum';
5
4
  import { PersonOccupationEnum } from '../../city-person/enum/person-occupation.enum';
5
+ import { PersonRecognitionEnum } from '../../city-person/enum/person-recognition.enum';
6
+ import { PersonLocaleFact } from '../../city-person/person-locale-fact';
6
7
  /** Карточка личности в списке города. */
7
8
  export type CityPlayerPersonListItemRO = {
8
9
  personId: number;
@@ -11,6 +12,8 @@ export type CityPlayerPersonListItemRO = {
11
12
  photoUrl: string | null;
12
13
  domains: PersonDomainEnum[];
13
14
  occupations: PersonOccupationEnum[];
15
+ /** Узнаваемость туристом без локальной истории. */
16
+ recognition: PersonRecognitionEnum;
14
17
  birthYear: number | null;
15
18
  deathYear: number | null;
16
19
  };
@@ -0,0 +1,57 @@
1
+ import { AttractionContent } from '../../city-attraction/attraction-content';
2
+ export type CityPlayerReadyRouteListItemRO = {
3
+ routeId: number;
4
+ title: string;
5
+ teaser: string | null;
6
+ coverUrl: string | null;
7
+ authorName: string | null;
8
+ authorAvatarUrl: string | null;
9
+ durationFromMinutes: number | null;
10
+ durationToMinutes: number | null;
11
+ distanceKm: number | null;
12
+ stopsCount: number;
13
+ };
14
+ export type CityPlayerReadyRoutesRO = {
15
+ cityId: number;
16
+ city: string;
17
+ routes: CityPlayerReadyRouteListItemRO[];
18
+ };
19
+ export type CityPlayerReadyRouteStopRO = {
20
+ stopId: number;
21
+ order: number;
22
+ kind: 'attraction' | 'waypoint';
23
+ attractionId: number | null;
24
+ title: string | null;
25
+ address: string | null;
26
+ photoUrl: string | null;
27
+ lat: number;
28
+ lng: number;
29
+ blurb: string | null;
30
+ /** Full guide content after unlock; null when locked or waypoint. */
31
+ content: AttractionContent | null;
32
+ /** Озвучка guideTalk стопа (маршрутная, не аудио самой точки). */
33
+ guideAudioUrl: string | null;
34
+ guideAudioDurationSec: number | null;
35
+ };
36
+ export type CityPlayerReadyRouteDetailRO = {
37
+ routeId: number;
38
+ cityId: number;
39
+ city: string;
40
+ title: string;
41
+ teaser: string | null;
42
+ description: string | null;
43
+ coverUrl: string | null;
44
+ authorName: string | null;
45
+ authorAvatarUrl: string | null;
46
+ durationFromMinutes: number | null;
47
+ durationToMinutes: number | null;
48
+ distanceKm: number | null;
49
+ stopsCount: number;
50
+ /** Attraction stops only (waypoints omitted from markers). */
51
+ stops: CityPlayerReadyRouteStopRO[];
52
+ /** Full path including invisible waypoints [lng, lat]. */
53
+ pathPoints: Array<{
54
+ lat: number;
55
+ lng: number;
56
+ }>;
57
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,18 +1,26 @@
1
1
  /**
2
2
  * Полный конвейер обработки города одним фоновым воркером: импорт из
3
3
  * Wikidata → AI-ресёрч по темам → триаж → обогащение → автосвязи →
4
- * тексты EN и RU. Всё, кроме генерации обложек. Запуск только вручную
4
+ * тексты RU (база) и EN. Всё, кроме генерации обложек. Запуск только вручную
5
5
  * по конкретному городу; за раз — одна активная джоба на город.
6
6
  */
7
7
  export declare class StartCityPipelineDto {
8
8
  cityId: number;
9
9
  /** Сколько тем ресёрча планировать (по умолчанию 6). */
10
10
  maxThemes?: number;
11
- /** false — пропустить генерацию русского (по умолчанию генерим EN+RU). */
11
+ /**
12
+ * false — пропустить локализацию EN после RU-базы
13
+ * (по умолчанию генерим RU + EN).
14
+ */
15
+ withEnglish?: boolean;
16
+ /**
17
+ * @deprecated Use withEnglish. Kept for older admin clients:
18
+ * withRussian=false means skip non-base localization (EN).
19
+ */
12
20
  withRussian?: boolean;
13
21
  }
14
22
  export type CityPipelineStatus = 'running' | 'done' | 'failed';
15
- export declare const CITY_PIPELINE_STAGES: readonly ["import-wikidata", "research", "triage", "enrich-attractions", "enrich-persons", "autolink", "content-en", "content-ru"];
23
+ export declare const CITY_PIPELINE_STAGES: readonly ["import-wikidata", "research", "triage", "enrich-attractions", "enrich-persons", "autolink", "content-ru", "content-en"];
16
24
  export type CityPipelineStage = (typeof CITY_PIPELINE_STAGES)[number];
17
25
  /** Итог одного этапа — короткая строка для лога в админке. */
18
26
  export type CityPipelineLogEntry = {
@@ -15,7 +15,7 @@ const class_validator_1 = require("class-validator");
15
15
  /**
16
16
  * Полный конвейер обработки города одним фоновым воркером: импорт из
17
17
  * Wikidata → AI-ресёрч по темам → триаж → обогащение → автосвязи →
18
- * тексты EN и RU. Всё, кроме генерации обложек. Запуск только вручную
18
+ * тексты RU (база) и EN. Всё, кроме генерации обложек. Запуск только вручную
19
19
  * по конкретному городу; за раз — одна активная джоба на город.
20
20
  */
21
21
  class StartCityPipelineDto {
@@ -34,6 +34,12 @@ __decorate([
34
34
  (0, class_transformer_1.Expose)(),
35
35
  __metadata("design:type", Number)
36
36
  ], StartCityPipelineDto.prototype, "maxThemes", void 0);
37
+ __decorate([
38
+ (0, class_validator_1.IsOptional)(),
39
+ (0, class_validator_1.IsBoolean)(),
40
+ (0, class_transformer_1.Expose)(),
41
+ __metadata("design:type", Boolean)
42
+ ], StartCityPipelineDto.prototype, "withEnglish", void 0);
37
43
  __decorate([
38
44
  (0, class_validator_1.IsOptional)(),
39
45
  (0, class_validator_1.IsBoolean)(),
@@ -47,6 +53,6 @@ exports.CITY_PIPELINE_STAGES = [
47
53
  'enrich-attractions',
48
54
  'enrich-persons',
49
55
  'autolink',
50
- 'content-en',
51
56
  'content-ru',
57
+ 'content-en',
52
58
  ];
@@ -18,6 +18,8 @@ export type CityResearchPersonRO = {
18
18
  relation: string;
19
19
  /** Суть связи одним предложением. */
20
20
  detail: string | null;
21
+ /** world = tourist household name; local = everyone else. */
22
+ recognition?: 'world' | 'local' | null;
21
23
  };
22
24
  export type CityResearchItemRO = {
23
25
  title: string;
@@ -0,0 +1,7 @@
1
+ import { Languages } from './enum/languages.enum';
2
+ /**
3
+ * Базовый язык player-контента (описания, guide texts, facts).
4
+ * Модераторы русские → сначала RU, остальные языки локализуются от него.
5
+ * Канонические entity-поля (slug, title/name, tags) остаются на латинице/EN.
6
+ */
7
+ export declare const CONTENT_BASE_LANGUAGE = Languages.RU;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONTENT_BASE_LANGUAGE = void 0;
4
+ const languages_enum_1 = require("./enum/languages.enum");
5
+ /**
6
+ * Базовый язык player-контента (описания, guide texts, facts).
7
+ * Модераторы русские → сначала RU, остальные языки локализуются от него.
8
+ * Канонические entity-поля (slug, title/name, tags) остаются на латинице/EN.
9
+ */
10
+ exports.CONTENT_BASE_LANGUAGE = languages_enum_1.Languages.RU;
@@ -0,0 +1,70 @@
1
+ import { PersonAttractionRoleEnum } from '../city-person/enum/person-attraction-role.enum';
2
+ import { PersonDomainEnum } from '../city-person/enum/person-domain.enum';
3
+ import { PersonOccupationEnum } from '../city-person/enum/person-occupation.enum';
4
+ export declare const EDITORIAL_RESEARCH_PROMPT_VERSION = "editorial-research-v2";
5
+ export type EditorialSource = {
6
+ kind: 'wikipedia' | 'web' | 'wikidata' | 'manual' | 'other';
7
+ title?: string;
8
+ url?: string;
9
+ excerpt?: string;
10
+ };
11
+ export type EditorialPersonHint = {
12
+ name: string;
13
+ relation?: string;
14
+ detail?: string;
15
+ domain?: PersonDomainEnum | null;
16
+ occupation?: PersonOccupationEnum | null;
17
+ /** Matched existing person id when known */
18
+ personId?: number | null;
19
+ };
20
+ export type EditorialPlaceHint = {
21
+ title: string;
22
+ relation?: string;
23
+ detail?: string;
24
+ role?: PersonAttractionRoleEnum | null;
25
+ approxAddress?: string | null;
26
+ /** Matched existing attraction id when known */
27
+ attractionId?: number | null;
28
+ };
29
+ /** Editor-only research pack — never shown in player. */
30
+ export type EditorialResearch = {
31
+ version: 1;
32
+ updatedAt: string;
33
+ promptVersion: string | null;
34
+ cityId?: number | null;
35
+ cityTitle?: string | null;
36
+ sources: EditorialSource[];
37
+ summary: string | null;
38
+ lifeMoments?: string[];
39
+ storyAngles?: string[];
40
+ visitCaveats?: string[];
41
+ peopleHints?: EditorialPersonHint[];
42
+ placeHints?: EditorialPlaceHint[];
43
+ domainHints?: PersonDomainEnum[];
44
+ occupationHints?: PersonOccupationEnum[];
45
+ /** world | local — tourist household-name test. */
46
+ recognitionHint?: 'world' | 'local' | null;
47
+ openQuestions: string[];
48
+ rawNotes: string | null;
49
+ };
50
+ export type DeepenEntityDto = {
51
+ /** Scope city mentions / place proposals (required for useful person deepen). */
52
+ cityId?: number | null;
53
+ /** Create proposed places (city-scoped) / people / links from research. */
54
+ applyProposals?: boolean;
55
+ /** Skip writes except research json (still fills missing via Wikidata when possible). */
56
+ dryRun?: boolean;
57
+ };
58
+ export type DeepenFilledField = 'wikidataId' | 'photos' | 'coordinates' | 'address' | 'district' | 'birthYear' | 'deathYear' | 'occupations' | 'domains' | 'recognition' | 'knownFor' | 'tags';
59
+ export type DeepenApplyStats = {
60
+ placesCreated: number;
61
+ peopleCreated: number;
62
+ linksCreated: number;
63
+ };
64
+ export type DeepenReportRO<TEntity> = {
65
+ entity: TEntity;
66
+ filled: DeepenFilledField[];
67
+ research: EditorialResearch;
68
+ applied: DeepenApplyStats;
69
+ notes: string[];
70
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EDITORIAL_RESEARCH_PROMPT_VERSION = void 0;
4
+ exports.EDITORIAL_RESEARCH_PROMPT_VERSION = 'editorial-research-v2';
@@ -0,0 +1,26 @@
1
+ export type FillCompleteStep = 'enrich' | 'deepen' | 'content-en' | 'content-ru' | 'cover';
2
+ export type FillCompleteStepStatus = 'done' | 'skipped' | 'failed';
3
+ export type FillCompleteStepRO = {
4
+ step: FillCompleteStep;
5
+ status: FillCompleteStepStatus;
6
+ note?: string | null;
7
+ };
8
+ /**
9
+ * Single-entity funnel after a candidate is created (e.g. via deepen apply).
10
+ * Does NOT approve and does NOT create further proposals.
11
+ */
12
+ export declare class FillCompleteDto {
13
+ /** Person deepen focus city; attraction uses its own city when omitted. */
14
+ cityId?: number | null;
15
+ /** Regenerate RU/EN even if locale content already exists. */
16
+ forceContent?: boolean;
17
+ /** Generate AI cover when a reference photo exists (default true). */
18
+ generateCover?: boolean;
19
+ /** Regenerate cover even if an -ai-cover photo is already first. */
20
+ forceCover?: boolean;
21
+ }
22
+ export type FillCompleteReportRO<TEntity> = {
23
+ entity: TEntity;
24
+ steps: FillCompleteStepRO[];
25
+ notes: string[];
26
+ };