@escapenavigator/types 2.0.14 → 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.
- 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/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/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/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/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
|
@@ -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
|
+
};
|
|
@@ -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
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/** Total games granted for the
|
|
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-
|
|
37
|
-
|
|
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);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Полный конвейер обработки города одним фоновым воркером: импорт из
|
|
3
|
+
* Wikidata → AI-ресёрч по темам → триаж → обогащение → автосвязи →
|
|
4
|
+
* тексты EN и RU. Всё, кроме генерации обложек. Запуск только вручную
|
|
5
|
+
* по конкретному городу; за раз — одна активная джоба на город.
|
|
6
|
+
*/
|
|
7
|
+
export declare class StartCityPipelineDto {
|
|
8
|
+
cityId: number;
|
|
9
|
+
/** Сколько тем ресёрча планировать (по умолчанию 6). */
|
|
10
|
+
maxThemes?: number;
|
|
11
|
+
/** false — пропустить генерацию русского (по умолчанию генерим EN+RU). */
|
|
12
|
+
withRussian?: boolean;
|
|
13
|
+
}
|
|
14
|
+
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"];
|
|
16
|
+
export type CityPipelineStage = (typeof CITY_PIPELINE_STAGES)[number];
|
|
17
|
+
/** Итог одного этапа — короткая строка для лога в админке. */
|
|
18
|
+
export type CityPipelineLogEntry = {
|
|
19
|
+
stage: CityPipelineStage;
|
|
20
|
+
/** Человекочитаемый итог («+38 places, +12 persons»). */
|
|
21
|
+
summary: string;
|
|
22
|
+
/** null — этап прошёл; строка — этап упал, но конвейер продолжился. */
|
|
23
|
+
error: string | null;
|
|
24
|
+
durationMs: number;
|
|
25
|
+
};
|
|
26
|
+
export type CityPipelineRunRO = {
|
|
27
|
+
id: number;
|
|
28
|
+
cityId: number;
|
|
29
|
+
city: string;
|
|
30
|
+
status: CityPipelineStatus;
|
|
31
|
+
/** Текущий этап (для running) либо последний выполненный. */
|
|
32
|
+
stage: CityPipelineStage | null;
|
|
33
|
+
/** Прогресс внутри этапа («theme 3/6: coffeehouse culture»). */
|
|
34
|
+
stageDetail: string | null;
|
|
35
|
+
log: CityPipelineLogEntry[];
|
|
36
|
+
/** Фатальная ошибка, остановившая конвейер (status=failed). */
|
|
37
|
+
error: string | null;
|
|
38
|
+
startedAt: string;
|
|
39
|
+
finishedAt: string | null;
|
|
40
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
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.CITY_PIPELINE_STAGES = exports.StartCityPipelineDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/**
|
|
16
|
+
* Полный конвейер обработки города одним фоновым воркером: импорт из
|
|
17
|
+
* Wikidata → AI-ресёрч по темам → триаж → обогащение → автосвязи →
|
|
18
|
+
* тексты EN и RU. Всё, кроме генерации обложек. Запуск только вручную
|
|
19
|
+
* по конкретному городу; за раз — одна активная джоба на город.
|
|
20
|
+
*/
|
|
21
|
+
class StartCityPipelineDto {
|
|
22
|
+
}
|
|
23
|
+
exports.StartCityPipelineDto = StartCityPipelineDto;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsInt)(),
|
|
26
|
+
(0, class_transformer_1.Expose)(),
|
|
27
|
+
__metadata("design:type", Number)
|
|
28
|
+
], StartCityPipelineDto.prototype, "cityId", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_validator_1.IsOptional)(),
|
|
31
|
+
(0, class_validator_1.IsInt)(),
|
|
32
|
+
(0, class_validator_1.Min)(1),
|
|
33
|
+
(0, class_validator_1.Max)(10),
|
|
34
|
+
(0, class_transformer_1.Expose)(),
|
|
35
|
+
__metadata("design:type", Number)
|
|
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, "withRussian", void 0);
|
|
43
|
+
exports.CITY_PIPELINE_STAGES = [
|
|
44
|
+
'import-wikidata',
|
|
45
|
+
'research',
|
|
46
|
+
'triage',
|
|
47
|
+
'enrich-attractions',
|
|
48
|
+
'enrich-persons',
|
|
49
|
+
'autolink',
|
|
50
|
+
'content-en',
|
|
51
|
+
'content-ru',
|
|
52
|
+
];
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-исследователь города: сильная модель с web search добирает
|
|
3
|
+
* интересные места, личности и связи, которых нет в формальных
|
|
4
|
+
* источниках (Wikidata). Результат — кандидаты в needReview,
|
|
5
|
+
* ничего не публикуется автоматически. Только ручной запуск по городу.
|
|
6
|
+
*/
|
|
7
|
+
export declare class CityResearchDto {
|
|
8
|
+
cityId: number;
|
|
9
|
+
/** Опциональный фокус: район или тема («coffeehouse writers», «Leopoldstadt»). */
|
|
10
|
+
focus?: string;
|
|
11
|
+
limitPlaces?: number;
|
|
12
|
+
/** true — только показать кандидатов, ничего не сохранять. */
|
|
13
|
+
dryRun?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export type CityResearchPersonRO = {
|
|
16
|
+
name: string;
|
|
17
|
+
/** lived / performed / created / buried / studied / depicted. */
|
|
18
|
+
relation: string;
|
|
19
|
+
/** Суть связи одним предложением. */
|
|
20
|
+
detail: string | null;
|
|
21
|
+
};
|
|
22
|
+
export type CityResearchItemRO = {
|
|
23
|
+
title: string;
|
|
24
|
+
/** Чем место интересно — зацепка будущей истории. */
|
|
25
|
+
storyHook: string;
|
|
26
|
+
category: string;
|
|
27
|
+
approxAddress: string | null;
|
|
28
|
+
/** 0–1: уверенность модели, что факты проверяемы. */
|
|
29
|
+
confidence: number;
|
|
30
|
+
persons: CityResearchPersonRO[];
|
|
31
|
+
geocoded: boolean;
|
|
32
|
+
action: 'created' | 'exists' | 'dry-run' | 'skipped';
|
|
33
|
+
note: string | null;
|
|
34
|
+
};
|
|
35
|
+
export type CityResearchReportRO = {
|
|
36
|
+
cityId: number;
|
|
37
|
+
city: string;
|
|
38
|
+
dryRun: boolean;
|
|
39
|
+
focus: string | null;
|
|
40
|
+
placesFound: number;
|
|
41
|
+
placesCreated: number;
|
|
42
|
+
personsCreated: number;
|
|
43
|
+
linksCreated: number;
|
|
44
|
+
skippedExisting: number;
|
|
45
|
+
items: CityResearchItemRO[];
|
|
46
|
+
};
|