Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ export default defineConfig({
{ text:'Арбитраж',link: '/guides/loyalty/promotions/arbitr.md' }
]
},
{
text: 'Сертификаты',
collapsed: true,
items: [
{ text:'Использование персональных сертификатов',link: '/guides/loyalty/certificates/certificates-by-phone-number.md' }
]
},
{ text: 'Как работает списание бонусов', link: '/guides/loyalty/bonuses-mechanics.md' },
]
},
Expand Down
81 changes: 81 additions & 0 deletions docs/guides/loyalty/certificates/certificates-by-phone-number.md

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может коротко сказать что такое персональный сертификат (или дать ссылку на описание)
главное - может быть принят к оплате только при предъявлении номера телефона юзера, на которого оформлен этот сертификат (доп функция проверки)

Ну и допом, может быть использован для оплаты только по предъявлению номера телефона

какая цель статьи - она описывает перс сертификат или логику его применения?
со старта не вполне понятно - по названию и по тексту

7: В настройках чего - то есть эта параметр метода который нам передают , но не настройки
9: "персональные в этом подсчете" - пропущено слово сертификаты
13: вот здесь исходит от отрицания (тройное), а я бы построила наоборот, например: чтобы перс сертификаты применились (а он может быть применен не только один, а несколько сразу - что очень важно) должны быть соблюдены условия: выигрыш сертификата в арбитраже в лучшей комбинации, в том числе и перед другими сертификатами ( и дать ссылку на арбитраж) + телефон юзера и

я бы вообще ушла от отрицания в текстах (по стилистике текста), если это не прямой запрет - не должно быть...

  1. ты о чем - в меню интерфейсе нет такой настройки. В параметре метода есть, если она активирована, то сертификат можно использовать только предъявив номер телефона, к которому привязаны именные сертификаты

Саш, начала править, а потом поняла ,мне кажется - здесь логический принцип не тот
перс сертификат можно применить насколько я помню - без какого либо разрешения
если введен код сертификатов И и введен телефон юзера, владельца сертификатов, тогда сертификаты играют в арбитраже

Параметр в запросе " персональный сертификат" - это только для того, чтобы персональные сертификаты юзера ( код которого передан в запросе) участвовали в оплате и арбитраже без предъявления кодов
достаточно номера телефона и TRUE по параметру "use_personal_certificates"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И мне кажется, если позволишь, можно проще - сейчас сложно читается
если ты говоришь про идентификатор, потом номер телефона - это как-то длинный путь

в запросах есть параметр "identifier"
в нем должен быть номер телефона юзера, на которого оформлен перс сертификат - только тогда он (они) становятся доступными к применению в заказе
или должен быть флаг, тогда\а номера сертификатов не надо пеедавать в запросе: система пойдет в юзера, увидит его сертификаты все и разрешит их применить в рамках возможностей по заказу

если что можем созвонится - может голосом проще?

Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Использование персональных сертификатов

::: tip Коротко о том, как это работает
<details>

После включения настройки персональные сертификаты будут учитываться методом `checkout/estimate`.

При наличии других доступных сертификатов, алгоритм выберет наиболее приоритетный. Не обязательно будет использован именно персональный сертификат.

</details>
:::
// TODO иллюстрация и описание по настройкам

Выбор соответствующей настройки в меню активирует флаг `use_personal_certificates`.

Если включён этот флаг, метод `checkout/estimate` учитывает персональные сертификаты при расчёте итоговой суммы заказа.

Доступные сертификаты определяются с помощью идентификатора. В рамках программы лояльности это номер телефона.

Процесс выглядит так:

1. Выполняется проверка активности флага `use_personal_certificates` и наличия идентификатора
2. Cистема находит все сертификаты, доступные пользователю, включая персональные
3. Система рассчитывает возможность применения найденных сертификатов к корзине.

::: tip Для справки

Акции обрабатываются отдельным процессором. Поэтому сертификаты, включая персональные, не влияют на выбор акций. И наоборот.

:::

## Типы сертификатов и ограничения

Метод `checkout/estimate` работает со всеми сертификатами, доступными пользователю.

Из-за этого для сертификатов действуют правила выбора и ограничения применения. Три типа сертификатов:

1. Обычный
2. Промо
3. Персональный

::: warning Ключевое ограничение

К корзине может быть применён только один промо-сертификат

:::

Обычные сертификаты могут применяться сразу по несколько штук за раз. Но есть ограничения:

1. Стоимость товара не может быть полностью оплачена сертификатом. Даже если настройки на стороне магазина предусматривают максимальную долю оплаты сертификатом, покупателю в любом случае нужно будет заплатить хотя бы один рубль // TODO проверить
2. Максимальная доля оплаты сертификатами настраивается на стороне магазина. Допустимая доля оплаты сертификатами определяется настройками

// TODO Иллюстрация настроек в админке магазина плюс описание

Промо сертификаты нельзя применить больше одного раза к конкретной корзине.

Персональные сертификаты учитываются только после идентификации покупателя по номеру телефона.

## Алгоритм выбора сертификата

Метод `checkout/estimate` работает сразу со всеми доступными сертификатами.

Система выбирает сертификат с помощью многоуровневой сортировки:

1. Доля оплаты с помощью сертификата. Чем меньший процент стоимости товара можно оплатить с помощью сертификата, тем выше его приоритет на применение к корзине
2. Срок годности. Чем ближе сертификат к сроку истечения годности, тем выше его приоритет // TODO - подумать над формулировкой срока годности
3. Дата активации. Приоритет получают сертификаты с более ранней датой активации.
4. Остаток на балансе. Чем меньше оставшаяся сумма, тем вероятнее будет использован сертификат
5. ID (сортировка по возрастанию)

Алгоритм направлен на то, чтобы минимизировать риск истечения сертификатов и потери оставшихся на них средств.

## Жизненный цикл сертификата

| Этап | Метод | Действие | Статус сертификата |
|---------------|---------------------|---------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| Расчет | `checkout/estimate` | Проверка, какие сертификаты можно применить | `active` (не меняется) |
| Применение | `checkout/apply` | Создание транзакций списания | `active` → `finished` (баланс меняется) |
| Подтверждение | `checkout/confirm` | Подтверждение (статус сертификата не меняется) | `finished` (не меняется) |
| Отмена | `checkout/cancel` | Возврат баланса, создание возвратных транзакций | `finished` → `active` (баланс восстанавливается) |
| Изменение | `checkout/change` | Изменение суммы списания ( в связи с изменением состава/количества товаров в корзине) | `finished` → `active` (частично, если баланс не обнулен полностью) |