Методология
Биллинг и кредиты
Транзакционная модель hold/settle/refund, тарифы по сетям, идемпотентность списаний.
Биллинг и кредиты
Скоринг тарифицируется кредитами. Стоимость известна до запуска анализа, а неуспешный скоринг не тарифицируется.
Тарифы по сетям
| Сеть | Кредитов за скоринг |
|---|---|
| Ethereum | 1 |
| BNB Chain | 1 |
| TRON | 3 |
| Bitcoin | 3 |
Матрица цен — конфигурация продукта, а не хардкод в клиентском UI.
Транзакционная механика: hold / settle / refund
Списание кредитов проходит три фазы — аналог предавторизации банковской карты:
flowchart LR
A[Запрос скоринга] --> B{Баланс достаточен?}
B -- нет --> R1[Отказ до начала работы]
B -- да --> C[Hold: резерв стоимости]
C --> D{Результат}
D -- успех --> E[Settle: списание резерва]
D -- ошибка --> F[Refund: полный возврат резерва]- Hold — при постановке задачи резервируется стоимость в кредитах; запрос без достаточного баланса отклоняется до начала работы.
- Settle — при успешном завершении резерв списывается.
- Refund — при ошибке резерв возвращается полностью.
Такой паттерн гарантирует, что клиент не платит за неуспешные скоринги, а платформа не работает в долг.
Идемпотентность
Идемпотентность по ключу запроса (Idempotency-Key) исключает двойное списание при ретраях: повтор с тем же ключом и тем же payload возвращает тот же ресурс и не приводит к повторному списанию кредитов. Это прямое требование ТЗ (FR-CRD-001…006):
- баланс контролируется через immutable ledger — каждая операция имеет запись в журнале;
- ledger ссылается на
analysis_id/job_id/ admin-операцию — полная трассировка; - reserve перед анализом, charge при успехе, release/refund при сбое — необоснованных списаний нет.