@escapenavigator/types 2.0.13 → 2.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dist/city-attraction/attraction-content-languages.d.ts +5 -0
  2. package/dist/city-attraction/attraction-content-languages.js +14 -0
  3. package/dist/city-attraction/attraction-content-prompt-version.d.ts +1 -0
  4. package/dist/city-attraction/attraction-content-prompt-version.js +5 -0
  5. package/dist/city-attraction/attraction-content.d.ts +24 -0
  6. package/dist/city-attraction/attraction-route-meta.d.ts +21 -0
  7. package/dist/city-attraction/attraction-triage.d.ts +29 -0
  8. package/dist/city-attraction/attraction-triage.js +41 -0
  9. package/dist/city-attraction/city-attraction-artifact.ro.d.ts +19 -0
  10. package/dist/city-attraction/city-attraction-artifact.ro.js +2 -0
  11. package/dist/city-attraction/city-attraction-locale.ro.d.ts +15 -0
  12. package/dist/city-attraction/city-attraction-locale.ro.js +2 -0
  13. package/dist/city-attraction/city-attraction.ro.d.ts +49 -0
  14. package/dist/city-attraction/city-attraction.ro.js +2 -0
  15. package/dist/city-attraction/create-city-attraction.dto.d.ts +40 -0
  16. package/dist/city-attraction/create-city-attraction.dto.js +215 -0
  17. package/dist/city-attraction/enum/attraction-artifact-kind.enum.d.ts +13 -0
  18. package/dist/city-attraction/enum/attraction-artifact-kind.enum.js +17 -0
  19. package/dist/city-attraction/enum/attraction-category.enum.d.ts +21 -0
  20. package/dist/city-attraction/enum/attraction-category.enum.js +25 -0
  21. package/dist/city-attraction/enum/attraction-fame.enum.d.ts +10 -0
  22. package/dist/city-attraction/enum/attraction-fame.enum.js +14 -0
  23. package/dist/city-attraction/enum/attraction-fun-fact-kind.enum.d.ts +4 -0
  24. package/dist/city-attraction/enum/attraction-fun-fact-kind.enum.js +8 -0
  25. package/dist/city-attraction/enum/attraction-indoor-outdoor.enum.d.ts +5 -0
  26. package/dist/city-attraction/enum/attraction-indoor-outdoor.enum.js +9 -0
  27. package/dist/city-attraction/enum/attraction-locale-status.enum.d.ts +11 -0
  28. package/dist/city-attraction/enum/attraction-locale-status.enum.js +15 -0
  29. package/dist/city-attraction/enum/attraction-review-status.enum.d.ts +10 -0
  30. package/dist/city-attraction/enum/attraction-review-status.enum.js +14 -0
  31. package/dist/city-attraction/enum/attraction-route-role.enum.d.ts +11 -0
  32. package/dist/city-attraction/enum/attraction-route-role.enum.js +15 -0
  33. package/dist/city-attraction/enum/attraction-source.enum.d.ts +12 -0
  34. package/dist/city-attraction/enum/attraction-source.enum.js +16 -0
  35. package/dist/city-attraction/moderate-city-attraction.dto.d.ts +5 -0
  36. package/dist/{partners-portal/admin/admin-moderate-portal-story.dto.js → city-attraction/moderate-city-attraction.dto.js} +7 -13
  37. package/dist/city-attraction/update-city-attraction.dto.d.ts +5 -0
  38. package/dist/city-attraction/update-city-attraction.dto.js +8 -0
  39. package/dist/city-attraction/upsert-city-attraction-artifact.dto.d.ts +19 -0
  40. package/dist/city-attraction/upsert-city-attraction-artifact.dto.js +104 -0
  41. package/dist/city-attraction/upsert-city-attraction-locale.dto.d.ts +14 -0
  42. package/dist/city-attraction/upsert-city-attraction-locale.dto.js +62 -0
  43. package/dist/city-person/city-person-attraction-link.dto.d.ts +12 -0
  44. package/dist/city-person/city-person-attraction-link.dto.js +61 -0
  45. package/dist/city-person/city-person-attraction-link.ro.d.ts +15 -0
  46. package/dist/city-person/city-person-attraction-link.ro.js +2 -0
  47. package/dist/city-person/city-person-locale.ro.d.ts +15 -0
  48. package/dist/city-person/city-person-locale.ro.js +2 -0
  49. package/dist/city-person/city-person.ro.d.ts +31 -0
  50. package/dist/city-person/city-person.ro.js +2 -0
  51. package/dist/city-person/create-city-person.dto.d.ts +24 -0
  52. package/dist/city-person/create-city-person.dto.js +128 -0
  53. package/dist/city-person/enum/person-attraction-role.enum.d.ts +8 -0
  54. package/dist/city-person/enum/person-attraction-role.enum.js +12 -0
  55. package/dist/city-person/enum/person-domain.enum.d.ts +5 -0
  56. package/dist/city-person/enum/person-domain.enum.js +9 -0
  57. package/dist/city-person/enum/person-fact-kind.enum.d.ts +7 -0
  58. package/dist/city-person/enum/person-fact-kind.enum.js +11 -0
  59. package/dist/city-person/enum/person-locale-status.enum.d.ts +8 -0
  60. package/dist/city-person/enum/person-locale-status.enum.js +12 -0
  61. package/dist/city-person/enum/person-occupation.enum.d.ts +21 -0
  62. package/dist/city-person/enum/person-occupation.enum.js +25 -0
  63. package/dist/city-person/enum/person-source.enum.d.ts +7 -0
  64. package/dist/city-person/enum/person-source.enum.js +11 -0
  65. package/dist/city-person/person-attraction-facts.d.ts +3 -0
  66. package/dist/city-person/person-attraction-facts.js +2 -0
  67. package/dist/city-person/person-content-languages.d.ts +5 -0
  68. package/dist/city-person/person-content-languages.js +14 -0
  69. package/dist/city-person/person-content-prompt-version.d.ts +2 -0
  70. package/dist/city-person/person-content-prompt-version.js +5 -0
  71. package/dist/city-person/person-locale-fact.d.ts +7 -0
  72. package/dist/city-person/person-locale-fact.js +2 -0
  73. package/dist/city-person/update-city-person.dto.d.ts +5 -0
  74. package/dist/city-person/update-city-person.dto.js +8 -0
  75. package/dist/city-person/upsert-city-person-locale.dto.d.ts +21 -0
  76. package/dist/{partners-portal/create-portal-story.dto.js → city-person/upsert-city-person-locale.dto.js} +35 -32
  77. package/dist/city-person/wikidata-autolink.d.ts +23 -0
  78. package/dist/city-person/wikidata-autolink.js +23 -0
  79. package/dist/city-quest/city-quest-content.d.ts +19 -5
  80. package/dist/city-quest/city-quest-locale-content.d.ts +35 -0
  81. package/dist/city-quest/city-quest-locale-content.js +2 -0
  82. package/dist/city-quest/city-quest-locale.ro.d.ts +12 -0
  83. package/dist/city-quest/city-quest-locale.ro.js +2 -0
  84. package/dist/city-quest/city-quest.ro.d.ts +11 -4
  85. package/dist/city-quest/city-quest.ro.js +17 -1
  86. package/dist/city-quest/enum/city-quest-locale-status.enum.d.ts +11 -0
  87. package/dist/city-quest/enum/city-quest-locale-status.enum.js +15 -0
  88. package/dist/city-quest/enum/city-quest-status.enum.d.ts +10 -5
  89. package/dist/city-quest/enum/city-quest-status.enum.js +9 -4
  90. package/dist/city-quest/quest-content-languages.d.ts +5 -0
  91. package/dist/city-quest/quest-content-languages.js +14 -0
  92. package/dist/city-quest/update-city-quest-content.dto.d.ts +5 -0
  93. package/dist/city-quest/update-city-quest-content.dto.js +23 -0
  94. package/dist/city-quest/update-city-quest-stop.dto.d.ts +9 -0
  95. package/dist/city-quest/update-city-quest-stop.dto.js +45 -0
  96. package/dist/city-quest/update-city-quest.dto.d.ts +6 -1
  97. package/dist/city-quest/update-city-quest.dto.js +12 -0
  98. package/dist/city-quest/upsert-city-quest-locale.dto.d.ts +10 -0
  99. package/dist/{partners-portal/update-portal-story.dto.js → city-quest/upsert-city-quest-locale.dto.js} +14 -17
  100. package/dist/google-places/apply-google-places-match.dto.d.ts +4 -0
  101. package/dist/google-places/apply-google-places-match.dto.js +25 -0
  102. package/dist/google-places/google-places-country-stats.ro.d.ts +10 -0
  103. package/dist/google-places/google-places-country-stats.ro.js +45 -0
  104. package/dist/google-places/google-places-match-preview.ro.d.ts +19 -0
  105. package/dist/google-places/google-places-match-preview.ro.js +67 -0
  106. package/dist/google-places/google-places.ro.d.ts +7 -0
  107. package/dist/google-places/google-places.ro.js +25 -1
  108. package/dist/google-places/update-google-places.dto.d.ts +2 -2
  109. package/dist/google-places/update-google-places.dto.js +2 -0
  110. package/dist/openapi/city-player/city-player.ro.d.ts +27 -0
  111. package/dist/openapi/city-player/free-route.d.ts +35 -0
  112. package/dist/openapi/city-player/free-route.js +2 -0
  113. package/dist/openapi/city-quest/play-state.ro.d.ts +15 -0
  114. package/dist/partners-portal/admin/admin-portal-partner.ro.d.ts +3 -3
  115. package/dist/partners-portal/create-partner-attraction.dto.d.ts +33 -0
  116. package/dist/partners-portal/create-partner-attraction.dto.js +173 -0
  117. package/dist/partners-portal/partner-city-quest.dto.d.ts +31 -0
  118. package/dist/partners-portal/partner-city-quest.dto.js +160 -0
  119. package/dist/partners-portal/partner-city-quest.ro.d.ts +11 -0
  120. package/dist/partners-portal/partner-city-quest.ro.js +2 -0
  121. package/dist/partners-portal/portal-stats.ro.d.ts +6 -6
  122. package/dist/partners-portal/update-partner-attraction.dto.d.ts +11 -0
  123. package/dist/partners-portal/update-partner-attraction.dto.js +35 -0
  124. package/dist/shared/ai-cover.d.ts +8 -0
  125. package/dist/shared/ai-cover.js +26 -0
  126. package/dist/shared/city-pipeline.d.ts +40 -0
  127. package/dist/shared/city-pipeline.js +52 -0
  128. package/dist/shared/city-research.d.ts +46 -0
  129. package/dist/shared/city-research.js +49 -0
  130. package/dist/shared/content-batch.d.ts +27 -0
  131. package/dist/shared/content-batch.js +41 -0
  132. package/dist/shared/wikidata-enrichment.d.ts +24 -0
  133. package/dist/shared/wikidata-enrichment.js +31 -0
  134. package/dist/shared/wikidata-import.d.ts +33 -0
  135. package/dist/shared/wikidata-import.js +53 -0
  136. package/dist/tsconfig.build.tsbuildinfo +1 -1
  137. package/dist/upload/enum/image-type.enum.d.ts +3 -1
  138. package/dist/upload/enum/image-type.enum.js +2 -0
  139. package/dist/user/crud/create-user.dto.js +1 -0
  140. package/dist/user/crud/update-user.dto.js +1 -0
  141. package/package.json +2 -2
  142. package/dist/partners-portal/admin/admin-moderate-portal-story.dto.d.ts +0 -8
  143. package/dist/partners-portal/create-portal-story.dto.d.ts +0 -18
  144. package/dist/partners-portal/enum/portal-story-status.enum.d.ts +0 -12
  145. package/dist/partners-portal/enum/portal-story-status.enum.js +0 -16
  146. package/dist/partners-portal/portal-story-step.d.ts +0 -19
  147. package/dist/partners-portal/portal-story.ro.d.ts +0 -19
  148. package/dist/partners-portal/update-portal-story.dto.d.ts +0 -9
  149. /package/dist/{partners-portal/portal-story-step.js → city-attraction/attraction-content.js} +0 -0
  150. /package/dist/{partners-portal/portal-story.ro.js → city-attraction/attraction-route-meta.js} +0 -0
