fix and rename types

This commit is contained in:
nflnkr 2023-02-28 16:13:55 +03:00
parent 4e8a8e4276
commit b206811b43
2 changed files with 48 additions and 40 deletions

@ -39,7 +39,7 @@ export interface Discount {
toCapacity: number;
}
// New types from snippet
export namespace Cart {
interface DiscountBase {
_id: string;
@ -78,8 +78,7 @@ export namespace Cart {
};
target: {
products: Array<{
/** TODO Судя по сниппету, это id привелегий, но названо "продукт" */
productId: string;
privilegeId: string;
/** Множитель, на который умножается сумма при применении скидки */
factor: number;
}>;
@ -123,8 +122,7 @@ export namespace Cart {
};
target: {
products: Array<{
/** TODO Судя по сниппету, это id привелегий, но названо "продукт" */
productId: string;
privilegeId: string;
/** Множитель, на который умножается сумма при применении скидки */
factor: number;
}>;
@ -150,7 +148,7 @@ export namespace Cart {
}
export interface CartItem {
item: Tariffs.Tariff;
tariff: Tariffs.Tariff;
/** Посчитанная цена пункта корзины */
price: number;
}
@ -160,13 +158,20 @@ export namespace Cart {
/** Массив с id примененных скидок */
envolvedDiscounts: string[];
totalPrice: number;
item: Tariffs.Tariff;
tariff: Tariffs.Tariff;
}
export type ServiceToPriceMap = {
[Key in Tariffs.ServiceType]: {
customTariffs: number;
defaultTariffs: number;
}
};
export interface CartTotal {
items: CartItemTotal[];
totalPrice: number;
priceByService: { [Key in Tariffs.ServiceType]: number; };
priceByService: ServiceToPriceMap;
envolvedCartDiscounts: string[];
}
}

@ -153,7 +153,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p1", // не знаю, стоит ли тут оставлять массив products, но на всякий случай оставлю. т.е. скидка, при срабатывании, применяется к этой привилегии в корзине, т.е. умножает её сумму на factor
"privilegeId": "p1", // не знаю, стоит ли тут оставлять массив products, но на всякий случай оставлю. т.е. скидка, при срабатывании, применяется к этой привилегии в корзине, т.е. умножает её сумму на factor
"factor": 0.975
}
]
@ -174,7 +174,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p1",
"privilegeId": "p1",
"factor": 0.975
}
]
@ -195,7 +195,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p1",
"privilegeId": "p1",
"factor": 0.93
}
]
@ -216,7 +216,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p2",
"privilegeId": "p2",
"factor": 0.995
}
]
@ -237,7 +237,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p2",
"privilegeId": "p2",
"factor": 0.98
}
]
@ -258,7 +258,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p2",
"privilegeId": "p2",
"factor": 0.945
}
]
@ -279,7 +279,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p3",
"privilegeId": "p3",
"factor": 0.97
}
]
@ -300,7 +300,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p3",
"privilegeId": "p3",
"factor": 0.93
}
]
@ -321,7 +321,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p3",
"privilegeId": "p3",
"factor": 0.85
}
]
@ -342,7 +342,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p4",
"privilegeId": "p4",
"factor": 0.98
}
]
@ -363,7 +363,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p4",
"privilegeId": "p4",
"factor": 0.96
}
]
@ -384,7 +384,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p4",
"privilegeId": "p4",
"factor": 0.9
}
]
@ -405,7 +405,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p5",
"privilegeId": "p5",
"factor": 0.99
}
]
@ -426,7 +426,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p5",
"privilegeId": "p5",
"factor": 0.98
}
]
@ -447,7 +447,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p5",
"privilegeId": "p5",
"factor": 0.97
}
]
@ -468,7 +468,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p6",
"privilegeId": "p6",
"factor": 0.99
}
]
@ -489,7 +489,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p6",
"privilegeId": "p6",
"factor": 0.965
}
]
@ -510,7 +510,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p6",
"privilegeId": "p6",
"factor": 0.935
}
]
@ -531,7 +531,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p7",
"privilegeId": "p7",
"factor": 0.935
}
]
@ -552,7 +552,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p7",
"privilegeId": "p7",
"factor": 0.875
}
]
@ -573,7 +573,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p7",
"privilegeId": "p7",
"factor": 0.83
}
]
@ -709,7 +709,7 @@ export const exampleCartValues: ExampleCartValues = {
"target": {
"products": [
{
"productId": "p6",
"privilegeId": "p6",
"factor": 0.5
}
]
@ -763,7 +763,7 @@ export const exampleCartValues: ExampleCartValues = {
},
]
},
"expect": {
"expect": { // работает если не учитывать скидки id26, id27 (скидка на templategen от 1000/5000 р.)
"price": 4925.0,
"envolvedDiscounts": [
"id4"
@ -794,7 +794,7 @@ export const exampleCartValues: ExampleCartValues = {
}
]
},
"expect": {
"expect": { // работает если не учитывать скидки id26, id27 (скидка на templategen от 1000/5000 р.)
"price": 5025.32,
"envolvedDiscounts": [
"id4",
@ -830,7 +830,7 @@ export const exampleCartValues: ExampleCartValues = {
}
]
},
"expect": {
"expect": { // работает если не учитывать скидки id26, id27 (скидка на templategen от 1000/5000 р.)
"price": 5223.9,
"envolvedDiscounts": [
"id4",
@ -867,7 +867,7 @@ export const exampleCartValues: ExampleCartValues = {
}
]
},
"expect": {
"expect": { // работает если не учитывать скидки id26, id27 (скидка на templategen от 1000/5000 р.)
"price": 5171.66,
"envolvedDiscounts": [
"id4",
@ -965,11 +965,14 @@ export const exampleCartValues: ExampleCartValues = {
"expect": {
"price": 750.96,
"envolvedDiscounts": [
"id19",
"id23",
"id25",
"id30",
"id1"
"id19", // p5, layer 1, value > 90, 0.97, pricePerUnit = 0.1
"id23", // p6, layer 1, value > 50, 0.935, pricePerUnit = 0.7
"id25", // p7, layer 1, value > 90, 0.83, pricePerUnit = 2
"id30", // dwarfener, layer 2, value > 500, 0.99
"id1" // layer 4, purchasesAmount > 10000, 0.99
// TODO Какая-то из скидок id30, id1 не учлась
// expected: (300 * 0.1 * 0.97 + 100 * 0.7 * 0.935 + 400 * 2 * 0.83) * 0.99 = 750.96
// received: (300 * 0.1 * 0.97 + 100 * 0.7 * 0.935 + 400 * 2 * 0.83) * 0.99 * 0.99 = 743.45
] // история про то, как получилось получить скидку за сервис
}
},
@ -1094,7 +1097,7 @@ export const exampleCartValues: ExampleCartValues = {
"expect": {
"price": 540, // сложил всю корзину и умножил на показатель скидки
"envolvedDiscounts": [
"id30"
"id32"
] // юзер подтвердил свой статус НКО, поэтому, не смотря на то что он достиг по лояльности уровня скидки id2, она не применилась, а применилась id32
}
}