@escapenavigator/types 2.0.33 → 2.0.37
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/admin/aggregator-order/create-aggregator-order.dto.d.ts +1 -0
- package/dist/agregator/agregator-questroom.ro.d.ts +2 -0
- package/dist/agregator/agregator-questroom.ro.js +5 -0
- package/dist/certificate-sale/certificate-sale.ro.d.ts +6 -0
- package/dist/certificate-sale/certificate-sale.ro.js +4 -0
- package/dist/certificate-uploaded/certificate-uploaded.ro.d.ts +1 -1
- package/dist/client/client-form.dto.d.ts +5 -0
- package/dist/client/client-form.dto.js +9 -8
- package/dist/client/client.ro.d.ts +13 -0
- package/dist/client/client.ro.js +21 -0
- package/dist/constants/uploading/upload-bookeo-certificate-rows.js +2 -2
- package/dist/constants/uploading/upload-certificate-rows.js +1 -1
- package/dist/location/create-location.dto.d.ts +2 -0
- package/dist/location/create-location.dto.js +7 -0
- package/dist/location/location-light.ro.d.ts +3 -1
- package/dist/location/location-light.ro.js +6 -1
- package/dist/location/update-location-for-admin.dto.d.ts +2 -0
- package/dist/location/update-location-for-admin.dto.js +7 -0
- package/dist/log/log-title.enum.d.ts +3 -0
- package/dist/log/log-title.enum.js +3 -0
- package/dist/loyalty/adjust-bonus.dto.d.ts +14 -0
- package/dist/loyalty/adjust-bonus.dto.js +35 -0
- package/dist/loyalty/assign-client-tier.dto.d.ts +9 -0
- package/dist/loyalty/assign-client-tier.dto.js +29 -0
- package/dist/loyalty/client-loyalty.ro.d.ts +30 -0
- package/dist/loyalty/client-loyalty.ro.js +71 -0
- package/dist/loyalty/enum/loyalty-bonus-type.enum.d.ts +13 -0
- package/dist/loyalty/enum/loyalty-bonus-type.enum.js +17 -0
- package/dist/loyalty/enum/loyalty-history-mode.enum.d.ts +18 -0
- package/dist/loyalty/enum/loyalty-history-mode.enum.js +22 -0
- package/dist/loyalty/enum/loyalty-metric.enum.d.ts +12 -0
- package/dist/loyalty/enum/loyalty-metric.enum.js +16 -0
- package/dist/loyalty/enum/loyalty-program-type.enum.d.ts +12 -0
- package/dist/loyalty/enum/loyalty-program-type.enum.js +16 -0
- package/dist/loyalty/enum/loyalty-stacking.enum.d.ts +14 -0
- package/dist/loyalty/enum/loyalty-stacking.enum.js +18 -0
- package/dist/loyalty/enum/loyalty-tier-color.enum.d.ts +16 -0
- package/dist/loyalty/enum/loyalty-tier-color.enum.js +20 -0
- package/dist/loyalty/enum/loyalty-tier-source.enum.d.ts +13 -0
- package/dist/loyalty/enum/loyalty-tier-source.enum.js +17 -0
- package/dist/loyalty/loyalty-bonus.ro.d.ts +20 -0
- package/dist/loyalty/loyalty-bonus.ro.js +55 -0
- package/dist/loyalty/loyalty-presets.d.ts +45 -0
- package/dist/loyalty/loyalty-presets.js +30 -0
- package/dist/loyalty/loyalty-preview.dto.d.ts +19 -0
- package/dist/loyalty/loyalty-preview.dto.js +64 -0
- package/dist/loyalty/loyalty-preview.ro.d.ts +20 -0
- package/dist/loyalty/loyalty-preview.ro.js +53 -0
- package/dist/loyalty/loyalty-settings.dto.d.ts +51 -0
- package/dist/loyalty/loyalty-settings.dto.js +103 -0
- package/dist/loyalty/loyalty-settings.ro.d.ts +33 -0
- package/dist/loyalty/loyalty-settings.ro.js +67 -0
- package/dist/loyalty/loyalty-tier.dto.d.ts +33 -0
- package/dist/loyalty/loyalty-tier.dto.js +69 -0
- package/dist/loyalty/loyalty-tier.ro.d.ts +12 -0
- package/dist/loyalty/loyalty-tier.ro.js +42 -0
- package/dist/loyalty/pay-with-bonus.dto.d.ts +10 -0
- package/dist/loyalty/pay-with-bonus.dto.js +36 -0
- package/dist/openapi/order-groups/openapi-batch-create-preorder.dto.d.ts +3 -3
- package/dist/openapi/orders/openapi-order.ro.d.ts +12 -0
- package/dist/openapi/orders/openapi-order.ro.js +8 -0
- package/dist/openapi/profiles/enum/openapi-certificate-status.enum.d.ts +29 -0
- package/dist/openapi/profiles/enum/openapi-certificate-status.enum.js +38 -0
- package/dist/openapi/profiles/openapi-annul-certificate.dto.d.ts +3 -0
- package/dist/openapi/profiles/openapi-annul-certificate.dto.js +29 -0
- package/dist/openapi/profiles/openapi-certificate.ro.d.ts +33 -0
- package/dist/openapi/profiles/openapi-certificate.ro.js +195 -0
- package/dist/openapi/profiles/openapi-create-certificate.dto.d.ts +24 -0
- package/dist/openapi/profiles/openapi-create-certificate.dto.js +208 -0
- package/dist/openapi/slots/openapi-widget-slot.ro.d.ts +3 -0
- package/dist/openapi/slots/openapi-widget-slot.ro.js +24 -2
- package/dist/order/order.ro.d.ts +23 -1
- package/dist/order/order.ro.js +19 -0
- package/dist/order-discount/enum/order-discount-source.enum.d.ts +10 -0
- package/dist/order-discount/enum/order-discount-source.enum.js +14 -0
- package/dist/packages/book-package.dto.d.ts +3 -0
- package/dist/packages/book-package.dto.js +9 -0
- package/dist/packages/create-package.dto.d.ts +23 -0
- package/dist/packages/create-package.dto.js +81 -1
- package/dist/packages/package-addon.dto.d.ts +5 -0
- package/dist/packages/package-addon.dto.js +31 -0
- package/dist/packages/package-audience.enum.d.ts +6 -0
- package/dist/packages/package-audience.enum.js +10 -0
- package/dist/packages/package-feature.dto.d.ts +12 -0
- package/dist/packages/package-feature.dto.js +41 -0
- package/dist/packages/package-pricing-mode.enum.d.ts +14 -0
- package/dist/packages/package-pricing-mode.enum.js +18 -0
- package/dist/packages/package.ro.d.ts +14 -0
- package/dist/packages/package.ro.js +48 -0
- package/dist/parse-results/parse-result-payload.d.ts +23 -2
- package/dist/profile/company-ai-context.d.ts +2 -0
- package/dist/profile/contacts/create-profile-contact.dto.d.ts +5 -0
- package/dist/profile/contacts/create-profile-contact.dto.js +2 -1
- package/dist/profile/marketing-automation/marketing-automation-capabilities.js +5 -2
- package/dist/profile/marketing-automation/marketing-automation-config.dto.d.ts +8 -2
- package/dist/profile/marketing-automation/marketing-automation-config.dto.js +3 -3
- package/dist/profile/marketing-automation/marketing-automation-timing.d.ts +2 -2
- package/dist/profile/marketing-automation/marketing-automation-timing.js +2 -2
- package/dist/profile/notification-chanel/notification-chanel-action.enum.d.ts +16 -1
- package/dist/profile/notification-chanel/notification-chanel-action.enum.js +21 -1
- package/dist/profile/notification-chanel/notification-chanel.ro.d.ts +5 -0
- package/dist/profile/notification-chanel/notification-chanel.ro.js +4 -0
- package/dist/profile/notification-chanel/test-notification-chanel.dto.d.ts +7 -2
- package/dist/profile/notification-chanel/test-notification-chanel.dto.js +7 -0
- package/dist/profile/query-admin-profile.dto.d.ts +2 -1
- package/dist/profile/query-admin-profile.dto.js +1 -1
- package/dist/questroom/questroom-ai-context.d.ts +5 -0
- package/dist/shared/enum/availability.enum.d.ts +11 -0
- package/dist/shared/enum/availability.enum.js +15 -0
- package/dist/slot/bulk-update-slots.dto.d.ts +2 -0
- package/dist/slot/bulk-update-slots.dto.js +7 -0
- package/dist/slot/change-template-slots-form.dto.d.ts +3 -0
- package/dist/slot/change-template-slots-form.dto.js +13 -0
- package/dist/slot/create-slot-form.dto.d.ts +2 -0
- package/dist/slot/create-slot-form.dto.js +7 -0
- package/dist/slot/create-slot.dto.d.ts +2 -0
- package/dist/slot/create-slot.dto.js +7 -0
- package/dist/slot/daily-window-range.validator.d.ts +15 -0
- package/dist/slot/daily-window-range.validator.js +46 -0
- package/dist/slot/enum/slot-discount-type.enum.d.ts +15 -0
- package/dist/slot/enum/slot-discount-type.enum.js +19 -0
- package/dist/slot/slot-autocomplite-form.dto.d.ts +2 -0
- package/dist/slot/slot-autocomplite-form.dto.js +7 -0
- package/dist/slot/slot-discount-range.validator.d.ts +10 -0
- package/dist/slot/slot-discount-range.validator.js +36 -0
- package/dist/slot/slot.ro.d.ts +10 -0
- package/dist/slot/update-slot-upsellings-range.dto.d.ts +17 -0
- package/dist/slot/update-slot-upsellings-range.dto.js +68 -0
- package/dist/slot/update-slot.dto.d.ts +4 -0
- package/dist/slot/update-slot.dto.js +14 -0
- package/dist/slot-template/slot-template-element.d.ts +4 -0
- package/dist/slot-template/slot-template-element.js +9 -0
- package/dist/slot-template/slot-template-flex-rule.d.ts +8 -0
- package/dist/slot-template/slot-template-flex-rule.js +15 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/user/crud/user.ro.d.ts +3 -0
- package/dist/user/crud/user.ro.js +11 -0
- package/dist/user/current/update-current-user-notifications.dto.d.ts +7 -0
- package/dist/user/current/update-current-user-notifications.dto.js +13 -0
- package/dist/user/enum/push-order-scope.enum.d.ts +15 -0
- package/dist/user/enum/push-order-scope.enum.js +19 -0
- package/dist/widget/enum/widget-type.enum.d.ts +3 -1
- package/dist/widget/enum/widget-type.enum.js +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoyaltyHistoryModeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Что делать с историей существующих клиентов в момент включения
|
|
6
|
+
* программы. Вопрос задаётся один раз при онбординге и превращается в
|
|
7
|
+
* дату отсечки `countFrom`, после чего накопление всегда идёт вперёд:
|
|
8
|
+
* статус не сгорает.
|
|
9
|
+
*
|
|
10
|
+
* `ALL` — зачесть всю историю: половина базы получит статус сразу.
|
|
11
|
+
* `LAST_YEAR` — зачесть игры за последние 12 месяцев на момент
|
|
12
|
+
* включения. Отсечка замораживается датой, а не «ползёт» вместе с
|
|
13
|
+
* сегодняшним днём, — иначе клиент терял бы статус просто от того, что
|
|
14
|
+
* год назад он играл, а сейчас нет.
|
|
15
|
+
* `FROM_ACTIVATION` — начать всех с нуля, считать только новые игры.
|
|
16
|
+
*/
|
|
17
|
+
var LoyaltyHistoryModeEnum;
|
|
18
|
+
(function (LoyaltyHistoryModeEnum) {
|
|
19
|
+
LoyaltyHistoryModeEnum["ALL"] = "all";
|
|
20
|
+
LoyaltyHistoryModeEnum["LAST_YEAR"] = "lastYear";
|
|
21
|
+
LoyaltyHistoryModeEnum["FROM_ACTIVATION"] = "fromActivation";
|
|
22
|
+
})(LoyaltyHistoryModeEnum || (exports.LoyaltyHistoryModeEnum = LoyaltyHistoryModeEnum = {}));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* По какому счётчику клиент поднимается по статусам.
|
|
3
|
+
*
|
|
4
|
+
* `GAMES` — состоявшиеся игры, `REVENUE` — сумма, которую клиент оставил
|
|
5
|
+
* за квесты и допуслуги. Одновременно работает только одна метрика:
|
|
6
|
+
* пороги «5 игр» и «5 000» отбирают разные множества клиентов, и
|
|
7
|
+
* объяснить администратору смешанное правило почти невозможно.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum LoyaltyMetricEnum {
|
|
10
|
+
GAMES = "games",
|
|
11
|
+
REVENUE = "revenue"
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoyaltyMetricEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* По какому счётчику клиент поднимается по статусам.
|
|
6
|
+
*
|
|
7
|
+
* `GAMES` — состоявшиеся игры, `REVENUE` — сумма, которую клиент оставил
|
|
8
|
+
* за квесты и допуслуги. Одновременно работает только одна метрика:
|
|
9
|
+
* пороги «5 игр» и «5 000» отбирают разные множества клиентов, и
|
|
10
|
+
* объяснить администратору смешанное правило почти невозможно.
|
|
11
|
+
*/
|
|
12
|
+
var LoyaltyMetricEnum;
|
|
13
|
+
(function (LoyaltyMetricEnum) {
|
|
14
|
+
LoyaltyMetricEnum["GAMES"] = "games";
|
|
15
|
+
LoyaltyMetricEnum["REVENUE"] = "revenue";
|
|
16
|
+
})(LoyaltyMetricEnum || (exports.LoyaltyMetricEnum = LoyaltyMetricEnum = {}));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Какую механику компания включила. Программы взаимоисключающие: клиент
|
|
3
|
+
* не может одновременно получать скидку за статус и кэшбэк с той же
|
|
4
|
+
* игры — иначе одна и та же лояльность стоила бы венью дважды, а
|
|
5
|
+
* администратор на стойке не смог бы объяснить итоговую цифру в чеке.
|
|
6
|
+
*/
|
|
7
|
+
export declare enum LoyaltyProgramTypeEnum {
|
|
8
|
+
/** Статус даёт процент скидки сразу в чеке текущей игры. */
|
|
9
|
+
DISCOUNT = "discount",
|
|
10
|
+
/** Игра начисляет бонусы на баланс клиента, ими платят в следующий раз. */
|
|
11
|
+
CASHBACK = "cashback"
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoyaltyProgramTypeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Какую механику компания включила. Программы взаимоисключающие: клиент
|
|
6
|
+
* не может одновременно получать скидку за статус и кэшбэк с той же
|
|
7
|
+
* игры — иначе одна и та же лояльность стоила бы венью дважды, а
|
|
8
|
+
* администратор на стойке не смог бы объяснить итоговую цифру в чеке.
|
|
9
|
+
*/
|
|
10
|
+
var LoyaltyProgramTypeEnum;
|
|
11
|
+
(function (LoyaltyProgramTypeEnum) {
|
|
12
|
+
/** Статус даёт процент скидки сразу в чеке текущей игры. */
|
|
13
|
+
LoyaltyProgramTypeEnum["DISCOUNT"] = "discount";
|
|
14
|
+
/** Игра начисляет бонусы на баланс клиента, ими платят в следующий раз. */
|
|
15
|
+
LoyaltyProgramTypeEnum["CASHBACK"] = "cashback";
|
|
16
|
+
})(LoyaltyProgramTypeEnum || (exports.LoyaltyProgramTypeEnum = LoyaltyProgramTypeEnum = {}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Что делать, когда на игре уже есть другая скидка — промокод, ручная
|
|
3
|
+
* скидка администратора или скидка на время слота.
|
|
4
|
+
*
|
|
5
|
+
* `EXCLUSIVE` (по умолчанию) — статусная скидка не применяется вовсе:
|
|
6
|
+
* на игре работает одна скидка. Правило намеренно грубое, зато
|
|
7
|
+
* администратору его можно объяснить одной фразой, а чек не уходит в
|
|
8
|
+
* минус от промокода, утреннего слота и золотого статуса разом.
|
|
9
|
+
* `STACK` — статусная скидка складывается с остальными.
|
|
10
|
+
*/
|
|
11
|
+
export declare enum LoyaltyStackingEnum {
|
|
12
|
+
EXCLUSIVE = "exclusive",
|
|
13
|
+
STACK = "stack"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoyaltyStackingEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Что делать, когда на игре уже есть другая скидка — промокод, ручная
|
|
6
|
+
* скидка администратора или скидка на время слота.
|
|
7
|
+
*
|
|
8
|
+
* `EXCLUSIVE` (по умолчанию) — статусная скидка не применяется вовсе:
|
|
9
|
+
* на игре работает одна скидка. Правило намеренно грубое, зато
|
|
10
|
+
* администратору его можно объяснить одной фразой, а чек не уходит в
|
|
11
|
+
* минус от промокода, утреннего слота и золотого статуса разом.
|
|
12
|
+
* `STACK` — статусная скидка складывается с остальными.
|
|
13
|
+
*/
|
|
14
|
+
var LoyaltyStackingEnum;
|
|
15
|
+
(function (LoyaltyStackingEnum) {
|
|
16
|
+
LoyaltyStackingEnum["EXCLUSIVE"] = "exclusive";
|
|
17
|
+
LoyaltyStackingEnum["STACK"] = "stack";
|
|
18
|
+
})(LoyaltyStackingEnum || (exports.LoyaltyStackingEnum = LoyaltyStackingEnum = {}));
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Палитра бейджа статуса. Фиксированный набор вместо свободного HEX:
|
|
3
|
+
* бейдж встречается в списке клиентов, в карточке и в мобильном
|
|
4
|
+
* приложении, и произвольный цвет от компании слишком легко делает его
|
|
5
|
+
* нечитаемым на одном из фонов.
|
|
6
|
+
*/
|
|
7
|
+
export declare enum LoyaltyTierColorEnum {
|
|
8
|
+
BRONZE = "bronze",
|
|
9
|
+
SILVER = "silver",
|
|
10
|
+
GOLD = "gold",
|
|
11
|
+
PLATINUM = "platinum",
|
|
12
|
+
BLUE = "blue",
|
|
13
|
+
GREEN = "green",
|
|
14
|
+
PURPLE = "purple",
|
|
15
|
+
RED = "red"
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoyaltyTierColorEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Палитра бейджа статуса. Фиксированный набор вместо свободного HEX:
|
|
6
|
+
* бейдж встречается в списке клиентов, в карточке и в мобильном
|
|
7
|
+
* приложении, и произвольный цвет от компании слишком легко делает его
|
|
8
|
+
* нечитаемым на одном из фонов.
|
|
9
|
+
*/
|
|
10
|
+
var LoyaltyTierColorEnum;
|
|
11
|
+
(function (LoyaltyTierColorEnum) {
|
|
12
|
+
LoyaltyTierColorEnum["BRONZE"] = "bronze";
|
|
13
|
+
LoyaltyTierColorEnum["SILVER"] = "silver";
|
|
14
|
+
LoyaltyTierColorEnum["GOLD"] = "gold";
|
|
15
|
+
LoyaltyTierColorEnum["PLATINUM"] = "platinum";
|
|
16
|
+
LoyaltyTierColorEnum["BLUE"] = "blue";
|
|
17
|
+
LoyaltyTierColorEnum["GREEN"] = "green";
|
|
18
|
+
LoyaltyTierColorEnum["PURPLE"] = "purple";
|
|
19
|
+
LoyaltyTierColorEnum["RED"] = "red";
|
|
20
|
+
})(LoyaltyTierColorEnum || (exports.LoyaltyTierColorEnum = LoyaltyTierColorEnum = {}));
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Откуда у клиента текущий статус.
|
|
3
|
+
*
|
|
4
|
+
* `MANUAL` — назначен сотрудником и приоритетнее расчёта: пересчёт
|
|
5
|
+
* метрик его не трогает, пока статус не вернут в автоматический.
|
|
6
|
+
* `EXCLUDED` — клиент выведен из программы: скидка не применяется, в
|
|
7
|
+
* распределении по статусам он не участвует, но история сохраняется.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum LoyaltyTierSourceEnum {
|
|
10
|
+
AUTO = "auto",
|
|
11
|
+
MANUAL = "manual",
|
|
12
|
+
EXCLUDED = "excluded"
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoyaltyTierSourceEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Откуда у клиента текущий статус.
|
|
6
|
+
*
|
|
7
|
+
* `MANUAL` — назначен сотрудником и приоритетнее расчёта: пересчёт
|
|
8
|
+
* метрик его не трогает, пока статус не вернут в автоматический.
|
|
9
|
+
* `EXCLUDED` — клиент выведен из программы: скидка не применяется, в
|
|
10
|
+
* распределении по статусам он не участвует, но история сохраняется.
|
|
11
|
+
*/
|
|
12
|
+
var LoyaltyTierSourceEnum;
|
|
13
|
+
(function (LoyaltyTierSourceEnum) {
|
|
14
|
+
LoyaltyTierSourceEnum["AUTO"] = "auto";
|
|
15
|
+
LoyaltyTierSourceEnum["MANUAL"] = "manual";
|
|
16
|
+
LoyaltyTierSourceEnum["EXCLUDED"] = "excluded";
|
|
17
|
+
})(LoyaltyTierSourceEnum || (exports.LoyaltyTierSourceEnum = LoyaltyTierSourceEnum = {}));
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RO } from '../shared/ro-class';
|
|
2
|
+
import { LoyaltyBonusTypeEnum } from './enum/loyalty-bonus-type.enum';
|
|
3
|
+
/**
|
|
4
|
+
* Одна операция по бонусам клиента. Начисления положительные, списания
|
|
5
|
+
* отрицательные — как в любом журнале, чтобы баланс был обычной суммой,
|
|
6
|
+
* а не разностью двух колонок.
|
|
7
|
+
*/
|
|
8
|
+
export declare class LoyaltyBonusRO extends RO {
|
|
9
|
+
clientId: number;
|
|
10
|
+
type: LoyaltyBonusTypeEnum;
|
|
11
|
+
/** Минорные единицы со знаком: `+` начислено, `−` списано. */
|
|
12
|
+
amount: number;
|
|
13
|
+
/** Баланс клиента после операции — чтобы историю можно было читать глазами. */
|
|
14
|
+
balanceAfter: number;
|
|
15
|
+
orderId: number | null;
|
|
16
|
+
userId: number | null;
|
|
17
|
+
comment: string;
|
|
18
|
+
/** Операция погашена: игру отменили или списание снял администратор. */
|
|
19
|
+
canceled: boolean;
|
|
20
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
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.LoyaltyBonusRO = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const ro_class_1 = require("../shared/ro-class");
|
|
15
|
+
const loyalty_bonus_type_enum_1 = require("./enum/loyalty-bonus-type.enum");
|
|
16
|
+
/**
|
|
17
|
+
* Одна операция по бонусам клиента. Начисления положительные, списания
|
|
18
|
+
* отрицательные — как в любом журнале, чтобы баланс был обычной суммой,
|
|
19
|
+
* а не разностью двух колонок.
|
|
20
|
+
*/
|
|
21
|
+
class LoyaltyBonusRO extends ro_class_1.RO {
|
|
22
|
+
}
|
|
23
|
+
exports.LoyaltyBonusRO = LoyaltyBonusRO;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_transformer_1.Expose)(),
|
|
26
|
+
__metadata("design:type", Number)
|
|
27
|
+
], LoyaltyBonusRO.prototype, "clientId", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, class_transformer_1.Expose)(),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], LoyaltyBonusRO.prototype, "type", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_transformer_1.Expose)(),
|
|
34
|
+
__metadata("design:type", Number)
|
|
35
|
+
], LoyaltyBonusRO.prototype, "amount", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
__metadata("design:type", Number)
|
|
39
|
+
], LoyaltyBonusRO.prototype, "balanceAfter", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_transformer_1.Expose)(),
|
|
42
|
+
__metadata("design:type", Number)
|
|
43
|
+
], LoyaltyBonusRO.prototype, "orderId", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, class_transformer_1.Expose)(),
|
|
46
|
+
__metadata("design:type", Number)
|
|
47
|
+
], LoyaltyBonusRO.prototype, "userId", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, class_transformer_1.Expose)(),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], LoyaltyBonusRO.prototype, "comment", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_transformer_1.Expose)(),
|
|
54
|
+
__metadata("design:type", Boolean)
|
|
55
|
+
], LoyaltyBonusRO.prototype, "canceled", void 0);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LoyaltyTierColorEnum } from './enum/loyalty-tier-color.enum';
|
|
2
|
+
export type LoyaltyTierPreset = {
|
|
3
|
+
color: LoyaltyTierColorEnum;
|
|
4
|
+
/** Порог для метрики «игры»: сколько квестов надо пройти. */
|
|
5
|
+
games: number;
|
|
6
|
+
/**
|
|
7
|
+
* Порог для метрики «сумма» — в средних чеках компании, а не в
|
|
8
|
+
* деньгах. Валюты и цены у квестов разные, поэтому абсолютные суммы
|
|
9
|
+
* в пресете были бы бессмысленны в половине стран: API умножает это
|
|
10
|
+
* число на реальный средний чек профиля.
|
|
11
|
+
*/
|
|
12
|
+
checks: number;
|
|
13
|
+
/** Процент скидки на статусе — для скидочной программы. */
|
|
14
|
+
discount: number;
|
|
15
|
+
/**
|
|
16
|
+
* Процент кэшбэка на статусе — для накопительной программы. Ниже
|
|
17
|
+
* скидки не случайно: скидку венью отдаёт один раз, а бонусы клиент
|
|
18
|
+
* тратит на следующей игре, то есть они возвращаются в кассу
|
|
19
|
+
* вторым визитом. Поэтому у одного и того же статуса кэшбэк
|
|
20
|
+
* выгоднее держать скромнее, чем прямую скидку.
|
|
21
|
+
*/
|
|
22
|
+
cashback: number;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Стартовый набор «бронза — серебро — золото», который создаётся одной
|
|
26
|
+
* кнопкой. Разрыв между серебром и золотом сделан заметным (3 игры → 6):
|
|
27
|
+
* если статусы идут вплотную, клиент не видит смысла доигрывать до
|
|
28
|
+
* следующего, а компания раздаёт максимальную скидку с четвёртой игры.
|
|
29
|
+
*/
|
|
30
|
+
export declare const LOYALTY_TIER_PRESETS: LoyaltyTierPreset[];
|
|
31
|
+
/** Доля чека, которую по умолчанию разрешено закрыть бонусами. */
|
|
32
|
+
export declare const LOYALTY_DEFAULT_MAX_BONUS_PAY_PERCENT = 50;
|
|
33
|
+
/**
|
|
34
|
+
* Названия на случай, если клиент API не передал свои. Обычно названия
|
|
35
|
+
* приходят из CRM уже переведёнными — держать словарь статусов в API
|
|
36
|
+
* значило бы дублировать локали интерфейса.
|
|
37
|
+
*/
|
|
38
|
+
export declare const LOYALTY_PRESET_FALLBACK_TITLES: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Средний чек для пресета по сумме, когда истории игр ещё нет и взять
|
|
41
|
+
* цифру неоткуда. Число заведомо приблизительное — владелец правит
|
|
42
|
+
* пороги руками сразу после создания, — но пустые нули в конструкторе
|
|
43
|
+
* были бы хуже.
|
|
44
|
+
*/
|
|
45
|
+
export declare const LOYALTY_FALLBACK_AVERAGE_CHECK = 500000;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LOYALTY_FALLBACK_AVERAGE_CHECK = exports.LOYALTY_PRESET_FALLBACK_TITLES = exports.LOYALTY_DEFAULT_MAX_BONUS_PAY_PERCENT = exports.LOYALTY_TIER_PRESETS = void 0;
|
|
4
|
+
const loyalty_tier_color_enum_1 = require("./enum/loyalty-tier-color.enum");
|
|
5
|
+
/**
|
|
6
|
+
* Стартовый набор «бронза — серебро — золото», который создаётся одной
|
|
7
|
+
* кнопкой. Разрыв между серебром и золотом сделан заметным (3 игры → 6):
|
|
8
|
+
* если статусы идут вплотную, клиент не видит смысла доигрывать до
|
|
9
|
+
* следующего, а компания раздаёт максимальную скидку с четвёртой игры.
|
|
10
|
+
*/
|
|
11
|
+
exports.LOYALTY_TIER_PRESETS = [
|
|
12
|
+
{ color: loyalty_tier_color_enum_1.LoyaltyTierColorEnum.BRONZE, games: 1, checks: 1, discount: 3, cashback: 3 },
|
|
13
|
+
{ color: loyalty_tier_color_enum_1.LoyaltyTierColorEnum.SILVER, games: 3, checks: 3, discount: 5, cashback: 5 },
|
|
14
|
+
{ color: loyalty_tier_color_enum_1.LoyaltyTierColorEnum.GOLD, games: 6, checks: 6, discount: 10, cashback: 7 },
|
|
15
|
+
];
|
|
16
|
+
/** Доля чека, которую по умолчанию разрешено закрыть бонусами. */
|
|
17
|
+
exports.LOYALTY_DEFAULT_MAX_BONUS_PAY_PERCENT = 50;
|
|
18
|
+
/**
|
|
19
|
+
* Названия на случай, если клиент API не передал свои. Обычно названия
|
|
20
|
+
* приходят из CRM уже переведёнными — держать словарь статусов в API
|
|
21
|
+
* значило бы дублировать локали интерфейса.
|
|
22
|
+
*/
|
|
23
|
+
exports.LOYALTY_PRESET_FALLBACK_TITLES = ['Bronze', 'Silver', 'Gold'];
|
|
24
|
+
/**
|
|
25
|
+
* Средний чек для пресета по сумме, когда истории игр ещё нет и взять
|
|
26
|
+
* цифру неоткуда. Число заведомо приблизительное — владелец правит
|
|
27
|
+
* пороги руками сразу после создания, — но пустые нули в конструкторе
|
|
28
|
+
* были бы хуже.
|
|
29
|
+
*/
|
|
30
|
+
exports.LOYALTY_FALLBACK_AVERAGE_CHECK = 500000;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LoyaltyHistoryModeEnum } from './enum/loyalty-history-mode.enum';
|
|
2
|
+
import { LoyaltyMetricEnum } from './enum/loyalty-metric.enum';
|
|
3
|
+
export declare class LoyaltyPreviewTierDto {
|
|
4
|
+
threshold: number;
|
|
5
|
+
/** Процент, который стоит денег: скидка или кэшбэк — смотря какая программа. */
|
|
6
|
+
discount: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Прикидка «что будет, если включить» по ещё не сохранённым порогам:
|
|
10
|
+
* сколько клиентов попадёт на каждый статус и во что это обошлось бы за
|
|
11
|
+
* последний год. Считается по реальной истории игр и ничего не меняет —
|
|
12
|
+
* владелец должен видеть цену решения до того, как раздаст скидку
|
|
13
|
+
* половине базы.
|
|
14
|
+
*/
|
|
15
|
+
export declare class LoyaltyPreviewDto {
|
|
16
|
+
metric: LoyaltyMetricEnum;
|
|
17
|
+
historyMode: LoyaltyHistoryModeEnum;
|
|
18
|
+
tiers: LoyaltyPreviewTierDto[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
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.LoyaltyPreviewDto = exports.LoyaltyPreviewTierDto = void 0;
|
|
13
|
+
/* eslint-disable max-classes-per-file */
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const class_validator_1 = require("class-validator");
|
|
16
|
+
const loyalty_history_mode_enum_1 = require("./enum/loyalty-history-mode.enum");
|
|
17
|
+
const loyalty_metric_enum_1 = require("./enum/loyalty-metric.enum");
|
|
18
|
+
const loyalty_tier_dto_1 = require("./loyalty-tier.dto");
|
|
19
|
+
class LoyaltyPreviewTierDto {
|
|
20
|
+
}
|
|
21
|
+
exports.LoyaltyPreviewTierDto = LoyaltyPreviewTierDto;
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
24
|
+
(0, class_validator_1.Min)(0),
|
|
25
|
+
(0, class_validator_1.IsInt)(),
|
|
26
|
+
(0, class_transformer_1.Expose)(),
|
|
27
|
+
__metadata("design:type", Number)
|
|
28
|
+
], LoyaltyPreviewTierDto.prototype, "threshold", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
31
|
+
(0, class_validator_1.Min)(0),
|
|
32
|
+
(0, class_validator_1.Max)(100),
|
|
33
|
+
(0, class_validator_1.IsInt)(),
|
|
34
|
+
(0, class_transformer_1.Expose)(),
|
|
35
|
+
__metadata("design:type", Number)
|
|
36
|
+
], LoyaltyPreviewTierDto.prototype, "discount", void 0);
|
|
37
|
+
/**
|
|
38
|
+
* Прикидка «что будет, если включить» по ещё не сохранённым порогам:
|
|
39
|
+
* сколько клиентов попадёт на каждый статус и во что это обошлось бы за
|
|
40
|
+
* последний год. Считается по реальной истории игр и ничего не меняет —
|
|
41
|
+
* владелец должен видеть цену решения до того, как раздаст скидку
|
|
42
|
+
* половине базы.
|
|
43
|
+
*/
|
|
44
|
+
class LoyaltyPreviewDto {
|
|
45
|
+
}
|
|
46
|
+
exports.LoyaltyPreviewDto = LoyaltyPreviewDto;
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsEnum)(loyalty_metric_enum_1.LoyaltyMetricEnum),
|
|
49
|
+
(0, class_transformer_1.Expose)(),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], LoyaltyPreviewDto.prototype, "metric", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_validator_1.IsEnum)(loyalty_history_mode_enum_1.LoyaltyHistoryModeEnum),
|
|
54
|
+
(0, class_transformer_1.Expose)(),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], LoyaltyPreviewDto.prototype, "historyMode", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, class_validator_1.IsArray)(),
|
|
59
|
+
(0, class_validator_1.ArrayMaxSize)(loyalty_tier_dto_1.MAX_LOYALTY_TIERS),
|
|
60
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
61
|
+
(0, class_transformer_1.Type)(() => LoyaltyPreviewTierDto),
|
|
62
|
+
(0, class_transformer_1.Expose)(),
|
|
63
|
+
__metadata("design:type", Array)
|
|
64
|
+
], LoyaltyPreviewDto.prototype, "tiers", void 0);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class LoyaltyPreviewBucketRO {
|
|
2
|
+
threshold: number;
|
|
3
|
+
discount: number;
|
|
4
|
+
clientsCount: number;
|
|
5
|
+
/**
|
|
6
|
+
* Во что обошёлся бы этот статус за последние 12 месяцев: скидка,
|
|
7
|
+
* применённая к уже состоявшимся играм его будущих участников. Оценка
|
|
8
|
+
* сверху — она не учитывает, что часть этих игр была с промокодом и
|
|
9
|
+
* статусная скидка на них не встала бы.
|
|
10
|
+
*/
|
|
11
|
+
estimatedDiscount: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class LoyaltyPreviewRO {
|
|
14
|
+
/** Клиенты хотя бы с одной состоявшейся игрой в зачётном периоде. */
|
|
15
|
+
totalClients: number;
|
|
16
|
+
estimatedDiscount: number;
|
|
17
|
+
/** Средний чек игры — им же считаются пороги пресета по сумме. */
|
|
18
|
+
averageCheck: number;
|
|
19
|
+
buckets: LoyaltyPreviewBucketRO[];
|
|
20
|
+
}
|
|
@@ -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.LoyaltyPreviewRO = exports.LoyaltyPreviewBucketRO = void 0;
|
|
13
|
+
/* eslint-disable max-classes-per-file */
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
class LoyaltyPreviewBucketRO {
|
|
16
|
+
}
|
|
17
|
+
exports.LoyaltyPreviewBucketRO = LoyaltyPreviewBucketRO;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, class_transformer_1.Expose)(),
|
|
20
|
+
__metadata("design:type", Number)
|
|
21
|
+
], LoyaltyPreviewBucketRO.prototype, "threshold", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_transformer_1.Expose)(),
|
|
24
|
+
__metadata("design:type", Number)
|
|
25
|
+
], LoyaltyPreviewBucketRO.prototype, "discount", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_transformer_1.Expose)(),
|
|
28
|
+
__metadata("design:type", Number)
|
|
29
|
+
], LoyaltyPreviewBucketRO.prototype, "clientsCount", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_transformer_1.Expose)(),
|
|
32
|
+
__metadata("design:type", Number)
|
|
33
|
+
], LoyaltyPreviewBucketRO.prototype, "estimatedDiscount", void 0);
|
|
34
|
+
class LoyaltyPreviewRO {
|
|
35
|
+
}
|
|
36
|
+
exports.LoyaltyPreviewRO = LoyaltyPreviewRO;
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_transformer_1.Expose)(),
|
|
39
|
+
__metadata("design:type", Number)
|
|
40
|
+
], LoyaltyPreviewRO.prototype, "totalClients", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, class_transformer_1.Expose)(),
|
|
43
|
+
__metadata("design:type", Number)
|
|
44
|
+
], LoyaltyPreviewRO.prototype, "estimatedDiscount", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_transformer_1.Expose)(),
|
|
47
|
+
__metadata("design:type", Number)
|
|
48
|
+
], LoyaltyPreviewRO.prototype, "averageCheck", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, class_transformer_1.Expose)(),
|
|
51
|
+
(0, class_transformer_1.Type)(() => LoyaltyPreviewBucketRO),
|
|
52
|
+
__metadata("design:type", Array)
|
|
53
|
+
], LoyaltyPreviewRO.prototype, "buckets", void 0);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { LoyaltyHistoryModeEnum } from './enum/loyalty-history-mode.enum';
|
|
2
|
+
import { LoyaltyMetricEnum } from './enum/loyalty-metric.enum';
|
|
3
|
+
import { LoyaltyProgramTypeEnum } from './enum/loyalty-program-type.enum';
|
|
4
|
+
import { LoyaltyStackingEnum } from './enum/loyalty-stacking.enum';
|
|
5
|
+
/**
|
|
6
|
+
* Онбординг одной кнопкой: создаёт статусы из пресета, фиксирует, что
|
|
7
|
+
* делать с историей существующих клиентов, и включает программу.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SetupLoyaltyDto {
|
|
10
|
+
/** Скидка за статус или кэшбэк бонусами — выбирается один раз в онбординге. */
|
|
11
|
+
programType: LoyaltyProgramTypeEnum;
|
|
12
|
+
metric: LoyaltyMetricEnum;
|
|
13
|
+
historyMode: LoyaltyHistoryModeEnum;
|
|
14
|
+
/** Переведённые названия статусов, по одному на статус пресета. */
|
|
15
|
+
titles?: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare class UpdateLoyaltySettingsDto {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Переключение типа не стирает ни балансы, ни статусы: выключенная
|
|
21
|
+
* механика просто перестаёт работать, и при возврате всё снова
|
|
22
|
+
* считается с того же места.
|
|
23
|
+
*/
|
|
24
|
+
programType: LoyaltyProgramTypeEnum;
|
|
25
|
+
metric: LoyaltyMetricEnum;
|
|
26
|
+
/**
|
|
27
|
+
* Кэшбэк для клиентов без статуса, целыми процентами. Ноль означает
|
|
28
|
+
* «до первого статуса бонусы не капают» — так же, как в скидочной
|
|
29
|
+
* программе новичок не получает скидку.
|
|
30
|
+
*/
|
|
31
|
+
cashbackPercent?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Какую долю чека разрешено закрыть бонусами. Ограничение защищает
|
|
34
|
+
* не столько выручку, сколько сам визит: игра, полностью оплаченная
|
|
35
|
+
* бонусами, не приносит венью живых денег в день, когда занят слот.
|
|
36
|
+
*/
|
|
37
|
+
maxBonusPayPercent?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Ставить ли статусную скидку в игру автоматически. С выключенным
|
|
40
|
+
* флагом программа остаётся сегментацией: бейдж в карточке виден,
|
|
41
|
+
* чек не меняется.
|
|
42
|
+
*/
|
|
43
|
+
autoApplyDiscount: boolean;
|
|
44
|
+
stacking: LoyaltyStackingEnum;
|
|
45
|
+
/**
|
|
46
|
+
* Смена режима заново замораживает дату отсечки `countFrom` по
|
|
47
|
+
* текущему дню, поэтому менять его после запуска стоит осознанно:
|
|
48
|
+
* счётчики всех клиентов пересчитаются.
|
|
49
|
+
*/
|
|
50
|
+
historyMode: LoyaltyHistoryModeEnum;
|
|
51
|
+
}
|