@@ -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
+ };
@@ -0,0 +1,49 @@
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.CityResearchDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /**
16
+ * AI-исследователь города: сильная модель с web search добирает
17
+ * интересные места, личности и связи, которых нет в формальных
18
+ * источниках (Wikidata). Результат — кандидаты в needReview,
19
+ * ничего не публикуется автоматически. Только ручной запуск по городу.
20
+ */
21
+ class CityResearchDto {
22
+ }
23
+ exports.CityResearchDto = CityResearchDto;
24
+ __decorate([
25
+ (0, class_validator_1.IsInt)(),
26
+ (0, class_transformer_1.Expose)(),
27
+ __metadata("design:type", Number)
28
+ ], CityResearchDto.prototype, "cityId", void 0);
29
+ __decorate([
30
+ (0, class_validator_1.IsOptional)(),
31
+ (0, class_validator_1.IsString)(),
32
+ (0, class_validator_1.MaxLength)(120),
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", String)
35
+ ], CityResearchDto.prototype, "focus", void 0);
36
+ __decorate([
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsInt)(),
39
+ (0, class_validator_1.Min)(1),
40
+ (0, class_validator_1.Max)(30),
41
+ (0, class_transformer_1.Expose)(),
42
+ __metadata("design:type", Number)
43
+ ], CityResearchDto.prototype, "limitPlaces", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsBoolean)(),
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", Boolean)
49
+ ], CityResearchDto.prototype, "dryRun", void 0);
@@ -0,0 +1,27 @@
1
+ import { Languages } from './enum/languages.enum';
2
+ /**
3
+ * Ручной batch-прогон AI-генерации локалей. Автозапуска нет — только
4
+ * кнопка в админке; лимит ограничивает стоимость одного вызова.
5
+ * cityId обязателен: идём город за городом, без глобальных прогонов.
6
+ */
7
+ export declare class GenerateContentBatchDto {
8
+ language: Languages;
9
+ /** Сколько записей обработать за вызов. */
10
+ limit?: number;
11
+ cityId: number;
12
+ }
13
+ export type ContentBatchItemRO = {
14
+ id: number;
15
+ title: string;
16
+ action: 'generated' | 'error';
17
+ note: string | null;
18
+ };
19
+ export type ContentBatchReportRO = {
20
+ language: Languages;
21
+ processed: number;
22
+ generated: number;
23
+ errors: number;
24
+ /** Сколько записей ещё ждут генерации этого языка. */
25
+ remaining: number;
26
+ items: ContentBatchItemRO[];
27
+ };
@@ -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.GenerateContentBatchDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const languages_enum_1 = require("./enum/languages.enum");
16
+ /**
17
+ * Ручной batch-прогон AI-генерации локалей. Автозапуска нет — только
18
+ * кнопка в админке; лимит ограничивает стоимость одного вызова.
19
+ * cityId обязателен: идём город за городом, без глобальных прогонов.
20
+ */
21
+ class GenerateContentBatchDto {
22
+ }
23
+ exports.GenerateContentBatchDto = GenerateContentBatchDto;
24
+ __decorate([
25
+ (0, class_validator_1.IsEnum)(languages_enum_1.Languages),
26
+ (0, class_transformer_1.Expose)(),
27
+ __metadata("design:type", String)
28
+ ], GenerateContentBatchDto.prototype, "language", 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)(25),
34
+ (0, class_transformer_1.Expose)(),
35
+ __metadata("design:type", Number)
36
+ ], GenerateContentBatchDto.prototype, "limit", void 0);
37
+ __decorate([
38
+ (0, class_validator_1.IsInt)(),
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", Number)
41
+ ], GenerateContentBatchDto.prototype, "cityId", void 0);
@@ -0,0 +1,24 @@
1
+ /** Batch-обогащение записей из Wikidata (wikidataId, фото, годы жизни). */
2
+ export declare class EnrichWikidataDto {
3
+ /** Сколько записей обработать за один вызов (внешние API — батчами). */
4
+ limit?: number;
5
+ /** Обязателен: идём город за городом, без глобальных прогонов. */
6
+ cityId: number;
7
+ }
8
+ export type WikidataEnrichmentItemRO = {
9
+ id: number;
10
+ title: string;
11
+ /** Что произошло с записью в этом прогоне. */
12
+ action: 'matched' | 'photo-added' | 'enriched' | 'skipped' | 'not-found' | 'ambiguous' | 'error';
13
+ wikidataId: string | null;
14
+ note: string | null;
15
+ };
16
+ export type WikidataEnrichmentReportRO = {
17
+ processed: number;
18
+ wikidataMatched: number;
19
+ photosAdded: number;
20
+ skipped: number;
21
+ /** Осталось необогащённых записей после прогона. */
22
+ remaining: number;
23
+ items: WikidataEnrichmentItemRO[];
24
+ };
@@ -0,0 +1,31 @@
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.EnrichWikidataDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /** Batch-обогащение записей из Wikidata (wikidataId, фото, годы жизни). */
16
+ class EnrichWikidataDto {
17
+ }
18
+ exports.EnrichWikidataDto = EnrichWikidataDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsOptional)(),
21
+ (0, class_validator_1.IsInt)(),
22
+ (0, class_validator_1.Min)(1),
23
+ (0, class_validator_1.Max)(100),
24
+ (0, class_transformer_1.Expose)(),
25
+ __metadata("design:type", Number)
26
+ ], EnrichWikidataDto.prototype, "limit", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsInt)(),
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", Number)
31
+ ], EnrichWikidataDto.prototype, "cityId", void 0);
@@ -0,0 +1,33 @@
1
+ /** Импорт кандидатов (атракшены + личности) города из Wikidata SPARQL. */
2
+ export declare class WikidataCityImportDto {
3
+ cityId: number;
4
+ /** Радиус поиска от центра города, км. */
5
+ radiusKm?: number;
6
+ limitAttractions?: number;
7
+ limitPersons?: number;
8
+ /** true — только показать кандидатов, ничего не сохранять. */
9
+ dryRun?: boolean;
10
+ }
11
+ export type WikidataImportCandidateRO = {
12
+ wikidataId: string;
13
+ title: string;
14
+ kind: 'attraction' | 'person';
15
+ /** Наша категория (атракшен) или годы жизни (личность). */
16
+ detail: string | null;
17
+ /** Число языковых разделов Wikipedia — прокси известности. */
18
+ sitelinks: number;
19
+ hasPhoto: boolean;
20
+ action: 'created' | 'exists' | 'dry-run' | 'skipped';
21
+ note: string | null;
22
+ };
23
+ export type WikidataCityImportReportRO = {
24
+ cityId: number;
25
+ city: string;
26
+ dryRun: boolean;
27
+ attractionsFound: number;
28
+ attractionsCreated: number;
29
+ personsFound: number;
30
+ personsCreated: number;
31
+ skippedExisting: number;
32
+ items: WikidataImportCandidateRO[];
33
+ };
@@ -0,0 +1,53 @@
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.WikidataCityImportDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /** Импорт кандидатов (атракшены + личности) города из Wikidata SPARQL. */
16
+ class WikidataCityImportDto {
17
+ }
18
+ exports.WikidataCityImportDto = WikidataCityImportDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsInt)(),
21
+ (0, class_transformer_1.Expose)(),
22
+ __metadata("design:type", Number)
23
+ ], WikidataCityImportDto.prototype, "cityId", void 0);
24
+ __decorate([
25
+ (0, class_validator_1.IsOptional)(),
26
+ (0, class_validator_1.IsInt)(),
27
+ (0, class_validator_1.Min)(1),
28
+ (0, class_validator_1.Max)(15),
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", Number)
31
+ ], WikidataCityImportDto.prototype, "radiusKm", void 0);
32
+ __decorate([
33
+ (0, class_validator_1.IsOptional)(),
34
+ (0, class_validator_1.IsInt)(),
35
+ (0, class_validator_1.Min)(1),
36
+ (0, class_validator_1.Max)(200),
37
+ (0, class_transformer_1.Expose)(),
38
+ __metadata("design:type", Number)
39
+ ], WikidataCityImportDto.prototype, "limitAttractions", void 0);
40
+ __decorate([
41
+ (0, class_validator_1.IsOptional)(),
42
+ (0, class_validator_1.IsInt)(),
43
+ (0, class_validator_1.Min)(0),
44
+ (0, class_validator_1.Max)(100),
45
+ (0, class_transformer_1.Expose)(),
46
+ __metadata("design:type", Number)
47
+ ], WikidataCityImportDto.prototype, "limitPersons", void 0);
48
+ __decorate([
49
+ (0, class_validator_1.IsOptional)(),
50
+ (0, class_validator_1.IsBoolean)(),
51
+ (0, class_transformer_1.Expose)(),
52
+ __metadata("design:type", Boolean)
53
+ ], WikidataCityImportDto.prototype, "dryRun", void 0);