1.22M

bcc_mvp_analysis_contract (2)

1.

ПОСТАНОВКА ЗАДАЧИ
Правила и условия: предлагаемое решение
Макет показывает
Текущий MarketingCard
• 3 условия выполнения
• выполнение в любом порядке
• прогресс 0 из 3
• переход в нужный платёж
• награда 2 000
В ответе уже есть title, data и контент
деталей. ruleExternalId связывает
карточки с правилом.
В новом ответе добавляем description
и conditions.
Предлагаемая модель:
Маркетинговая карточка содержит контент для отображения. Правило
определяет условия выполнения и награду. Backend хранит прогресс
клиента по каждому условию и по правилу в целом.
01

2.

ПОСТАНОВКА ЗАДАЧИ
Виды условий и сроки
Варианты карточки
Виды условий:
Обычная
Повторение: однократно или
каждый день / неделю / месяц.
Способ выполнения: одна
операция, накопление суммы или
количества, выполнение в каждом
интервале.
С повышенной наградой
Предлагаемое правило срока действия
По окончании периода невыполненное правило получает EXPIRED, без награды.
История сохраняется.
Для условия «каждый день» пропуск дня нельзя компенсировать покупками в
следующий день.
Новый период начинается с нуля, пока действует акция.
02

3.

ПРЕДЛАГАЕМАЯ АРХИТЕКТУРА
Backend управляет условиями и прогрессом
Операции клиента
Проверка условий
Прогресс и награда
Mobile BFF
Подтверждение,
отмена или реверс
операции
Проверяет сервис,
сумму, статус и
исключения
Рассчитывает прогресс,
период и начисление
награды
Объединяет
конфигурацию и
персональное состояние
Источник истины
Backend проверяет операции и рассчитывает
прогресс. Mobile отображает ответ и обновляет его
после возврата с оплаты.
Одно правило объединяет три условия. Для выполнения нужны 3 из 3 в одном периоде. Backend проверяет каждое
условие.
03

4.

GET /api/v1/rules/{ruleExternalId}/progress
Контракт для экрана условий
Один JSON: левая колонка продолжается в правой
{
"ruleExternalId": "123e4567-e89b-12d3-a456-426614174000",
"marketingCards": [
{
"id": 1,
"title": "Выполнение условий от bcc",
"description": "Оплатите услуги и пополните Onay",
"data": {
"activationType": "string",
"endDatePromo": "2026-09-22T10:48:08.053Z",
"rewardBase": 0,
"rewardPromo": 0,
"rewardTypeCode": "string"
},
"progress": { "completed": 0, "required": 3 },
"infoText": "Можно выполнять в любом порядке",
"conditions": [
{
"id": "condition-onay",
"title": "Пополнение карты Onay",
"description": "Пополните баланс Onay от 1 000 ₸",
"isCompleted": false,
"action": {
"type": "DEEPLINK",
"value": "bcc://payments/onay"
}
},
Пример значений. Маршруты DEEPLINK требуют привязки к навигации приложения.
{
}
]
}
]
"id": "condition-internet",
"title": "Оплата интернета",
"description":
"Оплатите интернет за текущий месяц",
"isCompleted": false,
"action": {
"type": "DEEPLINK",
"value": "bcc://payments/internet"
}
},
{
"id": "condition-utilities",
"title": "Оплата коммунальных услуг",
"description":
"Оплатите комуслуги за текущий месяц",
"isCompleted": false,
"action": {
"type": "DEEPLINK",
"value": "bcc://payments/utilities"
}
}

5.

Предлагаемая логика выполнения и повторения
1
ONE_TIME: одно выполнение правила на клиента за весь срок акции. После завершения или истечения новое
прохождение не создаётся.
2
PERIODIC: каждый день, неделю или месяц. Backend определяет период и возвращает актуальный прогресс.
Даты периода в mobile-контракт не передаём.
3
Выполнение правила: все три условия должны завершиться в одном периоде. Частичный прогресс между
периодами не переносится.
4
По окончании периода незавершённое прохождение получает EXPIRED. История сохраняется. Новый период
начинается с нуля, пока действует акция.
5
Кросс-прогресс: платёж Onay на 3 000 ₸ учитывается и в условии Onay, и в общих тратах 10 000 ₸, если подходит
обоим. Один платёж учитывается один раз в каждом условии. При отмене backend пересчитывает его вклад.
05
English     Русский Правила