@escapenavigator/types 2.0.30 → 2.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/certificate-sale/create-certificatesale.dto.d.ts +4 -4
- package/dist/certificate-sale/create-certificatesale.dto.js +4 -4
- package/dist/google-calendar/initial-google-calendar.ro.d.ts +4 -0
- package/dist/google-calendar/initial-google-calendar.ro.js +8 -0
- package/dist/openapi/profiles/openapi-profile-booking-list-item.ro.d.ts +2 -0
- package/dist/openapi/profiles/openapi-profile-booking-list-item.ro.js +16 -0
- package/dist/order/order.ro.d.ts +7 -0
- package/dist/order/order.ro.js +8 -0
- package/dist/parse-results/parse-result-payload.d.ts +30 -2
- package/dist/parse-results/parse-result.ro.d.ts +3 -0
- package/dist/parse-results/parse-result.ro.js +9 -0
- package/dist/questroom/create-questroom-admin.dto.js +5 -4
- package/dist/questroom/create-questroom.dto.js +5 -4
- package/dist/role/create-role.dto.d.ts +1 -0
- package/dist/role/create-role.dto.js +6 -0
- package/dist/role/role.ro.d.ts +1 -0
- package/dist/role/role.ro.js +4 -0
- package/dist/slot/enum/slot-staff-policy.enum.d.ts +13 -0
- package/dist/slot/enum/slot-staff-policy.enum.js +17 -0
- package/dist/slot/set-slot-resource-override.dto.d.ts +7 -0
- package/dist/slot/set-slot-resource-override.dto.js +24 -0
- package/dist/slot/slot.ro.d.ts +11 -0
- package/dist/slot-rule/create-rule.dto.d.ts +2 -0
- package/dist/slot-rule/create-rule.dto.js +8 -0
- package/dist/slot-rule/defailt-rule.d.ts +2 -0
- package/dist/slot-rule/defailt-rule.js +2 -0
- package/dist/slot-rule/rule.ro.d.ts +2 -0
- package/dist/slot-rule/rule.ro.js +5 -0
- package/dist/statistics/certificates.d.ts +9 -5
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/upselling/create-upselling.dto.d.ts +3 -0
- package/dist/upselling/create-upselling.dto.js +8 -0
- package/dist/upselling/enum/upselling-icon.enum.d.ts +23 -0
- package/dist/upselling/enum/upselling-icon.enum.js +27 -0
- package/dist/upselling/upselling.ro.d.ts +2 -0
- package/dist/upselling/upselling.ro.js +5 -0
- package/dist/user/task/user-task.ro.d.ts +1 -0
- package/dist/user/task/user-task.ro.js +4 -0
- package/package.json +2 -2
|
@@ -2,10 +2,10 @@ import { CertificatesaleDeliveryTypeEnum } from './enum/certificatesales-deliver
|
|
|
2
2
|
/**
|
|
3
3
|
* Payload для ручного оформления продажи сертификата сотрудником из app.
|
|
4
4
|
* После миграции на v2-магазин продажа создаётся из `designId` + либо
|
|
5
|
-
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная
|
|
6
|
-
*
|
|
7
|
-
* существующий клиент (`clientId`), а `cashboxId`
|
|
8
|
-
* сертификат оплаченным через офлайн-кассу.
|
|
5
|
+
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная сумма;
|
|
6
|
+
* в CRM доступна всегда, без `settings.allowFreeNominal`). В отличие от
|
|
7
|
+
* виджета покупатель — это существующий клиент (`clientId`), а `cashboxId`
|
|
8
|
+
* позволяет сразу отметить сертификат оплаченным через офлайн-кассу.
|
|
9
9
|
*/
|
|
10
10
|
export declare class CreateCertificatesaleDto {
|
|
11
11
|
clientId: number;
|
|
@@ -17,10 +17,10 @@ const certificatesales_delivery_type_enum_1 = require("./enum/certificatesales-d
|
|
|
17
17
|
/**
|
|
18
18
|
* Payload для ручного оформления продажи сертификата сотрудником из app.
|
|
19
19
|
* После миграции на v2-магазин продажа создаётся из `designId` + либо
|
|
20
|
-
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная
|
|
21
|
-
*
|
|
22
|
-
* существующий клиент (`clientId`), а `cashboxId`
|
|
23
|
-
* сертификат оплаченным через офлайн-кассу.
|
|
20
|
+
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная сумма;
|
|
21
|
+
* в CRM доступна всегда, без `settings.allowFreeNominal`). В отличие от
|
|
22
|
+
* виджета покупатель — это существующий клиент (`clientId`), а `cashboxId`
|
|
23
|
+
* позволяет сразу отметить сертификат оплаченным через офлайн-кассу.
|
|
24
24
|
*/
|
|
25
25
|
class CreateCertificatesaleDto {
|
|
26
26
|
}
|
|
@@ -2,4 +2,8 @@ export declare class InitialGoogleCalendarRO {
|
|
|
2
2
|
calendarId: string;
|
|
3
3
|
title: string;
|
|
4
4
|
token: string;
|
|
5
|
+
/** Уже есть живая интеграция с этим calendarId — повторно создавать нельзя. */
|
|
6
|
+
alreadyConnected: boolean;
|
|
7
|
+
/** Есть запись с disconnectedAt — это путь «Переподключить». */
|
|
8
|
+
canReconnect: boolean;
|
|
5
9
|
}
|
|
@@ -26,3 +26,11 @@ __decorate([
|
|
|
26
26
|
(0, class_transformer_1.Expose)(),
|
|
27
27
|
__metadata("design:type", String)
|
|
28
28
|
], InitialGoogleCalendarRO.prototype, "token", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_transformer_1.Expose)(),
|
|
31
|
+
__metadata("design:type", Boolean)
|
|
32
|
+
], InitialGoogleCalendarRO.prototype, "alreadyConnected", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_transformer_1.Expose)(),
|
|
35
|
+
__metadata("design:type", Boolean)
|
|
36
|
+
], InitialGoogleCalendarRO.prototype, "canReconnect", void 0);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Utm } from '../../order/order.ro';
|
|
1
2
|
import { ProfileCurrencyEnum } from '../../profile/enum/profile-currency';
|
|
2
3
|
import { SourceEnum } from '../../shared/source.enum';
|
|
3
4
|
export declare class OpenapiProfileBookingQuestroomRO {
|
|
@@ -23,6 +24,7 @@ export declare class OpenapiProfileBookingListItemRO {
|
|
|
23
24
|
toPay: number;
|
|
24
25
|
currency: ProfileCurrencyEnum;
|
|
25
26
|
source: SourceEnum;
|
|
27
|
+
utm: Utm | null;
|
|
26
28
|
confirmed: boolean;
|
|
27
29
|
createdAt: Date;
|
|
28
30
|
client: OpenapiProfileBookingClientRO | null;
|
|
@@ -14,6 +14,7 @@ exports.OpenapiProfileBookingListItemRO = exports.OpenapiProfileBookingClientRO
|
|
|
14
14
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
15
15
|
const swagger_1 = require("@nestjs/swagger");
|
|
16
16
|
const class_transformer_1 = require("class-transformer");
|
|
17
|
+
const order_ro_1 = require("../../order/order.ro");
|
|
17
18
|
const profile_currency_1 = require("../../profile/enum/profile-currency");
|
|
18
19
|
const source_enum_1 = require("../../shared/source.enum");
|
|
19
20
|
class OpenapiProfileBookingQuestroomRO {
|
|
@@ -144,6 +145,21 @@ __decorate([
|
|
|
144
145
|
}),
|
|
145
146
|
__metadata("design:type", String)
|
|
146
147
|
], OpenapiProfileBookingListItemRO.prototype, "source", void 0);
|
|
148
|
+
__decorate([
|
|
149
|
+
(0, class_transformer_1.Expose)(),
|
|
150
|
+
(0, class_transformer_1.Type)(() => order_ro_1.Utm),
|
|
151
|
+
(0, swagger_1.ApiProperty)({
|
|
152
|
+
type: () => order_ro_1.Utm,
|
|
153
|
+
nullable: true,
|
|
154
|
+
description: 'UTM attribution captured at booking time (utm_source / utm_medium / utm_campaign / …). Null when none were set.',
|
|
155
|
+
example: {
|
|
156
|
+
utmSource: 'google',
|
|
157
|
+
utmMedium: 'cpc',
|
|
158
|
+
utmCampaign: 'spring_sale',
|
|
159
|
+
},
|
|
160
|
+
}),
|
|
161
|
+
__metadata("design:type", order_ro_1.Utm)
|
|
162
|
+
], OpenapiProfileBookingListItemRO.prototype, "utm", void 0);
|
|
147
163
|
__decorate([
|
|
148
164
|
(0, class_transformer_1.Expose)(),
|
|
149
165
|
(0, swagger_1.ApiProperty)({ example: true, description: 'Whether the booking is confirmed.' }),
|
package/dist/order/order.ro.d.ts
CHANGED
|
@@ -95,6 +95,8 @@ declare class Upsellings extends RO {
|
|
|
95
95
|
userId: number;
|
|
96
96
|
count: number;
|
|
97
97
|
nonRefundable: boolean;
|
|
98
|
+
/** Снимок иконки каталога на момент добавления в заказ. */
|
|
99
|
+
icon?: string | null;
|
|
98
100
|
}
|
|
99
101
|
declare class Participant {
|
|
100
102
|
id: number;
|
|
@@ -211,6 +213,11 @@ export declare class OrderRO extends RO {
|
|
|
211
213
|
certificateTotal: number;
|
|
212
214
|
/** Сумма допуслуг (Σ amount × count). Денорм для бейджа на слоте. */
|
|
213
215
|
upsellingsTotal: number;
|
|
216
|
+
/**
|
|
217
|
+
* Уникальные иконки допуслуг (снимки OrderUpselling.icon).
|
|
218
|
+
* Денорм для бейджей на слоте без JOIN к order-upsellings.
|
|
219
|
+
*/
|
|
220
|
+
upsellingIcons: string[];
|
|
214
221
|
/** Проблема доставки письма клиенту (красный имейл-бейдж на слоте). */
|
|
215
222
|
emailTrouble: boolean;
|
|
216
223
|
refundedAmount: number;
|
package/dist/order/order.ro.js
CHANGED
|
@@ -250,6 +250,10 @@ __decorate([
|
|
|
250
250
|
(0, class_transformer_1.Expose)(),
|
|
251
251
|
__metadata("design:type", Boolean)
|
|
252
252
|
], Upsellings.prototype, "nonRefundable", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
(0, class_transformer_1.Expose)(),
|
|
255
|
+
__metadata("design:type", String)
|
|
256
|
+
], Upsellings.prototype, "icon", void 0);
|
|
253
257
|
class Participant {
|
|
254
258
|
}
|
|
255
259
|
__decorate([
|
|
@@ -506,6 +510,10 @@ __decorate([
|
|
|
506
510
|
(0, class_transformer_1.Expose)(),
|
|
507
511
|
__metadata("design:type", Number)
|
|
508
512
|
], OrderRO.prototype, "upsellingsTotal", void 0);
|
|
513
|
+
__decorate([
|
|
514
|
+
(0, class_transformer_1.Expose)(),
|
|
515
|
+
__metadata("design:type", Array)
|
|
516
|
+
], OrderRO.prototype, "upsellingIcons", void 0);
|
|
509
517
|
__decorate([
|
|
510
518
|
(0, class_transformer_1.Expose)(),
|
|
511
519
|
__metadata("design:type", Boolean)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { QuestroomTypeEnum } from '../questroom/enum/questroom-type.enum';
|
|
2
|
+
import { TagsEnum } from '../shared/enum/tags.enum';
|
|
2
3
|
/** Кандидат матча для модератора (локация или квест). */
|
|
3
4
|
export type ParseMatchCandidate = {
|
|
4
5
|
id: number;
|
|
@@ -14,12 +15,27 @@ export type ParsedQuest = {
|
|
|
14
15
|
playersMax?: number;
|
|
15
16
|
/** Длительность, минуты. */
|
|
16
17
|
time?: number;
|
|
17
|
-
/** Сложность 1-6. */
|
|
18
|
+
/** Сложность 1-6 (после пересчёта из шкалы сайта). */
|
|
18
19
|
difficult?: number;
|
|
19
|
-
/**
|
|
20
|
+
/** Оценка сложности как она указана на сайте (например 4 из 5). */
|
|
21
|
+
difficultRaw?: number;
|
|
22
|
+
/** Максимум шкалы сложности сайта (5 в примере выше). */
|
|
23
|
+
difficultScale?: number;
|
|
24
|
+
/** Страх 1-5 (после пересчёта из шкалы сайта). */
|
|
20
25
|
fear?: number;
|
|
26
|
+
/** Оценка «страшности» как она указана на сайте. */
|
|
27
|
+
fearRaw?: number;
|
|
28
|
+
/** Максимум шкалы страха сайта. */
|
|
29
|
+
fearScale?: number;
|
|
30
|
+
/** Возраст, приведённый к разрешённым в форме значениям. */
|
|
21
31
|
minAge?: number;
|
|
32
|
+
/** Возраст, как он написан на сайте (до приведения к лестнице). */
|
|
33
|
+
minAgeRaw?: number;
|
|
22
34
|
type?: QuestroomTypeEnum;
|
|
35
|
+
/** Тематические теги квеста. */
|
|
36
|
+
tags?: TagsEnum[];
|
|
37
|
+
/** Важная информация для посетителей (ограничения, что взять с собой). */
|
|
38
|
+
importantInfo?: string;
|
|
23
39
|
/** URL фото с сайта-источника (в S3 загружаются при применении). */
|
|
24
40
|
photos?: string[];
|
|
25
41
|
/** URL страницы квеста. */
|
|
@@ -33,6 +49,12 @@ export type ParsedQuest = {
|
|
|
33
49
|
};
|
|
34
50
|
export type ParsedLocation = {
|
|
35
51
|
address: string;
|
|
52
|
+
/**
|
|
53
|
+
* Город площадки. У сетевых компаний адрес на городской подстранице часто
|
|
54
|
+
* написан без города, а без него геокодер уводит локацию в другой город.
|
|
55
|
+
*/
|
|
56
|
+
city?: string;
|
|
57
|
+
postalCode?: string;
|
|
36
58
|
phone?: string;
|
|
37
59
|
/** ID существующей локации, если сматчена по координатам/адресу. */
|
|
38
60
|
matchedLocationId?: number;
|
|
@@ -61,6 +83,12 @@ export type ParseDiffOperation = {
|
|
|
61
83
|
from: unknown;
|
|
62
84
|
to: unknown;
|
|
63
85
|
}>;
|
|
86
|
+
/**
|
|
87
|
+
* Поля из changes, которые применять не нужно. Переименование квеста и
|
|
88
|
+
* замена легенды попадают сюда сразу: это подсказка модератору, а не
|
|
89
|
+
* автоматическое действие.
|
|
90
|
+
*/
|
|
91
|
+
excludedFields?: string[];
|
|
64
92
|
/** Исключена модератором из Apply. */
|
|
65
93
|
excluded?: boolean;
|
|
66
94
|
/** Score матча (если применимо). */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CountriesEnum } from '../shared/enum/countries.enum';
|
|
1
2
|
import { ParseDiffOperation, ParseResultPayload } from './parse-result-payload';
|
|
2
3
|
import { ParseResultSourceEnum } from './parse-result-source.enum';
|
|
3
4
|
import { ParseResultStatusEnum } from './parse-result-status.enum';
|
|
@@ -5,6 +6,8 @@ declare class ParseResultProfile {
|
|
|
5
6
|
id: number;
|
|
6
7
|
title: string;
|
|
7
8
|
site: string;
|
|
9
|
+
country: CountriesEnum;
|
|
10
|
+
mainEmail: string;
|
|
8
11
|
}
|
|
9
12
|
export declare class ParseResultRO {
|
|
10
13
|
id: number;
|
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.ParseResultRO = void 0;
|
|
13
13
|
/* eslint-disable max-classes-per-file */
|
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const countries_enum_1 = require("../shared/enum/countries.enum");
|
|
15
16
|
const parse_result_source_enum_1 = require("./parse-result-source.enum");
|
|
16
17
|
const parse_result_status_enum_1 = require("./parse-result-status.enum");
|
|
17
18
|
class ParseResultProfile {
|
|
@@ -28,6 +29,14 @@ __decorate([
|
|
|
28
29
|
(0, class_transformer_1.Expose)(),
|
|
29
30
|
__metadata("design:type", String)
|
|
30
31
|
], ParseResultProfile.prototype, "site", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_transformer_1.Expose)(),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], ParseResultProfile.prototype, "country", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], ParseResultProfile.prototype, "mainEmail", void 0);
|
|
31
40
|
class ParseResultRO {
|
|
32
41
|
}
|
|
33
42
|
exports.ParseResultRO = ParseResultRO;
|
|
@@ -87,7 +87,7 @@ __decorate([
|
|
|
87
87
|
(0, class_validator_1.IsPositive)(),
|
|
88
88
|
(0, class_validator_1.Max)(6),
|
|
89
89
|
(0, class_validator_1.Min)(1),
|
|
90
|
-
(0, class_transformer_1.Transform)(({ value }) => value
|
|
90
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 6),
|
|
91
91
|
(0, class_transformer_1.Expose)(),
|
|
92
92
|
__metadata("design:type", Number)
|
|
93
93
|
], CreateQuestroomAdminDto.prototype, "difficult", void 0);
|
|
@@ -96,21 +96,22 @@ __decorate([
|
|
|
96
96
|
(0, class_validator_1.IsPositive)(),
|
|
97
97
|
(0, class_validator_1.Max)(5),
|
|
98
98
|
(0, class_validator_1.Min)(1),
|
|
99
|
-
(0, class_transformer_1.Transform)(({ value }) => value
|
|
99
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 1),
|
|
100
100
|
(0, class_transformer_1.Expose)(),
|
|
101
101
|
__metadata("design:type", Number)
|
|
102
102
|
], CreateQuestroomAdminDto.prototype, "fear", void 0);
|
|
103
103
|
__decorate([
|
|
104
104
|
(0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
|
|
105
105
|
(0, class_validator_1.IsInt)(),
|
|
106
|
-
(0,
|
|
106
|
+
(0, class_validator_1.Min)(0),
|
|
107
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 12),
|
|
107
108
|
(0, class_transformer_1.Expose)(),
|
|
108
109
|
__metadata("design:type", Number)
|
|
109
110
|
], CreateQuestroomAdminDto.prototype, "minAge", void 0);
|
|
110
111
|
__decorate([
|
|
111
112
|
(0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
|
|
112
113
|
(0, class_validator_1.IsPositive)(),
|
|
113
|
-
(0, class_transformer_1.Transform)(({ value }) => value
|
|
114
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 60),
|
|
114
115
|
(0, class_transformer_1.Expose)(),
|
|
115
116
|
__metadata("design:type", Number)
|
|
116
117
|
], CreateQuestroomAdminDto.prototype, "time", void 0);
|
|
@@ -122,7 +122,7 @@ __decorate([
|
|
|
122
122
|
(0, class_validator_1.IsPositive)(),
|
|
123
123
|
(0, class_validator_1.Max)(6),
|
|
124
124
|
(0, class_validator_1.Min)(1),
|
|
125
|
-
(0, class_transformer_1.Transform)(({ value }) => value
|
|
125
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 6),
|
|
126
126
|
(0, class_transformer_1.Expose)(),
|
|
127
127
|
__metadata("design:type", Number)
|
|
128
128
|
], CreateQuestroomDto.prototype, "difficult", void 0);
|
|
@@ -131,14 +131,15 @@ __decorate([
|
|
|
131
131
|
(0, class_validator_1.IsPositive)(),
|
|
132
132
|
(0, class_validator_1.Max)(5),
|
|
133
133
|
(0, class_validator_1.Min)(1),
|
|
134
|
-
(0, class_transformer_1.Transform)(({ value }) => value
|
|
134
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 1),
|
|
135
135
|
(0, class_transformer_1.Expose)(),
|
|
136
136
|
__metadata("design:type", Number)
|
|
137
137
|
], CreateQuestroomDto.prototype, "fear", void 0);
|
|
138
138
|
__decorate([
|
|
139
139
|
(0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
|
|
140
140
|
(0, class_validator_1.IsInt)(),
|
|
141
|
-
(0,
|
|
141
|
+
(0, class_validator_1.Min)(0),
|
|
142
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 12),
|
|
142
143
|
(0, class_transformer_1.Expose)(),
|
|
143
144
|
__metadata("design:type", Number)
|
|
144
145
|
], CreateQuestroomDto.prototype, "minAge", void 0);
|
|
@@ -194,7 +195,7 @@ __decorate([
|
|
|
194
195
|
__decorate([
|
|
195
196
|
(0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
|
|
196
197
|
(0, class_validator_1.IsPositive)(),
|
|
197
|
-
(0, class_transformer_1.Transform)(({ value }) => value
|
|
198
|
+
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : 60),
|
|
198
199
|
(0, class_transformer_1.Expose)(),
|
|
199
200
|
__metadata("design:type", Number)
|
|
200
201
|
], CreateQuestroomDto.prototype, "time", void 0);
|
|
@@ -129,6 +129,12 @@ __decorate([
|
|
|
129
129
|
(0, class_transformer_1.Expose)(),
|
|
130
130
|
__metadata("design:type", Boolean)
|
|
131
131
|
], CreateRoleDto.prototype, "canDeleteFines", void 0);
|
|
132
|
+
__decorate([
|
|
133
|
+
(0, class_validator_1.IsBoolean)(),
|
|
134
|
+
(0, class_transformer_1.Transform)(({ value }) => (value !== undefined ? value : false)),
|
|
135
|
+
(0, class_transformer_1.Expose)(),
|
|
136
|
+
__metadata("design:type", Boolean)
|
|
137
|
+
], CreateRoleDto.prototype, "canDeleteComments", void 0);
|
|
132
138
|
__decorate([
|
|
133
139
|
(0, class_validator_1.IsBoolean)(),
|
|
134
140
|
(0, class_transformer_1.Transform)(({ value }) => (value !== undefined ? value : false)),
|
package/dist/role/role.ro.d.ts
CHANGED
package/dist/role/role.ro.js
CHANGED
|
@@ -83,6 +83,10 @@ __decorate([
|
|
|
83
83
|
(0, class_transformer_1.Expose)(),
|
|
84
84
|
__metadata("design:type", Boolean)
|
|
85
85
|
], RoleRO.prototype, "canDeleteFines", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, class_transformer_1.Expose)(),
|
|
88
|
+
__metadata("design:type", Boolean)
|
|
89
|
+
], RoleRO.prototype, "canDeleteComments", void 0);
|
|
86
90
|
__decorate([
|
|
87
91
|
(0, class_transformer_1.Expose)(),
|
|
88
92
|
__metadata("design:type", Boolean)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Что делать со слотом, если ни одна смена сотрудника на локации его не
|
|
3
|
+
* покрывает. В отличие от окон `minMinutesForBooking`/`blockingMinutes`
|
|
4
|
+
* действует на всём горизонте календаря, а не только перед началом игры.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum SlotStaffPolicyEnum {
|
|
7
|
+
/** Смены не влияют на доступность слота. */
|
|
8
|
+
OFF = "off",
|
|
9
|
+
/** Без смены слот доступен только по телефону. */
|
|
10
|
+
PHONE = "phone",
|
|
11
|
+
/** Без смены онлайн-бронь закрыта. */
|
|
12
|
+
CLOSED = "closed"
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlotStaffPolicyEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Что делать со слотом, если ни одна смена сотрудника на локации его не
|
|
6
|
+
* покрывает. В отличие от окон `minMinutesForBooking`/`blockingMinutes`
|
|
7
|
+
* действует на всём горизонте календаря, а не только перед началом игры.
|
|
8
|
+
*/
|
|
9
|
+
var SlotStaffPolicyEnum;
|
|
10
|
+
(function (SlotStaffPolicyEnum) {
|
|
11
|
+
/** Смены не влияют на доступность слота. */
|
|
12
|
+
SlotStaffPolicyEnum["OFF"] = "off";
|
|
13
|
+
/** Без смены слот доступен только по телефону. */
|
|
14
|
+
SlotStaffPolicyEnum["PHONE"] = "phone";
|
|
15
|
+
/** Без смены онлайн-бронь закрыта. */
|
|
16
|
+
SlotStaffPolicyEnum["CLOSED"] = "closed";
|
|
17
|
+
})(SlotStaffPolicyEnum || (exports.SlotStaffPolicyEnum = SlotStaffPolicyEnum = {}));
|
|
@@ -0,0 +1,24 @@
|
|
|
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.SetSlotResourceOverrideDto = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/**
|
|
15
|
+
* Ручное открытие слота вопреки нехватке общего ресурса (статус
|
|
16
|
+
* `no-resources`) и возврат обычной блокировки.
|
|
17
|
+
*/
|
|
18
|
+
class SetSlotResourceOverrideDto {
|
|
19
|
+
}
|
|
20
|
+
exports.SetSlotResourceOverrideDto = SetSlotResourceOverrideDto;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, class_validator_1.IsBoolean)(),
|
|
23
|
+
__metadata("design:type", Boolean)
|
|
24
|
+
], SetSlotResourceOverrideDto.prototype, "enabled", void 0);
|
package/dist/slot/slot.ro.d.ts
CHANGED
|
@@ -28,6 +28,12 @@ export type SlotRO = {
|
|
|
28
28
|
discount?: number;
|
|
29
29
|
onlyPhone?: boolean;
|
|
30
30
|
forceOnlineBooking?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Слот открыт администратором вопреки нехватке общего ресурса: проверка
|
|
33
|
+
* `no-resources` для него отключена. Календарь показывает такой слот как
|
|
34
|
+
* свободный с маркером.
|
|
35
|
+
*/
|
|
36
|
+
ignoreResourceLimit?: boolean;
|
|
31
37
|
breakReason?: string | null;
|
|
32
38
|
availableTeams?: number;
|
|
33
39
|
numSeatsAvailable?: number;
|
|
@@ -54,6 +60,11 @@ export type SlotRO = {
|
|
|
54
60
|
promocodeTotal?: number;
|
|
55
61
|
certificateTotal?: number;
|
|
56
62
|
upsellingsTotal?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Уникальные иконки допуслуг заказа (денорм `orders.upsellingIcons`)
|
|
65
|
+
* для бейджей на слоте — без JOIN к order-upsellings.
|
|
66
|
+
*/
|
|
67
|
+
upsellingIcons?: string[];
|
|
57
68
|
/** Проблема доставки письма клиенту (красный имейл-бейдж). */
|
|
58
69
|
emailTrouble?: boolean;
|
|
59
70
|
/** No-show: слот сохранён, игра не состоялась. */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
|
|
2
2
|
import { PrepaymentTypeEnum } from '../slot/enum/prepayment-type.enum';
|
|
3
|
+
import { SlotStaffPolicyEnum } from '../slot/enum/slot-staff-policy.enum';
|
|
3
4
|
export declare class CreateRuleDto {
|
|
4
5
|
ruleId?: number;
|
|
5
6
|
title: string;
|
|
@@ -14,6 +15,7 @@ export declare class CreateRuleDto {
|
|
|
14
15
|
blockingHours: number;
|
|
15
16
|
blockingMinutes: number;
|
|
16
17
|
openSlotWhenUserInCalendar: boolean;
|
|
18
|
+
noStaffPolicy: SlotStaffPolicyEnum;
|
|
17
19
|
clientCanCancel: boolean;
|
|
18
20
|
prepayForTourists: boolean;
|
|
19
21
|
minHoursForFullFine: number;
|
|
@@ -15,6 +15,7 @@ const class_validator_1 = require("class-validator");
|
|
|
15
15
|
const questroom_cancelation_type_enum_1 = require("../questroom/enum/questroom-cancelation-type.enum");
|
|
16
16
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
17
17
|
const prepayment_type_enum_1 = require("../slot/enum/prepayment-type.enum");
|
|
18
|
+
const slot_staff_policy_enum_1 = require("../slot/enum/slot-staff-policy.enum");
|
|
18
19
|
class CreateRuleDto {
|
|
19
20
|
}
|
|
20
21
|
exports.CreateRuleDto = CreateRuleDto;
|
|
@@ -122,6 +123,13 @@ __decorate([
|
|
|
122
123
|
(0, class_transformer_1.Expose)(),
|
|
123
124
|
__metadata("design:type", Boolean)
|
|
124
125
|
], CreateRuleDto.prototype, "openSlotWhenUserInCalendar", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
(0, class_validator_1.ValidateIf)((o) => !o.ruleId),
|
|
128
|
+
(0, class_transformer_1.Transform)(({ value }) => value || slot_staff_policy_enum_1.SlotStaffPolicyEnum.OFF),
|
|
129
|
+
(0, class_validator_1.IsEnum)(slot_staff_policy_enum_1.SlotStaffPolicyEnum),
|
|
130
|
+
(0, class_transformer_1.Expose)(),
|
|
131
|
+
__metadata("design:type", String)
|
|
132
|
+
], CreateRuleDto.prototype, "noStaffPolicy", void 0);
|
|
125
133
|
__decorate([
|
|
126
134
|
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : true),
|
|
127
135
|
(0, class_validator_1.IsBoolean)(),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
|
|
2
2
|
import { PrepaymentTypeEnum } from '../slot/enum/prepayment-type.enum';
|
|
3
|
+
import { SlotStaffPolicyEnum } from '../slot/enum/slot-staff-policy.enum';
|
|
3
4
|
export declare const defaultRule: {
|
|
4
5
|
title: string;
|
|
5
6
|
prepayment: number;
|
|
@@ -12,6 +13,7 @@ export declare const defaultRule: {
|
|
|
12
13
|
blockingHours: number;
|
|
13
14
|
blockingMinutes: number;
|
|
14
15
|
openSlotWhenUserInCalendar: boolean;
|
|
16
|
+
noStaffPolicy: SlotStaffPolicyEnum;
|
|
15
17
|
clientCanCancel: boolean;
|
|
16
18
|
prepayForTourists: boolean;
|
|
17
19
|
cancelationAmount: number;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.defaultRule = void 0;
|
|
4
4
|
const questroom_cancelation_type_enum_1 = require("../questroom/enum/questroom-cancelation-type.enum");
|
|
5
5
|
const prepayment_type_enum_1 = require("../slot/enum/prepayment-type.enum");
|
|
6
|
+
const slot_staff_policy_enum_1 = require("../slot/enum/slot-staff-policy.enum");
|
|
6
7
|
exports.defaultRule = {
|
|
7
8
|
title: 'System rule',
|
|
8
9
|
prepayment: 0,
|
|
@@ -15,6 +16,7 @@ exports.defaultRule = {
|
|
|
15
16
|
blockingHours: 2,
|
|
16
17
|
blockingMinutes: 2 * 60,
|
|
17
18
|
openSlotWhenUserInCalendar: true,
|
|
19
|
+
noStaffPolicy: slot_staff_policy_enum_1.SlotStaffPolicyEnum.OFF,
|
|
18
20
|
clientCanCancel: true,
|
|
19
21
|
prepayForTourists: false,
|
|
20
22
|
cancelationAmount: 0,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
|
|
2
2
|
import { PrepaymentTypeEnum } from '../slot/enum/prepayment-type.enum';
|
|
3
|
+
import { SlotStaffPolicyEnum } from '../slot/enum/slot-staff-policy.enum';
|
|
3
4
|
export declare class RuleRO {
|
|
4
5
|
id: number;
|
|
5
6
|
profileId: number;
|
|
@@ -16,6 +17,7 @@ export declare class RuleRO {
|
|
|
16
17
|
blockingHours: number;
|
|
17
18
|
blockingMinutes: number;
|
|
18
19
|
openSlotWhenUserInCalendar: boolean;
|
|
20
|
+
noStaffPolicy: SlotStaffPolicyEnum;
|
|
19
21
|
clientCanCancel: boolean;
|
|
20
22
|
prepayForTourists: boolean;
|
|
21
23
|
minHoursForFullFine: number;
|
|
@@ -13,6 +13,7 @@ exports.RuleRO = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const questroom_cancelation_type_enum_1 = require("../questroom/enum/questroom-cancelation-type.enum");
|
|
15
15
|
const prepayment_type_enum_1 = require("../slot/enum/prepayment-type.enum");
|
|
16
|
+
const slot_staff_policy_enum_1 = require("../slot/enum/slot-staff-policy.enum");
|
|
16
17
|
class RuleRO {
|
|
17
18
|
}
|
|
18
19
|
exports.RuleRO = RuleRO;
|
|
@@ -76,6 +77,10 @@ __decorate([
|
|
|
76
77
|
(0, class_transformer_1.Expose)(),
|
|
77
78
|
__metadata("design:type", Boolean)
|
|
78
79
|
], RuleRO.prototype, "openSlotWhenUserInCalendar", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, class_transformer_1.Expose)(),
|
|
82
|
+
__metadata("design:type", String)
|
|
83
|
+
], RuleRO.prototype, "noStaffPolicy", void 0);
|
|
79
84
|
__decorate([
|
|
80
85
|
(0, class_transformer_1.Expose)(),
|
|
81
86
|
__metadata("design:type", Boolean)
|
|
@@ -3,15 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Все денежные суммы — в минимальных единицах валюты (копейки/центы).
|
|
5
5
|
*
|
|
6
|
-
* Когорта периода = `code != NOT_GENERATED_CODE` + `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Когорта периода = `code != NOT_GENERATED_CODE` + `paidAt ∈ [start, end)`.
|
|
7
|
+
* ВСЕ агрегаты overview (включая остаток номиналов, количество полностью
|
|
8
|
+
* использованных и аннулированных) считаются по одной и той же когорте — это
|
|
9
|
+
* снимает прежний разнобой, когда `outstandingBalance` суммировался по всей
|
|
10
|
+
* истории профиля. Аннулированные из когорты не выбрасываются: их деньги
|
|
11
|
+
* остаются доходом, пока по ним не проведён возврат.
|
|
11
12
|
*
|
|
12
13
|
* Семантика финансовых полей:
|
|
13
14
|
* - gross — стоимость по прайсу (SUM(total)). Не выручка.
|
|
14
15
|
* - cash — нетто-выручка: SUM(cashReceived), возвраты уже учтены в транзакциях со знаком.
|
|
16
|
+
* - refunded — сколько вернули клиентам (SUM(refundedAmount)), уже вычтено из cash.
|
|
15
17
|
* - discount — сумма ручных скидок (SUM(discountTotal)).
|
|
16
18
|
* - promocode — сумма промокодов (SUM(promocodeTotal)).
|
|
17
19
|
* - nominalSold — суммарный номинал когорты (SUM(nominal)).
|
|
@@ -31,6 +33,8 @@ export type CertificatesOverview = {
|
|
|
31
33
|
gross: number;
|
|
32
34
|
/** Нетто-выручка: SUM(cashReceived), возвраты уже внутри. */
|
|
33
35
|
cash: number;
|
|
36
|
+
/** Возвращено клиентам: SUM(refundedAmount). Уже вычтено из `cash`. */
|
|
37
|
+
refunded: number;
|
|
34
38
|
discount: number;
|
|
35
39
|
promocode: number;
|
|
36
40
|
/** Средний чек по cash: cash / soldCount, 0 если нет продаж. */
|