From b206811b439c9e58ec0ffae3dd2e01bed2983a0a Mon Sep 17 00:00:00 2001 From: nflnkr <105123049+nflnkr@users.noreply.github.com> Date: Tue, 28 Feb 2023 16:13:55 +0300 Subject: [PATCH] fix and rename types --- src/model/cart.ts | 21 +++++---- src/stores/mocks/exampleCartValues.ts | 67 ++++++++++++++------------- 2 files changed, 48 insertions(+), 40 deletions(-) diff --git a/src/model/cart.ts b/src/model/cart.ts index 2764335..2c39740 100644 --- a/src/model/cart.ts +++ b/src/model/cart.ts @@ -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[]; } } \ No newline at end of file diff --git a/src/stores/mocks/exampleCartValues.ts b/src/stores/mocks/exampleCartValues.ts index d2ae05c..1bf9661 100644 --- a/src/stores/mocks/exampleCartValues.ts +++ b/src/stores/mocks/exampleCartValues.ts @@ -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 } }