diff --git a/data/operations_queue_test.json b/data/operations_queue_test.json
new file mode 100644
index 0000000..a5e0015
--- /dev/null
+++ b/data/operations_queue_test.json
@@ -0,0 +1,1172 @@
+[
+ {
+ "operation_id": "op_111",
+ "created_at": "2026-07-30T09:10:00+03:00",
+ "amount": 8000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002113576",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_112",
+ "created_at": "2026-07-30T09:10:30+03:00",
+ "amount": 40000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002121495",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_113",
+ "created_at": "2026-07-30T09:11:00+03:00",
+ "amount": 10000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002129414",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_114",
+ "created_at": "2026-07-30T09:11:30+03:00",
+ "amount": 75000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002137333",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_115",
+ "created_at": "2026-07-30T09:12:00+03:00",
+ "amount": 52000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002145252",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_116",
+ "created_at": "2026-07-30T09:12:30+03:00",
+ "amount": 20000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002153171",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_117",
+ "created_at": "2026-07-30T09:13:00+03:00",
+ "amount": 2000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002161090",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_118",
+ "created_at": "2026-07-30T09:13:30+03:00",
+ "amount": 80000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002169009",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_119",
+ "created_at": "2026-07-30T09:14:00+03:00",
+ "amount": 900,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002176928",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_120",
+ "created_at": "2026-07-30T09:14:30+03:00",
+ "amount": 150000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002184847",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_121",
+ "created_at": "2026-07-30T09:15:00+03:00",
+ "amount": 75000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002192766",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_122",
+ "created_at": "2026-07-30T09:15:30+03:00",
+ "amount": 25000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002200685",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_123",
+ "created_at": "2026-07-30T09:16:00+03:00",
+ "amount": 80000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002208604",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_124",
+ "created_at": "2026-07-30T09:16:30+03:00",
+ "amount": 25000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002216523",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_125",
+ "created_at": "2026-07-30T09:17:00+03:00",
+ "amount": 45000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002224442",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_126",
+ "created_at": "2026-07-30T09:17:30+03:00",
+ "amount": 15000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002232361",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_127",
+ "created_at": "2026-07-30T09:18:00+03:00",
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002240280",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_128",
+ "created_at": "2026-07-30T09:18:30+03:00",
+ "amount": 40000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002248199",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_129",
+ "created_at": "2026-07-30T09:19:00+03:00",
+ "amount": 52000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002256118",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_130",
+ "created_at": "2026-07-30T09:19:30+03:00",
+ "amount": 95000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002264037",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_131",
+ "created_at": "2026-07-30T09:20:00+03:00",
+ "amount": 150000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002271956",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_132",
+ "created_at": "2026-07-30T09:20:30+03:00",
+ "amount": 3000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002279875",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_133",
+ "created_at": "2026-07-30T09:21:00+03:00",
+ "amount": 8000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002287794",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_134",
+ "created_at": "2026-07-30T09:21:30+03:00",
+ "amount": 12000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002295713",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_135",
+ "created_at": "2026-07-30T09:22:00+03:00",
+ "amount": 800,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002303632",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_136",
+ "created_at": "2026-07-30T09:22:30+03:00",
+ "amount": 35000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002311551",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_137",
+ "created_at": "2026-07-30T09:23:00+03:00",
+ "amount": 180000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002319470",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_138",
+ "created_at": "2026-07-30T09:23:30+03:00",
+ "amount": 180000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002327389",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_139",
+ "created_at": "2026-07-30T09:24:00+03:00",
+ "amount": 900,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002335308",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_140",
+ "created_at": "2026-07-30T09:24:30+03:00",
+ "amount": 40000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002343227",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_141",
+ "created_at": "2026-07-30T09:25:00+03:00",
+ "amount": 8000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002351146",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_142",
+ "created_at": "2026-07-30T09:25:30+03:00",
+ "amount": 10000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002359065",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_143",
+ "created_at": "2026-07-30T09:26:00+03:00",
+ "amount": 35000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002366984",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_144",
+ "created_at": "2026-07-30T09:26:30+03:00",
+ "amount": 2000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002374903",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_145",
+ "created_at": "2026-07-30T09:27:00+03:00",
+ "amount": 10000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002382822",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_146",
+ "created_at": "2026-07-30T09:27:30+03:00",
+ "amount": 900,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002390741",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_147",
+ "created_at": "2026-07-30T09:28:00+03:00",
+ "amount": 5000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002398660",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_148",
+ "created_at": "2026-07-30T09:28:30+03:00",
+ "amount": 15000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002406579",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_149",
+ "created_at": "2026-07-30T09:29:00+03:00",
+ "amount": 80000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002414498",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_150",
+ "created_at": "2026-07-30T09:29:30+03:00",
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002422417",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_151",
+ "created_at": "2026-07-30T09:30:00+03:00",
+ "amount": 25000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002430336",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_152",
+ "created_at": "2026-07-30T09:30:30+03:00",
+ "amount": 15000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002438255",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_153",
+ "created_at": "2026-07-30T09:31:00+03:00",
+ "amount": 2000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002446174",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_154",
+ "created_at": "2026-07-30T09:31:30+03:00",
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002454093",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_155",
+ "created_at": "2026-07-30T09:32:00+03:00",
+ "amount": 95000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002462012",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_156",
+ "created_at": "2026-07-30T09:32:30+03:00",
+ "amount": 150000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002469931",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_157",
+ "created_at": "2026-07-30T09:33:00+03:00",
+ "amount": 10000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002477850",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_158",
+ "created_at": "2026-07-30T09:33:30+03:00",
+ "amount": 42000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002485769",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_159",
+ "created_at": "2026-07-30T09:34:00+03:00",
+ "amount": 48000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002493688",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_160",
+ "created_at": "2026-07-30T09:34:30+03:00",
+ "amount": 120000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002501607",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_161",
+ "created_at": "2026-07-30T09:35:00+03:00",
+ "amount": 150000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002509526",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_162",
+ "created_at": "2026-07-30T09:35:30+03:00",
+ "amount": 30000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002517445",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_163",
+ "created_at": "2026-07-30T09:36:00+03:00",
+ "amount": 40000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002525364",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_164",
+ "created_at": "2026-07-30T09:36:30+03:00",
+ "amount": 800,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002533283",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_165",
+ "created_at": "2026-07-30T09:37:00+03:00",
+ "amount": 3000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002541202",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_166",
+ "created_at": "2026-07-30T09:37:30+03:00",
+ "amount": 120000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002549121",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_167",
+ "created_at": "2026-07-30T09:38:00+03:00",
+ "amount": 25000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002557040",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_168",
+ "created_at": "2026-07-30T09:38:30+03:00",
+ "amount": 52000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002564959",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_169",
+ "created_at": "2026-07-30T09:39:00+03:00",
+ "amount": 10000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002572878",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_170",
+ "created_at": "2026-07-30T09:39:30+03:00",
+ "amount": 1500,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002580797",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_171",
+ "created_at": "2026-07-30T09:40:00+03:00",
+ "amount": 3000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002588716",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_172",
+ "created_at": "2026-07-30T09:40:30+03:00",
+ "amount": 8000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002596635",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_173",
+ "created_at": "2026-07-30T09:41:00+03:00",
+ "amount": 12000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002604554",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_174",
+ "created_at": "2026-07-30T09:41:30+03:00",
+ "amount": 8000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002612473",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_175",
+ "created_at": "2026-07-30T09:42:00+03:00",
+ "amount": 10000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002620392",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_176",
+ "created_at": "2026-07-30T09:42:30+03:00",
+ "amount": 900,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002628311",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_177",
+ "created_at": "2026-07-30T09:43:00+03:00",
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002636230",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_178",
+ "created_at": "2026-07-30T09:43:30+03:00",
+ "amount": 120000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002644149",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_179",
+ "created_at": "2026-07-30T09:44:00+03:00",
+ "amount": 1500,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002652068",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_180",
+ "created_at": "2026-07-30T09:44:30+03:00",
+ "amount": 180000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002659987",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_181",
+ "created_at": "2026-07-30T09:45:00+03:00",
+ "amount": 1500,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002667906",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_182",
+ "created_at": "2026-07-30T09:45:30+03:00",
+ "amount": 1500,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002675825",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_183",
+ "created_at": "2026-07-30T09:46:00+03:00",
+ "amount": 40000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002683744",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_184",
+ "created_at": "2026-07-30T09:46:30+03:00",
+ "amount": 1500,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002691663",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_185",
+ "created_at": "2026-07-30T09:47:00+03:00",
+ "amount": 3000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002699582",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_186",
+ "created_at": "2026-07-30T09:47:30+03:00",
+ "amount": 95000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002707501",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_187",
+ "created_at": "2026-07-30T09:48:00+03:00",
+ "amount": 8000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002715420",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_188",
+ "created_at": "2026-07-30T09:48:30+03:00",
+ "amount": 12000,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002723339",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_189",
+ "created_at": "2026-07-30T09:49:00+03:00",
+ "amount": 15000,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002731258",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_190",
+ "created_at": "2026-07-30T09:49:30+03:00",
+ "amount": 900,
+ "bank": "alfa",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002739177",
+ "bank_name": "Альфа-Банк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_191",
+ "created_at": "2026-07-30T09:50:00+03:00",
+ "amount": 8000,
+ "bank": "sberbank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002747096",
+ "bank_name": "Сбербанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_192",
+ "created_at": "2026-07-30T09:50:30+03:00",
+ "amount": 55000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002755015",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_193",
+ "created_at": "2026-07-30T09:51:00+03:00",
+ "amount": 2000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002762934",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_194",
+ "created_at": "2026-07-30T09:51:30+03:00",
+ "amount": 3000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002770853",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_195",
+ "created_at": "2026-07-30T09:52:00+03:00",
+ "amount": 40000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002778772",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_196",
+ "created_at": "2026-07-30T09:52:30+03:00",
+ "amount": 2000,
+ "bank": "gazprombank",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002786691",
+ "bank_name": "Газпромбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_197",
+ "created_at": "2026-07-30T09:53:00+03:00",
+ "amount": 8000,
+ "bank": "vtb",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002794610",
+ "bank_name": "ВТБ"
+ }
+ }
+ },
+ {
+ "operation_id": "op_198",
+ "created_at": "2026-07-30T09:53:30+03:00",
+ "amount": 52000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002802529",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ },
+ {
+ "operation_id": "op_199",
+ "created_at": "2026-07-30T09:54:00+03:00",
+ "amount": 900,
+ "bank": "tinkoff",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002810448",
+ "bank_name": "Тинькофф"
+ }
+ }
+ },
+ {
+ "operation_id": "op_200",
+ "created_at": "2026-07-30T09:54:30+03:00",
+ "amount": 30000,
+ "bank": "raiffeisen",
+ "card_brand": null,
+ "payout_requisite": {
+ "sbp": {
+ "phone": "79002818367",
+ "bank_name": "Райффайзенбанк"
+ }
+ }
+ }
+]
diff --git a/routing_cascade_demo_test.json b/routing_cascade_demo_test.json
new file mode 100644
index 0000000..7f31ac0
--- /dev/null
+++ b/routing_cascade_demo_test.json
@@ -0,0 +1,10943 @@
+{
+ "note": "основной прогон — optimistic, отказов в routing_decisions нет по построению. Здесь та же очередь и политика, исходы разыграны по conversion_24h (seed 42): видно переход к следующему провайдеру и fallback. Полные решения этого прогона в формате routing_decisions — в routing_cascade_demo*.json рядом с отчётом",
+ "simulation": {
+ "mode": "conversion",
+ "seed": 42
+ },
+ "operations": 90,
+ "decisions": [
+ {
+ "operation_id": "op_111",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.55,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.85,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 0.0% vs target 35.0% (+35.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4103,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 39.0% vs target 30.0% (-9.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0333,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 96.7% (daily 96.7%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3020000)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.45 < 0.55 (payflow)",
+ "score": 0.45,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.75,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 0.0% vs target 25.0% (+25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5516,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 14.8% vs target 20.0% (+5.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8625,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 13.8% (daily 13.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 8000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:10:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_112",
+ "selected_provider": "quickpay",
+ "reason": "fallback_after_failure",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 38s (score 0.6; decisive: traffic_share (+0.3), cascade_priority (+0.1))",
+ "score": 0.6,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.9,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 0.0% vs target 40.0% (+40.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5385,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 46.1% vs target 50.0% (+3.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.36,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 64.0% (daily 64.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "fallback_after_failure",
+ "details": "retry #1 after failure; score 0.4; decisive: load (+0.15), volume_share (+0.1)",
+ "score": 0.4,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.75,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 0.0% vs target 25.0% (+25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5518,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 14.8% vs target 20.0% (+5.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8625,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 13.8% (daily 13.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:10:30+03:00",
+ "retries": 1,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_113",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4324; decisive: load (+0.129), traffic_share (+0.075)",
+ "score": 0.4324,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "weight": 0.3,
+ "weighted": 0.075,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5482,
+ "weight": 0.1,
+ "weighted": 0.0548,
+ "note": "volume share 15.2% vs target 20.0% (+4.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8575,
+ "weight": 0.15,
+ "weighted": 0.1286,
+ "note": "utilization 14.2% (daily 14.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 10000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:11:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_114",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "75000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.9,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 0.0% vs target 40.0% (+40.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5415,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 45.9% vs target 50.0% (+4.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.36,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 64.0% (daily 64.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.0833,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 66.7% vs target 25.0% (-41.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5463,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 15.4% vs target 20.0% (+4.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.8563,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 14.4% (daily 14.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 75000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:11:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_115",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.625; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.625,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.65,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 25.0% vs target 40.0% (+15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5363,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 46.4% vs target 50.0% (+3.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.36,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 64.0% (daily 64.0%, in_progress 50.0%/45.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.375 < 0.625 (vipay)",
+ "score": 0.375,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5478,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 15.2% vs target 20.0% (+4.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8563,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 14.4% (daily 14.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 52000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:12:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_116",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 29s (score 0.4656; decisive: load (+0.128), traffic_share (+0.105))",
+ "score": 0.4656,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.35,
+ "weight": 0.3,
+ "weighted": 0.105,
+ "note": "count share 40.0% vs target 25.0% (-15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5488,
+ "weight": 0.1,
+ "weighted": 0.0549,
+ "note": "volume share 15.1% vs target 20.0% (+4.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8563,
+ "weight": 0.15,
+ "weighted": 0.1284,
+ "note": "utilization 14.4% (daily 14.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 29
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: bank_not_in_list; payflow: bank_not_in_list; quickpay: provider_rejected",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 20000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:12:30+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_117",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.625; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.625,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5328,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 46.7% vs target 50.0% (+3.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.3346,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 66.5% (daily 66.5%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.375 < 0.625 (vipay)",
+ "score": 0.375,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4167,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 33.3% vs target 25.0% (-8.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.5488,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 15.1% vs target 20.0% (+4.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8563,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 14.4% (daily 14.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 2000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:13:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_118",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "80000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 29s (score 0.4999; decisive: traffic_share (+0.139), load (+0.128))",
+ "score": 0.4999,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4643,
+ "weight": 0.3,
+ "weighted": 0.1393,
+ "note": "count share 28.6% vs target 25.0% (-3.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5488,
+ "weight": 0.1,
+ "weighted": 0.0549,
+ "note": "volume share 15.1% vs target 20.0% (+4.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8563,
+ "weight": 0.15,
+ "weighted": 0.1284,
+ "note": "utilization 14.4% (daily 14.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 29
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: bank_not_in_list; payflow: amount_exceeds_limit; quickpay: provider_rejected",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 80000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:13:30+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_119",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5727; decisive: traffic_share (+0.218), amount_band (+0.1)",
+ "score": 0.5727,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.725,
+ "weight": 0.3,
+ "weighted": 0.2175,
+ "note": "count share 12.5% vs target 35.0% (+22.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4185,
+ "weight": 0.1,
+ "weighted": 0.0418,
+ "note": "volume share 38.2% vs target 30.0% (-8.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "weight": 0.05,
+ "weighted": 0.0213,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0307,
+ "weight": 0.15,
+ "weighted": 0.0046,
+ "note": "utilization 96.9% (daily 96.9%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3028000)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 900,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:14:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_120",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.6089; decisive: traffic_share (+0.158), load (+0.128)",
+ "score": 0.6089,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5278,
+ "weight": 0.3,
+ "weighted": 0.1583,
+ "note": "count share 22.2% vs target 25.0% (+2.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.5488,
+ "weight": 0.1,
+ "weighted": 0.0549,
+ "note": "volume share 15.1% vs target 20.0% (+4.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "weight": 0.05,
+ "weighted": 0.0225,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.8563,
+ "weight": 0.15,
+ "weighted": 0.1284,
+ "note": "utilization 14.4% (daily 14.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 150000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:14:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_121",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "75000 > limit_amount_max 50000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.825; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.825,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 30.0% vs target 40.0% (+10.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5414,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 45.9% vs target 50.0% (+4.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.3342,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 66.6% (daily 66.6%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.175 < 0.825 (vipay)",
+ "score": 0.175,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.45,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 30.0% vs target 25.0% (-5.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5331,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 16.7% vs target 20.0% (+3.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.8375,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 16.2% (daily 16.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 75000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:15:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_122",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5364,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 36.4% vs target 40.0% (+3.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5364,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 46.4% vs target 50.0% (+3.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.3342,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 66.6% (daily 66.6%, in_progress 50.0%/45.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4773,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 27.3% vs target 25.0% (-2.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.5346,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 16.5% vs target 20.0% (+3.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.8375,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 16.2% (daily 16.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:15:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_123",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "80000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5064; decisive: traffic_share (+0.15), load (+0.126)",
+ "score": 0.5064,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5,
+ "weight": 0.3,
+ "weighted": 0.15,
+ "note": "count share 25.0% vs target 25.0% (+0.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5351,
+ "weight": 0.1,
+ "weighted": 0.0535,
+ "note": "volume share 16.5% vs target 20.0% (+3.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8375,
+ "weight": 0.15,
+ "weighted": 0.1256,
+ "note": "utilization 16.2% (daily 16.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 80000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:16:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_124",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.5648; decisive vs payflow: volume_share (+0.1), conversion (+0.1)",
+ "score": 0.5648,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5154,
+ "normalized": 0.2879,
+ "weight": 0.3,
+ "weighted": 0.0864,
+ "note": "count share 38.5% vs target 40.0% (+1.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5393,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 46.1% vs target 50.0% (+3.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.3142,
+ "normalized": 0.3561,
+ "weight": 0.15,
+ "weighted": 0.0534,
+ "note": "utilization 68.6% (daily 68.6%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.5471 < 0.5648 (vipay)",
+ "score": 0.5471,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6962,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 15.4% vs target 35.0% (+19.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.4337,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 36.6% vs target 30.0% (-6.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.6241,
+ "normalized": 0.4418,
+ "weight": 0.05,
+ "weighted": 0.0221,
+ "note": "sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%"
+ },
+ "load": {
+ "score": 0.0304,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.0% (daily 97.0%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3028900)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ }
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.3059 < 0.5648 (vipay)",
+ "score": 0.3059,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4423,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 30.8% vs target 25.0% (-5.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.527,
+ "normalized": 0.8839,
+ "weight": 0.1,
+ "weighted": 0.0884,
+ "note": "volume share 17.3% vs target 20.0% (+2.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.4247,
+ "weight": 0.1,
+ "weighted": 0.0425,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.8275,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 17.2% (daily 17.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:16:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_125",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.675,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4714,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 42.9% vs target 40.0% (-2.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.5377,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 46.2% vs target 50.0% (+3.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.3142,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 68.6% (daily 68.6%, in_progress 50.0%/40.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.325 < 0.675 (vipay)",
+ "score": 0.325,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4643,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 28.6% vs target 25.0% (-3.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5276,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 17.2% vs target 20.0% (+2.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8275,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 17.2% (daily 17.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 45000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:17:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_126",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.55,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.7167,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 13.3% vs target 35.0% (+21.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4367,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 36.3% vs target 30.0% (-6.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0304,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.0% (daily 97.0%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3028900)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.45 < 0.55 (payflow)",
+ "score": 0.45,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4833,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 26.7% vs target 25.0% (-1.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5285,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 17.2% vs target 20.0% (+2.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8275,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 17.2% (daily 17.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 15000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:17:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_127",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5072; decisive: traffic_share (+0.15), load (+0.124)",
+ "score": 0.5072,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5,
+ "weight": 0.3,
+ "weighted": 0.15,
+ "note": "count share 25.0% vs target 25.0% (+0.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5288,
+ "weight": 0.1,
+ "weighted": 0.0529,
+ "note": "volume share 17.1% vs target 20.0% (+2.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8275,
+ "weight": 0.15,
+ "weighted": 0.1241,
+ "note": "utilization 17.2% (daily 17.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:18:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_128",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4894; decisive: traffic_share (+0.137), load (+0.123)",
+ "score": 0.4894,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4559,
+ "weight": 0.3,
+ "weighted": 0.1368,
+ "note": "count share 29.4% vs target 25.0% (-4.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.5247,
+ "weight": 0.1,
+ "weighted": 0.0525,
+ "note": "volume share 17.5% vs target 20.0% (+2.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8223,
+ "weight": 0.15,
+ "weighted": 0.1233,
+ "note": "utilization 17.8% (daily 17.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:18:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_129",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4765; decisive: traffic_share (+0.125), load (+0.123)",
+ "score": 0.4765,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4167,
+ "weight": 0.3,
+ "weighted": 0.125,
+ "note": "count share 33.3% vs target 25.0% (-8.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.5207,
+ "weight": 0.1,
+ "weighted": 0.0521,
+ "note": "volume share 17.9% vs target 20.0% (+2.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8173,
+ "weight": 0.15,
+ "weighted": 0.1226,
+ "note": "utilization 18.3% (daily 18.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 52000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:19:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_130",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "95000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4645; decisive: load (+0.122), traffic_share (+0.114)",
+ "score": 0.4645,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3816,
+ "weight": 0.3,
+ "weighted": 0.1145,
+ "note": "count share 36.8% vs target 25.0% (-11.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.5157,
+ "weight": 0.1,
+ "weighted": 0.0516,
+ "note": "volume share 18.4% vs target 20.0% (+1.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8108,
+ "weight": 0.15,
+ "weighted": 0.1216,
+ "note": "utilization 18.9% (daily 18.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 95000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:19:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_131",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5586; decisive: load (+0.12), traffic_share (+0.105)",
+ "score": 0.5586,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.35,
+ "weight": 0.3,
+ "weighted": 0.105,
+ "note": "count share 40.0% vs target 25.0% (-15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5067,
+ "weight": 0.1,
+ "weighted": 0.0507,
+ "note": "volume share 19.3% vs target 20.0% (+0.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "weight": 0.05,
+ "weighted": 0.0416,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.7989,
+ "weight": 0.15,
+ "weighted": 0.1198,
+ "note": "utilization 20.1% (daily 20.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 150000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:20:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_132",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5558,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 44.4% vs target 50.0% (+5.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.3002,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 70.0% (daily 70.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3214,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 42.9% vs target 25.0% (-17.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.4928,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 20.7% vs target 20.0% (-0.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.7801,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 22.0% (daily 22.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 3000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:20:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_133",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4458; decisive: load (+0.117), traffic_share (+0.102)",
+ "score": 0.4458,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3409,
+ "weight": 0.3,
+ "weighted": 0.1023,
+ "note": "count share 40.9% vs target 25.0% (-15.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.4929,
+ "weight": 0.1,
+ "weighted": 0.0493,
+ "note": "volume share 20.7% vs target 20.0% (-0.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.7801,
+ "weight": 0.15,
+ "weighted": 0.117,
+ "note": "utilization 22.0% (daily 22.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 8000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:21:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_134",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5522,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 34.8% vs target 40.0% (+5.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.556,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 44.4% vs target 50.0% (+5.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2996,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 70.0% (daily 70.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3152,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 43.5% vs target 25.0% (-18.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4922,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 20.8% vs target 20.0% (-0.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7791,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 22.1% (daily 22.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 12000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:21:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_135",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5852; decisive: traffic_share (+0.218), amount_band (+0.1)",
+ "score": 0.5852,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.725,
+ "weight": 0.3,
+ "weighted": 0.2175,
+ "note": "count share 12.5% vs target 35.0% (+22.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4523,
+ "weight": 0.1,
+ "weighted": 0.0452,
+ "note": "volume share 34.8% vs target 30.0% (-4.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.6241,
+ "weight": 0.05,
+ "weighted": 0.0312,
+ "note": "sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%"
+ },
+ "load": {
+ "score": 0.0254,
+ "weight": 0.15,
+ "weighted": 0.0038,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3043900)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 800,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:22:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_136",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.75,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.54,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 36.0% vs target 40.0% (+4.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5553,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 44.5% vs target 50.0% (+5.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2972,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 70.3% (daily 70.3%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.25 < 0.75 (vipay)",
+ "score": 0.25,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.35,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 40.0% vs target 25.0% (-15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4925,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 20.8% vs target 20.0% (-0.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7791,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 22.1% (daily 22.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 35000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:22:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_137",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5431; decisive: load (+0.117), traffic_share (+0.11)",
+ "score": 0.5431,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3654,
+ "weight": 0.3,
+ "weighted": 0.1096,
+ "note": "count share 38.5% vs target 25.0% (-13.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4933,
+ "weight": 0.1,
+ "weighted": 0.0493,
+ "note": "volume share 20.7% vs target 20.0% (-0.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "weight": 0.05,
+ "weighted": 0.0225,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.7791,
+ "weight": 0.15,
+ "weighted": 0.1169,
+ "note": "utilization 22.1% (daily 22.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 180000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:23:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_138",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 29s (score 0.5379; decisive: load (+0.113), traffic_share (+0.103))",
+ "score": 0.5379,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3426,
+ "weight": 0.3,
+ "weighted": 0.1028,
+ "note": "count share 40.7% vs target 25.0% (-15.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4774,
+ "weight": 0.1,
+ "weighted": 0.0477,
+ "note": "volume share 22.3% vs target 20.0% (-2.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.7566,
+ "weight": 0.15,
+ "weighted": 0.1135,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 29
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: amount_exceeds_limit; payflow: amount_exceeds_limit; quickpay: provider_rejected",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 180000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:23:30+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_139",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5707; decisive: traffic_share (+0.212), amount_band (+0.1)",
+ "score": 0.5707,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.7071,
+ "weight": 0.3,
+ "weighted": 0.2121,
+ "note": "count share 14.3% vs target 35.0% (+20.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4606,
+ "weight": 0.1,
+ "weighted": 0.0461,
+ "note": "volume share 33.9% vs target 30.0% (-3.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "weight": 0.05,
+ "weighted": 0.0213,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0251,
+ "weight": 0.15,
+ "weighted": 0.0038,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3044700)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 900,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:24:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_140",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.525; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.525,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6776,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 17.2% vs target 35.0% (+17.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.4605,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 33.9% vs target 30.0% (-3.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0251,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 37.5%/24.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3045600)"
+ },
+ "rate_headroom": {
+ "score": 0.8571,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.475 < 0.525 (payflow)",
+ "score": 0.475,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3707,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 37.9% vs target 25.0% (-12.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.4774,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 22.3% vs target 20.0% (-2.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7566,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 40000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:24:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_141",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.525; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.525,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.65,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 20.0% vs target 35.0% (+15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4576,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.2% vs target 30.0% (-4.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0248,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 37.5%/32.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3085600)"
+ },
+ "rate_headroom": {
+ "score": 0.8571,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.475 < 0.525 (payflow)",
+ "score": 0.475,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3833,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 36.7% vs target 25.0% (-11.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4784,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 22.2% vs target 20.0% (-2.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7566,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 8000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:25:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_142",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.7; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.7,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5774,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.3% vs target 40.0% (+7.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5644,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 43.6% vs target 50.0% (+6.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2902,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 71.0% (daily 71.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.3 < 0.7 (vipay)",
+ "score": 0.3,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3952,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 35.5% vs target 25.0% (-10.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4786,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 22.1% vs target 20.0% (-2.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.7566,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 10000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:25:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_143",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2973600 + 35000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5563,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 34.4% vs target 40.0% (+5.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5638,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 43.6% vs target 50.0% (+6.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2902,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 71.0% (daily 71.0%, in_progress 50.0%/39.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4063,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 34.4% vs target 25.0% (-9.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4788,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 22.1% vs target 20.0% (-2.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.7566,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 35000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:26:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_144",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5364,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 36.4% vs target 40.0% (+3.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5616,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 43.8% vs target 50.0% (+6.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2882,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 71.2% (daily 71.2%, in_progress 50.0%/41.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4167,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 33.3% vs target 25.0% (-8.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.4797,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 22.0% vs target 20.0% (-2.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7566,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 2000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:26:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_145",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.55,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6441,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 20.6% vs target 35.0% (+14.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4588,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.1% vs target 30.0% (-4.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0088,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 99.1% (daily 99.1%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3093600)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.45 < 0.55 (payflow)",
+ "score": 0.45,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4265,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 32.4% vs target 25.0% (-7.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4797,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 22.0% vs target 20.0% (-2.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7566,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 10000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:27:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_146",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: bank_not_in_list; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:27:30+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_147",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.475; decisive: traffic_share (+0.133), load (+0.113)",
+ "score": 0.475,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4444,
+ "weight": 0.3,
+ "weighted": 0.1333,
+ "note": "count share 30.6% vs target 25.0% (-5.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.48,
+ "weight": 0.1,
+ "weighted": 0.048,
+ "note": "volume share 22.0% vs target 20.0% (-2.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7566,
+ "weight": 0.15,
+ "weighted": 0.1135,
+ "note": "utilization 24.3% (daily 24.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 5000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:28:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_148",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.575; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.575,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6338,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 21.6% vs target 35.0% (+13.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4583,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.2% vs target 30.0% (-4.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0055,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 99.5% (daily 99.5%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3103600)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.425 < 0.575 (payflow)",
+ "score": 0.425,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4257,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 32.4% vs target 25.0% (-7.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4796,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 22.0% vs target 20.0% (-2.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.756,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 24.4% (daily 24.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 15000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:28:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_149",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "80000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4689; decisive: traffic_share (+0.13), load (+0.113)",
+ "score": 0.4689,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4342,
+ "weight": 0.3,
+ "weighted": 0.1303,
+ "note": "count share 31.6% vs target 25.0% (-6.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.4799,
+ "weight": 0.1,
+ "weighted": 0.048,
+ "note": "volume share 22.0% vs target 20.0% (-2.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.756,
+ "weight": 0.15,
+ "weighted": 0.1134,
+ "note": "utilization 24.4% (daily 24.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 80000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:29:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_150",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4611; decisive: traffic_share (+0.125), load (+0.112)",
+ "score": 0.4611,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4167,
+ "weight": 0.3,
+ "weighted": 0.125,
+ "note": "count share 33.3% vs target 25.0% (-8.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.4731,
+ "weight": 0.1,
+ "weighted": 0.0473,
+ "note": "volume share 22.7% vs target 20.0% (-2.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.746,
+ "weight": 0.15,
+ "weighted": 0.1119,
+ "note": "utilization 25.4% (daily 25.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:29:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_151",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 25000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.575,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.5% vs target 40.0% (+7.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5687,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 43.1% vs target 50.0% (+6.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2808,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 71.9% (daily 71.9%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 35.0% vs target 25.0% (-10.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4696,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 23.0% vs target 20.0% (-3.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7408,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 25.9% (daily 25.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:30:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_152",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 15000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4609; decisive: traffic_share (+0.123), load (+0.111)",
+ "score": 0.4609,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4085,
+ "weight": 0.3,
+ "weighted": 0.1226,
+ "note": "count share 34.1% vs target 25.0% (-9.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.4702,
+ "weight": 0.1,
+ "weighted": 0.047,
+ "note": "volume share 23.0% vs target 20.0% (-3.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7408,
+ "weight": 0.15,
+ "weighted": 0.1111,
+ "note": "utilization 25.9% (daily 25.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 15000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:30:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_153",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 2000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 29s (score 0.4524; decisive: traffic_share (+0.118), load (+0.111))",
+ "score": 0.4524,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3929,
+ "weight": 0.3,
+ "weighted": 0.1179,
+ "note": "count share 35.7% vs target 25.0% (-10.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.469,
+ "weight": 0.1,
+ "weighted": 0.0469,
+ "note": "volume share 23.1% vs target 20.0% (-3.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7389,
+ "weight": 0.15,
+ "weighted": 0.1108,
+ "note": "utilization 26.1% (daily 26.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 29
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: bank_not_in_list; payflow: daily_limit_exceeded; quickpay: provider_rejected",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 2000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:31:00+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_154",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 29s (score 0.4549; decisive: traffic_share (+0.12), load (+0.111))",
+ "score": 0.4549,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4012,
+ "weight": 0.3,
+ "weighted": 0.1203,
+ "note": "count share 34.9% vs target 25.0% (-9.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.469,
+ "weight": 0.1,
+ "weighted": 0.0469,
+ "note": "volume share 23.1% vs target 20.0% (-3.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7389,
+ "weight": 0.15,
+ "weighted": 0.1108,
+ "note": "utilization 26.1% (daily 26.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 29
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: bank_not_in_list; payflow: daily_limit_exceeded; quickpay: provider_rejected",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:31:30+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_155",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "95000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4573; decisive: traffic_share (+0.123), load (+0.111)",
+ "score": 0.4573,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4091,
+ "weight": 0.3,
+ "weighted": 0.1227,
+ "note": "count share 34.1% vs target 25.0% (-9.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.469,
+ "weight": 0.1,
+ "weighted": 0.0469,
+ "note": "volume share 23.1% vs target 20.0% (-3.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7389,
+ "weight": 0.15,
+ "weighted": 0.1108,
+ "note": "utilization 26.1% (daily 26.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 95000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:32:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_156",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5503; decisive: traffic_share (+0.118), load (+0.109)",
+ "score": 0.5503,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3944,
+ "weight": 0.3,
+ "weighted": 0.1183,
+ "note": "count share 35.6% vs target 25.0% (-10.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.4612,
+ "weight": 0.1,
+ "weighted": 0.0461,
+ "note": "volume share 23.9% vs target 20.0% (-3.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.727,
+ "weight": 0.15,
+ "weighted": 0.1091,
+ "note": "utilization 27.3% (daily 27.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 150000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:32:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_157",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 10000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4392; decisive: traffic_share (+0.114), load (+0.106)",
+ "score": 0.4392,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3804,
+ "weight": 0.3,
+ "weighted": 0.1141,
+ "note": "count share 37.0% vs target 25.0% (-12.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4491,
+ "weight": 0.1,
+ "weighted": 0.0449,
+ "note": "volume share 25.1% vs target 20.0% (-5.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.7083,
+ "weight": 0.15,
+ "weighted": 0.1062,
+ "note": "utilization 29.2% (daily 29.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 10000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:33:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_158",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4349; decisive: traffic_share (+0.11), load (+0.106)",
+ "score": 0.4349,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.367,
+ "weight": 0.3,
+ "weighted": 0.1101,
+ "note": "count share 38.3% vs target 25.0% (-13.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.4484,
+ "weight": 0.1,
+ "weighted": 0.0448,
+ "note": "volume share 25.2% vs target 20.0% (-5.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.707,
+ "weight": 0.15,
+ "weighted": 0.1061,
+ "note": "utilization 29.3% (daily 29.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:33:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_159",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 48000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4299; decisive: traffic_share (+0.106), load (+0.105)",
+ "score": 0.4299,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3542,
+ "weight": 0.3,
+ "weighted": 0.1062,
+ "note": "count share 39.6% vs target 25.0% (-14.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.4451,
+ "weight": 0.1,
+ "weighted": 0.0445,
+ "note": "volume share 25.5% vs target 20.0% (-5.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.7018,
+ "weight": 0.15,
+ "weighted": 0.1053,
+ "note": "utilization 29.8% (daily 29.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 48000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:34:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_160",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5266; decisive: load (+0.104), traffic_share (+0.103)",
+ "score": 0.5266,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3418,
+ "weight": 0.3,
+ "weighted": 0.1026,
+ "note": "count share 40.8% vs target 25.0% (-15.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.4413,
+ "weight": 0.1,
+ "weighted": 0.0441,
+ "note": "volume share 25.9% vs target 20.0% (-5.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "weight": 0.05,
+ "weighted": 0.034,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.6958,
+ "weight": 0.15,
+ "weighted": 0.1044,
+ "note": "utilization 30.4% (daily 30.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 120000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:34:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_161",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_timeout",
+ "details": "dispatched, simulated result: expired after 539s (score 0.5212; decisive: load (+0.102), amount_band (+0.1))",
+ "score": 0.5212,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.33,
+ "weight": 0.3,
+ "weighted": 0.099,
+ "note": "count share 42.0% vs target 25.0% (-17.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4322,
+ "weight": 0.1,
+ "weighted": 0.0432,
+ "note": "volume share 26.8% vs target 20.0% (-6.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6808,
+ "weight": 0.15,
+ "weighted": 0.1021,
+ "note": "utilization 31.9% (daily 31.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "expired",
+ "latency_sec": 539
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: amount_exceeds_limit; payflow: amount_exceeds_limit; quickpay: provider_timeout",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 150000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:35:00+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_162",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 30000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6255,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 27.5% vs target 40.0% (+12.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5948,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 40.5% vs target 50.0% (+9.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2758,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 72.4% (daily 72.4%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3382,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 41.2% vs target 25.0% (-16.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.4211,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6808,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 31.9% (daily 31.9%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 30000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:35:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_163",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 40000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4254; decisive: traffic_share (+0.104), load (+0.102)",
+ "score": 0.4254,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3462,
+ "weight": 0.3,
+ "weighted": 0.1038,
+ "note": "count share 40.4% vs target 25.0% (-15.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4219,
+ "weight": 0.1,
+ "weighted": 0.0422,
+ "note": "volume share 27.8% vs target 20.0% (-7.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6808,
+ "weight": 0.15,
+ "weighted": 0.1021,
+ "note": "utilization 31.9% (daily 31.9%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:36:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_164",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5714; decisive: traffic_share (+0.204), amount_band (+0.1)",
+ "score": 0.5714,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6802,
+ "weight": 0.3,
+ "weighted": 0.2041,
+ "note": "count share 17.0% vs target 35.0% (+18.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4864,
+ "weight": 0.1,
+ "weighted": 0.0486,
+ "note": "volume share 31.4% vs target 30.0% (-1.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.6241,
+ "weight": 0.05,
+ "weighted": 0.0312,
+ "note": "sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%"
+ },
+ "load": {
+ "score": 0.0005,
+ "weight": 0.15,
+ "weighted": 0.0001,
+ "note": "utilization 100.0% (daily 100.0%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3118600)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 800,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:36:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_165",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4233; decisive: traffic_share (+0.103), load (+0.101)",
+ "score": 0.4233,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3426,
+ "weight": 0.3,
+ "weighted": 0.1028,
+ "note": "count share 40.7% vs target 25.0% (-15.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.419,
+ "weight": 0.1,
+ "weighted": 0.0419,
+ "note": "volume share 28.1% vs target 20.0% (-8.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6758,
+ "weight": 0.15,
+ "weighted": 0.1014,
+ "note": "utilization 32.4% (daily 32.4%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 3000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:37:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_166",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 29s (score 0.5067; decisive: load (+0.101), amount_band (+0.1))",
+ "score": 0.5067,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3318,
+ "weight": 0.3,
+ "weighted": 0.0995,
+ "note": "count share 41.8% vs target 25.0% (-16.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.4188,
+ "weight": 0.1,
+ "weighted": 0.0419,
+ "note": "volume share 28.1% vs target 20.0% (-8.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "weight": 0.05,
+ "weighted": 0.0225,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6754,
+ "weight": 0.15,
+ "weighted": 0.1013,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 29
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: amount_exceeds_limit; payflow: amount_exceeds_limit; quickpay: provider_rejected",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 120000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:37:30+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_167",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 25000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6321,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 26.8% vs target 40.0% (+13.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.5948,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 40.5% vs target 50.0% (+9.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2698,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 73.0% (daily 73.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3393,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 41.1% vs target 25.0% (-16.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.4188,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 28.1% vs target 20.0% (-8.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.6754,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:38:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_168",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6193,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 28.1% vs target 40.0% (+11.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.5933,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 40.7% vs target 50.0% (+9.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2698,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 73.0% (daily 73.0%, in_progress 50.0%/40.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3465,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 40.4% vs target 25.0% (-15.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4195,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 28.0% vs target 20.0% (-8.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6754,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 52000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:38:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_169",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.675,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6069,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 29.3% vs target 40.0% (+10.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5902,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 41.0% vs target 50.0% (+9.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2648,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 73.5% (daily 73.5%, in_progress 50.0%/43.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.325 < 0.675 (vipay)",
+ "score": 0.325,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3534,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 39.7% vs target 25.0% (-14.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.421,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.6754,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 10000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:39:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_170",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5949,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 30.5% vs target 40.0% (+9.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5896,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 41.0% vs target 50.0% (+9.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2544,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.6% (daily 74.6%, in_progress 50.0%/39.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3602,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 39.0% vs target 25.0% (-14.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4213,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6754,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 1500,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:39:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_171",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5833,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.7% vs target 40.0% (+8.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.5895,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 41.0% vs target 50.0% (+9.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2524,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.8% (daily 74.8%, in_progress 50.0%/38.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3667,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 38.3% vs target 25.0% (-13.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.4213,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.6754,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 3000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:40:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_172",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5721,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.8% vs target 40.0% (+7.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.5893,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 41.1% vs target 50.0% (+8.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2521,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.8% (daily 74.8%, in_progress 50.0%/38.3%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.373,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 37.7% vs target 25.0% (-12.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4214,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.6754,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:40:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_173",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4374; decisive: traffic_share (+0.114), load (+0.101)",
+ "score": 0.4374,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.379,
+ "weight": 0.3,
+ "weighted": 0.1137,
+ "note": "count share 37.1% vs target 25.0% (-12.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.4216,
+ "weight": 0.1,
+ "weighted": 0.0422,
+ "note": "volume share 27.8% vs target 20.0% (-7.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6754,
+ "weight": 0.15,
+ "weighted": 0.1013,
+ "note": "utilization 32.5% (daily 32.5%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 12000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:41:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_174",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5894,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 41.1% vs target 50.0% (+8.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2499,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.0% (daily 75.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.369,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 38.1% vs target 25.0% (-13.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.4207,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6739,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 32.6% (daily 32.6%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:41:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_175",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 29s (score 0.4359; decisive: traffic_share (+0.112), load (+0.101))",
+ "score": 0.4359,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.375,
+ "weight": 0.3,
+ "weighted": 0.1125,
+ "note": "count share 37.5% vs target 25.0% (-12.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.421,
+ "weight": 0.1,
+ "weighted": 0.0421,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6739,
+ "weight": 0.15,
+ "weighted": 0.1011,
+ "note": "utilization 32.6% (daily 32.6%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 29
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "all 1 eligible providers failed: vipay: bank_not_in_list; payflow: daily_limit_exceeded; quickpay: provider_rejected",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 10000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:42:00+03:00",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_176",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:42:30+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_177",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4393; decisive: traffic_share (+0.116), load (+0.101)",
+ "score": 0.4393,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3864,
+ "weight": 0.3,
+ "weighted": 0.1159,
+ "note": "count share 36.4% vs target 25.0% (-11.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.421,
+ "weight": 0.1,
+ "weighted": 0.0421,
+ "note": "volume share 27.9% vs target 20.0% (-7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6739,
+ "weight": 0.15,
+ "weighted": 0.1011,
+ "note": "utilization 32.6% (daily 32.6%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:43:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_178",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5291; decisive: traffic_share (+0.113), load (+0.1)",
+ "score": 0.5291,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3769,
+ "weight": 0.3,
+ "weighted": 0.1131,
+ "note": "count share 37.3% vs target 25.0% (-12.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.418,
+ "weight": 0.1,
+ "weighted": 0.0418,
+ "note": "volume share 28.2% vs target 20.0% (-8.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6686,
+ "weight": 0.15,
+ "weighted": 0.1003,
+ "note": "utilization 33.1% (daily 33.1%, in_progress 13.3%/10.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 120000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:43:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_179",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4272; decisive: traffic_share (+0.11), load (+0.098)",
+ "score": 0.4272,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3676,
+ "weight": 0.3,
+ "weighted": 0.1103,
+ "note": "count share 38.2% vs target 25.0% (-13.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.4201,
+ "weight": 0.1,
+ "weighted": 0.042,
+ "note": "volume share 28.0% vs target 20.0% (-8.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6536,
+ "weight": 0.15,
+ "weighted": 0.098,
+ "note": "utilization 34.6% (daily 34.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 1500,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:44:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_180",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5231; decisive: traffic_share (+0.108), amount_band (+0.1)",
+ "score": 0.5231,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3587,
+ "weight": 0.3,
+ "weighted": 0.1076,
+ "note": "count share 39.1% vs target 25.0% (-14.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.42,
+ "weight": 0.1,
+ "weighted": 0.042,
+ "note": "volume share 28.0% vs target 20.0% (-8.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "weight": 0.05,
+ "weighted": 0.034,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.6534,
+ "weight": 0.15,
+ "weighted": 0.098,
+ "note": "utilization 34.7% (daily 34.7%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 180000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:44:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_181",
+ "selected_provider": "quickpay",
+ "reason": "fallback_after_failure",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "provider_rejected",
+ "details": "dispatched, simulated result: rejected after 38s (score 0.775; decisive: traffic_share (+0.3), volume_share (+0.1))",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5857,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.4% vs target 40.0% (+8.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5967,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 40.3% vs target 50.0% (+9.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2483,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.2% (daily 75.2%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "rejected",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "fallback_after_failure",
+ "details": "retry #1 after failure; score 0.225; decisive: load (+0.15), amount_band (+0.05)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.35,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 40.0% vs target 25.0% (-15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4074,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 29.3% vs target 20.0% (-9.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6309,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 36.9% (daily 36.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 1500,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:45:00+03:00",
+ "retries": 1,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_182",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4117; decisive: traffic_share (+0.102), load (+0.095)",
+ "score": 0.4117,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3415,
+ "weight": 0.3,
+ "weighted": 0.1025,
+ "note": "count share 40.8% vs target 25.0% (-15.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.4073,
+ "weight": 0.1,
+ "weighted": 0.0407,
+ "note": "volume share 29.3% vs target 20.0% (-9.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6307,
+ "weight": 0.15,
+ "weighted": 0.0946,
+ "note": "utilization 36.9% (daily 36.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 1500,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:45:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_183",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4121; decisive: traffic_share (+0.1), load (+0.095)",
+ "score": 0.4121,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3333,
+ "weight": 0.3,
+ "weighted": 0.1,
+ "note": "count share 41.7% vs target 25.0% (-16.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4072,
+ "weight": 0.1,
+ "weighted": 0.0407,
+ "note": "volume share 29.3% vs target 20.0% (-9.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6306,
+ "weight": 0.15,
+ "weighted": 0.0946,
+ "note": "utilization 36.9% (daily 36.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:46:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_184",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5986,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 30.1% vs target 40.0% (+9.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.5983,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 40.2% vs target 50.0% (+9.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2483,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.2% (daily 75.2%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3253,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 42.5% vs target 25.0% (-17.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4044,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 29.6% vs target 20.0% (-9.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6256,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 37.4% (daily 37.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 1500,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:46:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_185",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5892,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.1% vs target 40.0% (+8.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.5982,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 40.2% vs target 50.0% (+9.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2483,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.2% (daily 75.2%, in_progress 50.0%/38.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3311,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 41.9% vs target 25.0% (-16.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.4045,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 29.6% vs target 20.0% (-9.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.6256,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 37.4% (daily 37.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 3000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:47:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_186",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "95000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4155; decisive: traffic_share (+0.101), load (+0.094)",
+ "score": 0.4155,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3367,
+ "weight": 0.3,
+ "weighted": 0.101,
+ "note": "count share 41.3% vs target 25.0% (-16.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.4045,
+ "weight": 0.1,
+ "weighted": 0.0405,
+ "note": "volume share 29.5% vs target 20.0% (-9.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6256,
+ "weight": 0.15,
+ "weighted": 0.0938,
+ "note": "utilization 37.4% (daily 37.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 95000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:47:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_187",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5842,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.6% vs target 40.0% (+8.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.6017,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.8% vs target 50.0% (+10.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2474,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.3% (daily 75.3%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3289,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 42.1% vs target 25.0% (-17.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.3981,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 30.2% vs target 20.0% (-10.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.6137,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 38.6% (daily 38.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:48:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_188",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5753,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.5% vs target 40.0% (+7.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.6013,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.9% vs target 50.0% (+10.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2474,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.3% (daily 75.3%, in_progress 50.0%/38.8%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3344,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 41.6% vs target 25.0% (-16.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.3983,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 30.2% vs target 20.0% (-10.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.6137,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 38.6% (daily 38.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 12000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:48:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_189",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 15000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.414; decisive: traffic_share (+0.102), load (+0.092)",
+ "score": 0.414,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3397,
+ "weight": 0.3,
+ "weighted": 0.1019,
+ "note": "count share 41.0% vs target 25.0% (-16.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.3987,
+ "weight": 0.1,
+ "weighted": 0.0399,
+ "note": "volume share 30.1% vs target 20.0% (-10.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6137,
+ "weight": 0.15,
+ "weighted": 0.0921,
+ "note": "utilization 38.6% (daily 38.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 15000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:49:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_190",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:49:30+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_191",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.75,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.575,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.5% vs target 40.0% (+7.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.6012,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.9% vs target 50.0% (+10.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2434,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.7% (daily 75.7%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.25 < 0.75 (vipay)",
+ "score": 0.25,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3375,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 41.2% vs target 25.0% (-16.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.3977,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 30.2% vs target 20.0% (-10.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6118,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 38.8% (daily 38.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:50:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_192",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "55000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4116; decisive: traffic_share (+0.103), load (+0.092)",
+ "score": 0.4116,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3426,
+ "weight": 0.3,
+ "weighted": 0.1028,
+ "note": "count share 40.7% vs target 25.0% (-15.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.3979,
+ "weight": 0.1,
+ "weighted": 0.0398,
+ "note": "volume share 30.2% vs target 20.0% (-10.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6118,
+ "weight": 0.15,
+ "weighted": 0.0918,
+ "note": "utilization 38.8% (daily 38.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 55000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:50:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_193",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4076; decisive: traffic_share (+0.101), load (+0.091)",
+ "score": 0.4076,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3354,
+ "weight": 0.3,
+ "weighted": 0.1006,
+ "note": "count share 41.5% vs target 25.0% (-16.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.3943,
+ "weight": 0.1,
+ "weighted": 0.0394,
+ "note": "volume share 30.6% vs target 20.0% (-10.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6049,
+ "weight": 0.15,
+ "weighted": 0.0907,
+ "note": "utilization 39.5% (daily 39.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 2000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:51:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_194",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4025; decisive: traffic_share (+0.098), load (+0.091)",
+ "score": 0.4025,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3283,
+ "weight": 0.3,
+ "weighted": 0.0985,
+ "note": "count share 42.2% vs target 25.0% (-17.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.3941,
+ "weight": 0.1,
+ "weighted": 0.0394,
+ "note": "volume share 30.6% vs target 20.0% (-10.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6047,
+ "weight": 0.15,
+ "weighted": 0.0907,
+ "note": "utilization 39.5% (daily 39.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 3000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:51:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_195",
+ "selected_provider": "quickpay",
+ "reason": "fallback_after_failure",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "provider_timeout",
+ "details": "dispatched, simulated result: expired after 567s (score 0.725; decisive: traffic_share (+0.3), volume_share (+0.1))",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5786,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.1% vs target 40.0% (+7.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.603,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.7% vs target 50.0% (+10.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2418,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.8% (daily 75.8%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "expired",
+ "latency_sec": 567
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "fallback_after_failure",
+ "details": "retry #1 after failure; score 0.275; decisive: load (+0.15), amount_band (+0.05)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3214,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 42.9% vs target 25.0% (-17.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.3939,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 30.6% vs target 20.0% (-10.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.6043,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 39.6% (daily 39.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:52:00+03:00",
+ "retries": 1,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_196",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3975; decisive: traffic_share (+0.094), load (+0.09)",
+ "score": 0.3975,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3147,
+ "weight": 0.3,
+ "weighted": 0.0944,
+ "note": "count share 43.5% vs target 25.0% (-18.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.3925,
+ "weight": 0.1,
+ "weighted": 0.0392,
+ "note": "volume share 30.8% vs target 20.0% (-10.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.5993,
+ "weight": 0.15,
+ "weighted": 0.0899,
+ "note": "utilization 40.1% (daily 40.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 2000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:52:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_197",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.586,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.4% vs target 40.0% (+8.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.6023,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.8% vs target 50.0% (+10.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2418,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.8% (daily 75.8%, in_progress 50.0%/42.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3081,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 44.2% vs target 25.0% (-19.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.3923,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 30.8% vs target 20.0% (-10.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.5991,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.1% (daily 40.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:53:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_198",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4033; decisive: traffic_share (+0.094), load (+0.09)",
+ "score": 0.4033,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3132,
+ "weight": 0.3,
+ "weighted": 0.094,
+ "note": "count share 43.7% vs target 25.0% (-18.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.3926,
+ "weight": 0.1,
+ "weighted": 0.0393,
+ "note": "volume share 30.7% vs target 20.0% (-10.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5991,
+ "weight": 0.15,
+ "weighted": 0.0899,
+ "note": "utilization 40.1% (daily 40.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 52000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:53:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_199",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:54:00+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_200",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 30000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4015; decisive: traffic_share (+0.094), load (+0.089)",
+ "score": 0.4015,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3118,
+ "weight": 0.3,
+ "weighted": 0.0935,
+ "note": "count share 43.8% vs target 25.0% (-18.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.3892,
+ "weight": 0.1,
+ "weighted": 0.0389,
+ "note": "volume share 31.1% vs target 20.0% (-11.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5926,
+ "weight": 0.15,
+ "weighted": 0.0889,
+ "note": "utilization 40.7% (daily 40.7%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 30000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:54:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ }
+ ]
+}
diff --git a/routing_decisions_test.json b/routing_decisions_test.json
new file mode 100644
index 0000000..6222222
--- /dev/null
+++ b/routing_decisions_test.json
@@ -0,0 +1,10865 @@
+[
+ {
+ "operation_id": "op_111",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.55,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.85,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 0.0% vs target 35.0% (+35.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4103,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 39.0% vs target 30.0% (-9.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0333,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 96.7% (daily 96.7%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3020000)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.45 < 0.55 (payflow)",
+ "score": 0.45,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.75,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 0.0% vs target 25.0% (+25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5516,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 14.8% vs target 20.0% (+5.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8625,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 13.8% (daily 13.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 8000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:10:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_112",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.6; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.6,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.9,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 0.0% vs target 40.0% (+40.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5385,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 46.1% vs target 50.0% (+3.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.36,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 64.0% (daily 64.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.4 < 0.6 (vipay)",
+ "score": 0.4,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.75,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 0.0% vs target 25.0% (+25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5518,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 14.8% vs target 20.0% (+5.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8625,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 13.8% (daily 13.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 40000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:10:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_113",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5869; decisive: traffic_share (+0.225), load (+0.129)",
+ "score": 0.5869,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.75,
+ "weight": 0.3,
+ "weighted": 0.225,
+ "note": "count share 0.0% vs target 25.0% (+25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5525,
+ "weight": 0.1,
+ "weighted": 0.0553,
+ "note": "volume share 14.7% vs target 20.0% (+5.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8625,
+ "weight": 0.15,
+ "weighted": 0.1294,
+ "note": "utilization 13.8% (daily 13.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 10000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:11:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_114",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "75000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5364,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 46.4% vs target 50.0% (+3.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.352,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 64.8% (daily 64.8%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4167,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 33.3% vs target 25.0% (-8.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.5514,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 14.9% vs target 20.0% (+5.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.8613,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 13.9% (daily 13.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 75000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:11:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_115",
+ "selected_provider": "quickpay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.675; decisive vs vipay: traffic_share (+0.3), load (+0.15)",
+ "score": 0.675,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 25.0% vs target 25.0% (+0.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5528,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 14.7% vs target 20.0% (+5.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8613,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 13.9% (daily 13.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ },
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.325 < 0.675 (quickpay)",
+ "score": 0.325,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.0% vs target 40.0% (-10.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5313,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 46.9% vs target 50.0% (+3.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.352,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 64.8% (daily 64.8%, in_progress 50.0%/45.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 52000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:12:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_116",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4619; decisive: load (+0.128), traffic_share (+0.105)",
+ "score": 0.4619,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.35,
+ "weight": 0.3,
+ "weighted": 0.105,
+ "note": "count share 40.0% vs target 25.0% (-15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5473,
+ "weight": 0.1,
+ "weighted": 0.0547,
+ "note": "volume share 15.3% vs target 20.0% (+4.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8548,
+ "weight": 0.15,
+ "weighted": 0.1282,
+ "note": "utilization 14.5% (daily 14.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 20000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:12:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_117",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.625; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.625,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5355,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 46.4% vs target 50.0% (+3.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.337,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 66.3% (daily 66.3%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.375 < 0.625 (vipay)",
+ "score": 0.375,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5451,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 15.5% vs target 20.0% (+4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8523,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 14.8% (daily 14.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 2000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:13:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_118",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "80000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.456; decisive: load (+0.128), traffic_share (+0.096)",
+ "score": 0.456,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3214,
+ "weight": 0.3,
+ "weighted": 0.0964,
+ "note": "count share 42.9% vs target 25.0% (-17.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.5452,
+ "weight": 0.1,
+ "weighted": 0.0545,
+ "note": "volume share 15.5% vs target 20.0% (+4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8523,
+ "weight": 0.15,
+ "weighted": 0.1278,
+ "note": "utilization 14.8% (daily 14.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 80000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:13:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_119",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5732; decisive: traffic_share (+0.218), amount_band (+0.1)",
+ "score": 0.5732,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.725,
+ "weight": 0.3,
+ "weighted": 0.2175,
+ "note": "count share 12.5% vs target 35.0% (+22.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4232,
+ "weight": 0.1,
+ "weighted": 0.0423,
+ "note": "volume share 37.7% vs target 30.0% (-7.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "weight": 0.05,
+ "weighted": 0.0213,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0307,
+ "weight": 0.15,
+ "weighted": 0.0046,
+ "note": "utilization 96.9% (daily 96.9%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3028000)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 900,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:14:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_120",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5389; decisive: load (+0.126), amount_band (+0.1)",
+ "score": 0.5389,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3056,
+ "weight": 0.3,
+ "weighted": 0.0917,
+ "note": "count share 44.4% vs target 25.0% (-19.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.5368,
+ "weight": 0.1,
+ "weighted": 0.0537,
+ "note": "volume share 16.3% vs target 20.0% (+3.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "weight": 0.05,
+ "weighted": 0.0225,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.8423,
+ "weight": 0.15,
+ "weighted": 0.1263,
+ "note": "utilization 15.8% (daily 15.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 150000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:14:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_121",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "75000 > limit_amount_max 50000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.825; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.825,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 30.0% vs target 40.0% (+10.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5485,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 45.2% vs target 50.0% (+4.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.3366,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 66.3% (daily 66.3%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.175 < 0.825 (vipay)",
+ "score": 0.175,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5214,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 17.9% vs target 20.0% (+2.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.8235,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 17.6% (daily 17.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 75000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:15:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_122",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5364,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 36.4% vs target 40.0% (+3.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5435,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 45.6% vs target 50.0% (+4.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.3366,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 66.3% (daily 66.3%, in_progress 50.0%/45.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2955,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 45.5% vs target 25.0% (-20.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5231,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 17.7% vs target 20.0% (+2.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.8235,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 17.6% (daily 17.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:15:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_123",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "80000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4531; decisive: load (+0.124), traffic_share (+0.1)",
+ "score": 0.4531,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3333,
+ "weight": 0.3,
+ "weighted": 0.1,
+ "note": "count share 41.7% vs target 25.0% (-16.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5236,
+ "weight": 0.1,
+ "weighted": 0.0524,
+ "note": "volume share 17.6% vs target 20.0% (+2.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.8235,
+ "weight": 0.15,
+ "weighted": 0.1235,
+ "note": "utilization 17.6% (daily 17.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 80000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:16:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_124",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.6468; decisive vs payflow: volume_share (+0.1), conversion (+0.1)",
+ "score": 0.6468,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5154,
+ "normalized": 0.5566,
+ "weight": 0.3,
+ "weighted": 0.167,
+ "note": "count share 38.5% vs target 40.0% (+1.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5462,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 45.4% vs target 50.0% (+4.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.3166,
+ "normalized": 0.3655,
+ "weight": 0.15,
+ "weighted": 0.0548,
+ "note": "utilization 68.3% (daily 68.3%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.5471 < 0.6468 (vipay)",
+ "score": 0.5471,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6962,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 15.4% vs target 35.0% (+19.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.438,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 36.2% vs target 30.0% (-6.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.6241,
+ "normalized": 0.4418,
+ "weight": 0.05,
+ "weighted": 0.0221,
+ "note": "sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%"
+ },
+ "load": {
+ "score": 0.0304,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.0% (daily 97.0%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3028900)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ }
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.2893 < 0.6468 (vipay)",
+ "score": 0.2893,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2885,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 46.2% vs target 25.0% (-21.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.5157,
+ "normalized": 0.718,
+ "weight": 0.1,
+ "weighted": 0.0718,
+ "note": "volume share 18.4% vs target 20.0% (+1.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.4247,
+ "weight": 0.1,
+ "weighted": 0.0425,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.8135,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 18.6% (daily 18.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:16:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_125",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.675,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.4714,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 42.9% vs target 40.0% (-2.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.5446,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 45.5% vs target 50.0% (+4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.3166,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 68.3% (daily 68.3%, in_progress 50.0%/40.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.325 < 0.675 (vipay)",
+ "score": 0.325,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3214,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 42.9% vs target 25.0% (-17.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.5163,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 18.4% vs target 20.0% (+1.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.8135,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 18.6% (daily 18.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 45000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:17:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_126",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.55,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.7167,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 13.3% vs target 35.0% (+21.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.441,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 35.9% vs target 30.0% (-5.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0304,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.0% (daily 97.0%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3028900)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.45 < 0.55 (payflow)",
+ "score": 0.45,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.35,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 40.0% vs target 25.0% (-15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5173,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 18.3% vs target 20.0% (+1.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8135,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 18.6% (daily 18.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 15000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:17:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_127",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4665; decisive: load (+0.122), traffic_share (+0.112)",
+ "score": 0.4665,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.375,
+ "weight": 0.3,
+ "weighted": 0.1125,
+ "note": "count share 37.5% vs target 25.0% (-12.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5176,
+ "weight": 0.1,
+ "weighted": 0.0518,
+ "note": "volume share 18.2% vs target 20.0% (+1.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8135,
+ "weight": 0.15,
+ "weighted": 0.122,
+ "note": "utilization 18.6% (daily 18.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:18:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_128",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4509; decisive: load (+0.121), traffic_share (+0.101)",
+ "score": 0.4509,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3382,
+ "weight": 0.3,
+ "weighted": 0.1015,
+ "note": "count share 41.2% vs target 25.0% (-16.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.5135,
+ "weight": 0.1,
+ "weighted": 0.0514,
+ "note": "volume share 18.6% vs target 20.0% (+1.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8083,
+ "weight": 0.15,
+ "weighted": 0.1212,
+ "note": "utilization 19.2% (daily 19.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:18:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_129",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.44; decisive: load (+0.12), traffic_share (+0.092)",
+ "score": 0.44,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3056,
+ "weight": 0.3,
+ "weighted": 0.0917,
+ "note": "count share 44.4% vs target 25.0% (-19.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.5097,
+ "weight": 0.1,
+ "weighted": 0.051,
+ "note": "volume share 19.0% vs target 20.0% (+1.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.8033,
+ "weight": 0.15,
+ "weighted": 0.1205,
+ "note": "utilization 19.7% (daily 19.7%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 52000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:19:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_130",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "95000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4297; decisive: load (+0.12), traffic_share (+0.083)",
+ "score": 0.4297,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2763,
+ "weight": 0.3,
+ "weighted": 0.0829,
+ "note": "count share 47.4% vs target 25.0% (-22.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.5048,
+ "weight": 0.1,
+ "weighted": 0.0505,
+ "note": "volume share 19.5% vs target 20.0% (+0.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7968,
+ "weight": 0.15,
+ "weighted": 0.1195,
+ "note": "utilization 20.3% (daily 20.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 95000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:19:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_131",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5254; decisive: load (+0.118), amount_band (+0.1)",
+ "score": 0.5254,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "weight": 0.3,
+ "weighted": 0.075,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.496,
+ "weight": 0.1,
+ "weighted": 0.0496,
+ "note": "volume share 20.4% vs target 20.0% (-0.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "weight": 0.05,
+ "weighted": 0.0416,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.7849,
+ "weight": 0.15,
+ "weighted": 0.1177,
+ "note": "utilization 21.5% (daily 21.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 150000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:20:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_132",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5622,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 43.8% vs target 50.0% (+6.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.3026,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 69.7% (daily 69.7%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2262,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 52.4% vs target 25.0% (-27.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4825,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 21.8% vs target 20.0% (-1.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.7661,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 23.4% (daily 23.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 3000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:20:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_133",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4154; decisive: load (+0.115), traffic_share (+0.075)",
+ "score": 0.4154,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "weight": 0.3,
+ "weighted": 0.075,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4826,
+ "weight": 0.1,
+ "weighted": 0.0483,
+ "note": "volume share 21.7% vs target 20.0% (-1.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.7661,
+ "weight": 0.15,
+ "weighted": 0.1149,
+ "note": "utilization 23.4% (daily 23.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 8000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:21:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_134",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5522,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 34.8% vs target 40.0% (+5.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.5624,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 43.8% vs target 50.0% (+6.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.302,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 69.8% (daily 69.8%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2283,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 52.2% vs target 25.0% (-27.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.4819,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 21.8% vs target 20.0% (-1.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7651,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 23.5% (daily 23.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 12000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:21:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_135",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5856; decisive: traffic_share (+0.218), amount_band (+0.1)",
+ "score": 0.5856,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.725,
+ "weight": 0.3,
+ "weighted": 0.2175,
+ "note": "count share 12.5% vs target 35.0% (+22.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4562,
+ "weight": 0.1,
+ "weighted": 0.0456,
+ "note": "volume share 34.4% vs target 30.0% (-4.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.6241,
+ "weight": 0.05,
+ "weighted": 0.0312,
+ "note": "sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%"
+ },
+ "load": {
+ "score": 0.0254,
+ "weight": 0.15,
+ "weighted": 0.0038,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3043900)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 800,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:22:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_136",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.75,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.54,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 36.0% vs target 40.0% (+4.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.5616,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 43.8% vs target 50.0% (+6.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2996,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 70.0% (daily 70.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.25 < 0.75 (vipay)",
+ "score": 0.25,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.27,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 48.0% vs target 25.0% (-23.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4822,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 21.8% vs target 20.0% (-1.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7651,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 23.5% (daily 23.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 35000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:22:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_137",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5169; decisive: load (+0.115), amount_band (+0.1)",
+ "score": 0.5169,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2885,
+ "weight": 0.3,
+ "weighted": 0.0865,
+ "note": "count share 46.2% vs target 25.0% (-21.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.483,
+ "weight": 0.1,
+ "weighted": 0.0483,
+ "note": "volume share 21.7% vs target 20.0% (-1.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "weight": 0.05,
+ "weighted": 0.0225,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.7651,
+ "weight": 0.15,
+ "weighted": 0.1148,
+ "note": "utilization 23.5% (daily 23.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 180000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:23:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_138",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5126; decisive: load (+0.111), amount_band (+0.1)",
+ "score": 0.5126,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2685,
+ "weight": 0.3,
+ "weighted": 0.0806,
+ "note": "count share 48.1% vs target 25.0% (-23.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.4675,
+ "weight": 0.1,
+ "weighted": 0.0467,
+ "note": "volume share 23.3% vs target 20.0% (-3.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.7426,
+ "weight": 0.15,
+ "weighted": 0.1114,
+ "note": "utilization 25.7% (daily 25.7%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 180000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:23:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_139",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5717; decisive: traffic_share (+0.212), amount_band (+0.1)",
+ "score": 0.5717,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.7071,
+ "weight": 0.3,
+ "weighted": 0.2121,
+ "note": "count share 14.3% vs target 35.0% (+20.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4709,
+ "weight": 0.1,
+ "weighted": 0.0471,
+ "note": "volume share 32.9% vs target 30.0% (-2.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "weight": 0.05,
+ "weighted": 0.0213,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0251,
+ "weight": 0.15,
+ "weighted": 0.0038,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3044700)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 900,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:24:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_140",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.625; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.625,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6776,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 17.2% vs target 35.0% (+17.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.4708,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 32.9% vs target 30.0% (-2.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0251,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 37.5%/24.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3045600)"
+ },
+ "rate_headroom": {
+ "score": 0.8571,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.375 < 0.625 (payflow)",
+ "score": 0.375,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2672,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 48.3% vs target 25.0% (-23.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.4526,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 24.7% vs target 20.0% (-4.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7201,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 40000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:24:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_141",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.625; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.625,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.65,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 20.0% vs target 35.0% (+15.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4679,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 33.2% vs target 30.0% (-3.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0248,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 97.5% (daily 97.5%, in_progress 37.5%/32.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3085600)"
+ },
+ "rate_headroom": {
+ "score": 0.8571,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.375 < 0.625 (payflow)",
+ "score": 0.375,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2833,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 46.7% vs target 25.0% (-21.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4536,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 24.6% vs target 20.0% (-4.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7201,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 8000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:25:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_142",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.7; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.7,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5774,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.3% vs target 40.0% (+7.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.5788,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 42.1% vs target 50.0% (+7.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2926,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 70.7% (daily 70.7%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.3 < 0.7 (vipay)",
+ "score": 0.3,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2984,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 45.2% vs target 25.0% (-20.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.4539,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 24.6% vs target 20.0% (-4.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.7201,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 10000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:25:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_143",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2973600 + 35000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5563,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 34.4% vs target 40.0% (+5.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.5782,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 42.2% vs target 50.0% (+7.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2926,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 70.7% (daily 70.7%, in_progress 50.0%/39.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3125,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 43.8% vs target 25.0% (-18.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.4541,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 24.6% vs target 20.0% (-4.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.7201,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 35000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:26:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_144",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "tinkoff not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5364,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 36.4% vs target 40.0% (+3.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.576,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 42.4% vs target 50.0% (+7.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2906,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 70.9% (daily 70.9%, in_progress 50.0%/41.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3258,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 42.4% vs target 25.0% (-17.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.455,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 24.5% vs target 20.0% (-4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7201,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 2000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:26:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_145",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.65; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.65,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6441,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 20.6% vs target 35.0% (+14.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.469,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 33.1% vs target 30.0% (-3.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0088,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 99.1% (daily 99.1%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3093600)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.35 < 0.65 (payflow)",
+ "score": 0.35,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3382,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 41.2% vs target 25.0% (-16.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.4551,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 24.5% vs target 20.0% (-4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7201,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 10000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:27:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_146",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: bank_not_in_list; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:27:30+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_147",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4421; decisive: traffic_share (+0.108), load (+0.108)",
+ "score": 0.4421,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3611,
+ "weight": 0.3,
+ "weighted": 0.1083,
+ "note": "count share 38.9% vs target 25.0% (-13.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.4554,
+ "weight": 0.1,
+ "weighted": 0.0455,
+ "note": "volume share 24.5% vs target 20.0% (-4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7201,
+ "weight": 0.15,
+ "weighted": 0.108,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 5000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:28:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_148",
+ "selected_provider": "payflow",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.675,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6338,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 21.6% vs target 35.0% (+13.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.4685,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 33.2% vs target 30.0% (-3.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.4267,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "alfa via payflow: 7 in history, approval 42.7%"
+ },
+ "load": {
+ "score": 0.0055,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 99.5% (daily 99.5%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3103600)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.325 < 0.675 (payflow)",
+ "score": 0.325,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3446,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 40.5% vs target 25.0% (-15.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.455,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 24.5% vs target 20.0% (-4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7195,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 15000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:28:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_149",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "80000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4373; decisive: load (+0.108), traffic_share (+0.107)",
+ "score": 0.4373,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3553,
+ "weight": 0.3,
+ "weighted": 0.1066,
+ "note": "count share 39.5% vs target 25.0% (-14.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4553,
+ "weight": 0.1,
+ "weighted": 0.0455,
+ "note": "volume share 24.5% vs target 20.0% (-4.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.7195,
+ "weight": 0.15,
+ "weighted": 0.1079,
+ "note": "utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 80000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:29:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_150",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4301; decisive: load (+0.106), traffic_share (+0.102)",
+ "score": 0.4301,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3397,
+ "weight": 0.3,
+ "weighted": 0.1019,
+ "note": "count share 41.0% vs target 25.0% (-16.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.449,
+ "weight": 0.1,
+ "weighted": 0.0449,
+ "note": "volume share 25.1% vs target 20.0% (-5.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7095,
+ "weight": 0.15,
+ "weighted": 0.1064,
+ "note": "utilization 29.0% (daily 29.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:29:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_151",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 25000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.575,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.5% vs target 40.0% (+7.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.5827,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 41.7% vs target 50.0% (+8.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2832,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 71.7% (daily 71.7%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.325,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 42.5% vs target 25.0% (-17.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4456,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 25.4% vs target 20.0% (-5.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.7043,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 29.6% (daily 29.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:30:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_152",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 15000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4311; decisive: load (+0.106), traffic_share (+0.101)",
+ "score": 0.4311,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3354,
+ "weight": 0.3,
+ "weighted": 0.1006,
+ "note": "count share 41.5% vs target 25.0% (-16.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4463,
+ "weight": 0.1,
+ "weighted": 0.0446,
+ "note": "volume share 25.4% vs target 20.0% (-5.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7043,
+ "weight": 0.15,
+ "weighted": 0.1056,
+ "note": "utilization 29.6% (daily 29.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 15000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:30:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_153",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 2000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4231; decisive: load (+0.105), traffic_share (+0.096)",
+ "score": 0.4231,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3214,
+ "weight": 0.3,
+ "weighted": 0.0964,
+ "note": "count share 42.9% vs target 25.0% (-17.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.4451,
+ "weight": 0.1,
+ "weighted": 0.0445,
+ "note": "volume share 25.5% vs target 20.0% (-5.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7024,
+ "weight": 0.15,
+ "weighted": 0.1054,
+ "note": "utilization 29.8% (daily 29.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 2000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:31:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_154",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4191; decisive: load (+0.105), traffic_share (+0.092)",
+ "score": 0.4191,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.3081,
+ "weight": 0.3,
+ "weighted": 0.0924,
+ "note": "count share 44.2% vs target 25.0% (-19.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.445,
+ "weight": 0.1,
+ "weighted": 0.0445,
+ "note": "volume share 25.5% vs target 20.0% (-5.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.7021,
+ "weight": 0.15,
+ "weighted": 0.1053,
+ "note": "utilization 29.8% (daily 29.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:31:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_155",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "95000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4142; decisive: load (+0.105), traffic_share (+0.089)",
+ "score": 0.4142,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2955,
+ "weight": 0.3,
+ "weighted": 0.0886,
+ "note": "count share 45.5% vs target 25.0% (-20.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.4417,
+ "weight": 0.1,
+ "weighted": 0.0442,
+ "note": "volume share 25.8% vs target 20.0% (-5.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6969,
+ "weight": 0.15,
+ "weighted": 0.1045,
+ "note": "utilization 30.3% (daily 30.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 95000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:32:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_156",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.508; decisive: load (+0.103), amount_band (+0.1)",
+ "score": 0.508,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2833,
+ "weight": 0.3,
+ "weighted": 0.085,
+ "note": "count share 46.7% vs target 25.0% (-21.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.4344,
+ "weight": 0.1,
+ "weighted": 0.0434,
+ "note": "volume share 26.6% vs target 20.0% (-6.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.685,
+ "weight": 0.15,
+ "weighted": 0.1028,
+ "note": "utilization 31.5% (daily 31.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 150000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:32:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_157",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 10000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3977; decisive: load (+0.1), traffic_share (+0.082)",
+ "score": 0.3977,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2717,
+ "weight": 0.3,
+ "weighted": 0.0815,
+ "note": "count share 47.8% vs target 25.0% (-22.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.4232,
+ "weight": 0.1,
+ "weighted": 0.0423,
+ "note": "volume share 27.7% vs target 20.0% (-7.7 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6663,
+ "weight": 0.15,
+ "weighted": 0.0999,
+ "note": "utilization 33.4% (daily 33.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 10000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:33:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_158",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3941; decisive: load (+0.1), traffic_share (+0.078)",
+ "score": 0.3941,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2606,
+ "weight": 0.3,
+ "weighted": 0.0782,
+ "note": "count share 48.9% vs target 25.0% (-23.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.4225,
+ "weight": 0.1,
+ "weighted": 0.0422,
+ "note": "volume share 27.8% vs target 20.0% (-7.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.665,
+ "weight": 0.15,
+ "weighted": 0.0998,
+ "note": "utilization 33.5% (daily 33.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:33:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_159",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 48000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3898; decisive: load (+0.099), traffic_share (+0.075)",
+ "score": 0.3898,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "weight": 0.3,
+ "weighted": 0.075,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4194,
+ "weight": 0.1,
+ "weighted": 0.0419,
+ "note": "volume share 28.1% vs target 20.0% (-8.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.6598,
+ "weight": 0.15,
+ "weighted": 0.099,
+ "note": "utilization 34.0% (daily 34.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 48000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:34:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_160",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4871; decisive: amount_band (+0.1), load (+0.098)",
+ "score": 0.4871,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2398,
+ "weight": 0.3,
+ "weighted": 0.0719,
+ "note": "count share 51.0% vs target 25.0% (-26.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4159,
+ "weight": 0.1,
+ "weighted": 0.0416,
+ "note": "volume share 28.4% vs target 20.0% (-8.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "weight": 0.05,
+ "weighted": 0.034,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.6538,
+ "weight": 0.15,
+ "weighted": 0.0981,
+ "note": "utilization 34.6% (daily 34.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 120000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:34:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_161",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "150000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4824; decisive: amount_band (+0.1), load (+0.096)",
+ "score": 0.4824,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.23,
+ "weight": 0.3,
+ "weighted": 0.069,
+ "note": "count share 52.0% vs target 25.0% (-27.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4074,
+ "weight": 0.1,
+ "weighted": 0.0407,
+ "note": "volume share 29.3% vs target 20.0% (-9.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.6387,
+ "weight": 0.15,
+ "weighted": 0.0958,
+ "note": "utilization 36.1% (daily 36.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 150000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:35:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_162",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 30000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6255,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 27.5% vs target 40.0% (+12.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.6088,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.1% vs target 50.0% (+10.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2782,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 72.2% (daily 72.2%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2206,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 52.9% vs target 25.0% (-27.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.397,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 30.3% vs target 20.0% (-10.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.62,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 38.0% (daily 38.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 30000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:35:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_163",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 40000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3793; decisive: load (+0.093), conversion (+0.07)",
+ "score": 0.3793,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2308,
+ "weight": 0.3,
+ "weighted": 0.0692,
+ "note": "count share 51.9% vs target 25.0% (-26.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.3979,
+ "weight": 0.1,
+ "weighted": 0.0398,
+ "note": "volume share 30.2% vs target 20.0% (-10.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.62,
+ "weight": 0.15,
+ "weighted": 0.093,
+ "note": "utilization 38.0% (daily 38.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:36:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_164",
+ "selected_provider": "payflow",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "800 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.5724; decisive: traffic_share (+0.204), amount_band (+0.1)",
+ "score": 0.5724,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6802,
+ "weight": 0.3,
+ "weighted": 0.2041,
+ "note": "count share 17.0% vs target 35.0% (+18.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.4963,
+ "weight": 0.1,
+ "weighted": 0.0496,
+ "note": "volume share 30.4% vs target 30.0% (-0.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "priority 2 (2 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 500..50000"
+ },
+ "conversion": {
+ "score": 0.6241,
+ "weight": 0.1,
+ "weighted": 0.0624,
+ "note": "conversion_24h 0.91, history 19 ops → calibrated 0.624"
+ },
+ "bank_affinity": {
+ "score": 0.6241,
+ "weight": 0.05,
+ "weighted": 0.0312,
+ "note": "sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%"
+ },
+ "load": {
+ "score": 0.0005,
+ "weight": 0.15,
+ "weighted": 0.0001,
+ "note": "utilization 100.0% (daily 100.0%, in_progress 25.0%/24.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "daily_turnover_min 2000000 reached (3118600)"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/7 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 52
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 52,
+ "amount": 800,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:36:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_165",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2998600 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3785; decisive: load (+0.092), conversion (+0.07)",
+ "score": 0.3785,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2315,
+ "weight": 0.3,
+ "weighted": 0.0694,
+ "note": "count share 51.9% vs target 25.0% (-26.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.3952,
+ "weight": 0.1,
+ "weighted": 0.0395,
+ "note": "volume share 30.5% vs target 20.0% (-10.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.615,
+ "weight": 0.15,
+ "weighted": 0.0923,
+ "note": "utilization 38.5% (daily 38.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 3000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:37:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_166",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4624; decisive: amount_band (+0.1), load (+0.092)",
+ "score": 0.4624,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2227,
+ "weight": 0.3,
+ "weighted": 0.0668,
+ "note": "count share 52.7% vs target 25.0% (-27.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.395,
+ "weight": 0.1,
+ "weighted": 0.0395,
+ "note": "volume share 30.5% vs target 20.0% (-10.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "weight": 0.05,
+ "weighted": 0.0225,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.6146,
+ "weight": 0.15,
+ "weighted": 0.0922,
+ "note": "utilization 38.5% (daily 38.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 120000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:37:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_167",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 25000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6321,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 26.8% vs target 40.0% (+13.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.6132,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 38.7% vs target 50.0% (+11.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2722,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 72.8% (daily 72.8%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2143,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 53.6% vs target 25.0% (-28.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.387,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 31.3% vs target 20.0% (-11.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.5996,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 25000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:38:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_168",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6193,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 28.1% vs target 40.0% (+11.9 pp)"
+ },
+ "volume_share": {
+ "score": 0.6118,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 38.8% vs target 50.0% (+11.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 50001..100000"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2722,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 72.8% (daily 72.8%, in_progress 50.0%/40.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2237,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 52.6% vs target 25.0% (-27.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.3877,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 31.2% vs target 20.0% (-11.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.5996,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 52000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:38:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_169",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.675,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.6069,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 29.3% vs target 40.0% (+10.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.6087,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.1% vs target 50.0% (+10.9 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2672,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 73.3% (daily 73.3%, in_progress 50.0%/43.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.325 < 0.675 (vipay)",
+ "score": 0.325,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2328,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 51.7% vs target 25.0% (-26.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.3893,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 31.1% vs target 20.0% (-11.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.5996,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 10000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:39:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_170",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5949,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 30.5% vs target 40.0% (+9.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.6081,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.2% vs target 50.0% (+10.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2568,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.3% (daily 74.3%, in_progress 50.0%/39.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2415,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.8% vs target 25.0% (-25.8 pp)"
+ },
+ "volume_share": {
+ "score": 0.3896,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 31.0% vs target 20.0% (-11.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.5996,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 1500,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:39:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_171",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5833,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.7% vs target 40.0% (+8.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.6081,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.2% vs target 50.0% (+10.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2548,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.5% (daily 74.5%, in_progress 50.0%/38.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.3896,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 31.0% vs target 20.0% (-11.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.5996,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 3000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:40:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_172",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5721,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.8% vs target 40.0% (+7.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.6079,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.2% vs target 50.0% (+10.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2545,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.6% (daily 74.6%, in_progress 50.0%/38.3%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2582,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 49.2% vs target 25.0% (-24.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.3897,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 31.0% vs target 20.0% (-11.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.5996,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:40:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_173",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3889; decisive: load (+0.09), traffic_share (+0.08)",
+ "score": 0.3889,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2661,
+ "weight": 0.3,
+ "weighted": 0.0798,
+ "note": "count share 48.4% vs target 25.0% (-23.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.3899,
+ "weight": 0.1,
+ "weighted": 0.039,
+ "note": "volume share 31.0% vs target 20.0% (-11.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5996,
+ "weight": 0.15,
+ "weighted": 0.0899,
+ "note": "utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 12000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:41:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_174",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.6079,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 39.2% vs target 50.0% (+10.8 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2523,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.8% (daily 74.8%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2579,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 49.2% vs target 25.0% (-24.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.3891,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 31.1% vs target 20.0% (-11.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.5981,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 40.2% (daily 40.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:41:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_175",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3885; decisive: load (+0.09), traffic_share (+0.08)",
+ "score": 0.3885,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2656,
+ "weight": 0.3,
+ "weighted": 0.0797,
+ "note": "count share 48.4% vs target 25.0% (-23.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.3894,
+ "weight": 0.1,
+ "weighted": 0.0389,
+ "note": "volume share 31.1% vs target 20.0% (-11.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5981,
+ "weight": 0.15,
+ "weighted": 0.0897,
+ "note": "utilization 40.2% (daily 40.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 10000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:42:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_176",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:42:30+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_177",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 42000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3881; decisive: load (+0.09), traffic_share (+0.08)",
+ "score": 0.3881,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2652,
+ "weight": 0.3,
+ "weighted": 0.0795,
+ "note": "count share 48.5% vs target 25.0% (-23.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.3887,
+ "weight": 0.1,
+ "weighted": 0.0389,
+ "note": "volume share 31.1% vs target 20.0% (-11.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5969,
+ "weight": 0.15,
+ "weighted": 0.0895,
+ "note": "utilization 40.3% (daily 40.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 42000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:43:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_178",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 100000",
+ "violations": [
+ "amount_exceeds_limit",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "120000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4785; decisive: amount_band (+0.1), load (+0.089)",
+ "score": 0.4785,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2575,
+ "weight": 0.3,
+ "weighted": 0.0772,
+ "note": "count share 49.3% vs target 25.0% (-24.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.386,
+ "weight": 0.1,
+ "weighted": 0.0386,
+ "note": "volume share 31.4% vs target 20.0% (-11.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.5916,
+ "weight": 0.15,
+ "weighted": 0.0887,
+ "note": "utilization 40.8% (daily 40.8%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 120000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:43:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_179",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3762; decisive: load (+0.086), traffic_share (+0.075)",
+ "score": 0.3762,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "weight": 0.3,
+ "weighted": 0.075,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.3783,
+ "weight": 0.1,
+ "weighted": 0.0378,
+ "note": "volume share 32.2% vs target 20.0% (-12.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5766,
+ "weight": 0.15,
+ "weighted": 0.0865,
+ "note": "utilization 42.3% (daily 42.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 1500,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:44:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_180",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 100000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "180000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.4726; decisive: amount_band (+0.1), load (+0.086)",
+ "score": 0.4726,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2428,
+ "weight": 0.3,
+ "weighted": 0.0728,
+ "note": "count share 50.7% vs target 25.0% (-25.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.3782,
+ "weight": 0.1,
+ "weighted": 0.0378,
+ "note": "volume share 32.2% vs target 20.0% (-12.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "preferred for amounts 100001..∞"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "weight": 0.05,
+ "weighted": 0.034,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.5764,
+ "weight": 0.15,
+ "weighted": 0.0865,
+ "note": "utilization 42.4% (daily 42.4%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 180000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:44:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_181",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5857,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.4% vs target 40.0% (+8.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.6202,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 38.0% vs target 50.0% (+12.0 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2507,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 74.9% (daily 74.9%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2357,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 51.4% vs target 25.0% (-26.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.3669,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 33.3% vs target 20.0% (-13.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.5539,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 44.6% (daily 44.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 1500,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:45:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_182",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3699; decisive: load (+0.083), traffic_share (+0.073)",
+ "score": 0.3699,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.243,
+ "weight": 0.3,
+ "weighted": 0.0729,
+ "note": "count share 50.7% vs target 25.0% (-25.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.367,
+ "weight": 0.1,
+ "weighted": 0.0367,
+ "note": "volume share 33.3% vs target 20.0% (-13.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.5539,
+ "weight": 0.15,
+ "weighted": 0.0831,
+ "note": "utilization 44.6% (daily 44.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 1500,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:45:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_183",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3674; decisive: load (+0.083), traffic_share (+0.071)",
+ "score": 0.3674,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2361,
+ "weight": 0.3,
+ "weighted": 0.0708,
+ "note": "count share 51.4% vs target 25.0% (-26.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.3669,
+ "weight": 0.1,
+ "weighted": 0.0367,
+ "note": "volume share 33.3% vs target 20.0% (-13.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5538,
+ "weight": 0.15,
+ "weighted": 0.0831,
+ "note": "utilization 44.6% (daily 44.6%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 40000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:46:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_184",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.775,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5849,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 31.5% vs target 40.0% (+8.5 pp)"
+ },
+ "volume_share": {
+ "score": 0.6215,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 37.8% vs target 50.0% (+12.2 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2504,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.0% (daily 75.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.225 < 0.775 (vipay)",
+ "score": 0.225,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2295,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 52.1% vs target 25.0% (-27.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.3644,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 33.6% vs target 20.0% (-13.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.5488,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 45.1% (daily 45.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 1500,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:46:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_185",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5757,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.4% vs target 40.0% (+7.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.6215,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 37.9% vs target 50.0% (+12.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2504,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.0% (daily 75.0%, in_progress 50.0%/38.2%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2365,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 51.4% vs target 25.0% (-26.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.3645,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 33.6% vs target 20.0% (-13.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.5488,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 45.1% (daily 45.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 3000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:47:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_186",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "95000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3719; decisive: load (+0.082), traffic_share (+0.073)",
+ "score": 0.3719,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2433,
+ "weight": 0.3,
+ "weighted": 0.073,
+ "note": "count share 50.7% vs target 25.0% (-25.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.3646,
+ "weight": 0.1,
+ "weighted": 0.0365,
+ "note": "volume share 33.5% vs target 20.0% (-13.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5488,
+ "weight": 0.15,
+ "weighted": 0.0823,
+ "note": "utilization 45.1% (daily 45.1%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 95000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:47:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_187",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5711,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 32.9% vs target 40.0% (+7.1 pp)"
+ },
+ "volume_share": {
+ "score": 0.6246,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 37.5% vs target 50.0% (+12.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2495,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.0% (daily 75.0%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2368,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 51.3% vs target 25.0% (-26.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.3589,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.1% vs target 20.0% (-14.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.5369,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 46.3% (daily 46.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:48:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_188",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5623,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.8% vs target 40.0% (+6.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.6241,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 37.6% vs target 50.0% (+12.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8173,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "tinkoff via vipay: 6 in history, approval 81.7%"
+ },
+ "load": {
+ "score": 0.2495,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.0% (daily 75.0%, in_progress 50.0%/38.8%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2435,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.6% vs target 25.0% (-25.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.3591,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.1% vs target 20.0% (-14.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.6809,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "tinkoff via quickpay: 6 in history, approval 68.1%"
+ },
+ "load": {
+ "score": 0.5369,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 46.3% (daily 46.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 12000,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:48:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_189",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 15000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3717; decisive: load (+0.081), traffic_share (+0.075)",
+ "score": 0.3717,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "weight": 0.3,
+ "weighted": 0.075,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.3595,
+ "weight": 0.1,
+ "weighted": 0.0359,
+ "note": "volume share 34.1% vs target 20.0% (-14.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "alfa via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5369,
+ "weight": 0.15,
+ "weighted": 0.0805,
+ "note": "utilization 46.3% (daily 46.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 15000,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:49:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_190",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000",
+ "violations": [
+ "amount_below_minimum",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "alfa",
+ "created_at": "2026-07-30T09:49:30+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_191",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000"
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.75,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5625,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.8% vs target 40.0% (+6.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.6239,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 37.6% vs target 50.0% (+12.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.8454,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "sberbank via vipay: 8 in history, approval 84.5%"
+ },
+ "load": {
+ "score": 0.2455,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.4% (daily 75.4%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.25 < 0.75 (vipay)",
+ "score": 0.25,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.3586,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.1% vs target 20.0% (-14.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.449,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "sberbank via quickpay: 5 in history, approval 44.9%"
+ },
+ "load": {
+ "score": 0.535,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 46.5% (daily 46.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "normalized": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "0/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "sberbank",
+ "created_at": "2026-07-30T09:50:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_192",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "55000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3702; decisive: load (+0.08), traffic_share (+0.077)",
+ "score": 0.3702,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2562,
+ "weight": 0.3,
+ "weighted": 0.0769,
+ "note": "count share 49.4% vs target 25.0% (-24.4 pp)"
+ },
+ "volume_share": {
+ "score": 0.3588,
+ "weight": 0.1,
+ "weighted": 0.0359,
+ "note": "volume share 34.1% vs target 20.0% (-14.1 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.535,
+ "weight": 0.15,
+ "weighted": 0.0802,
+ "note": "utilization 46.5% (daily 46.5%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 55000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:50:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_193",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3666; decisive: load (+0.079), traffic_share (+0.075)",
+ "score": 0.3666,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.25,
+ "weight": 0.3,
+ "weighted": 0.075,
+ "note": "count share 50.0% vs target 25.0% (-25.0 pp)"
+ },
+ "volume_share": {
+ "score": 0.3556,
+ "weight": 0.1,
+ "weighted": 0.0356,
+ "note": "volume share 34.4% vs target 20.0% (-14.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5281,
+ "weight": 0.15,
+ "weighted": 0.0792,
+ "note": "utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 2000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:51:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_194",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3618; decisive: load (+0.079), traffic_share (+0.073)",
+ "score": 0.3618,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.244,
+ "weight": 0.3,
+ "weighted": 0.0732,
+ "note": "count share 50.6% vs target 25.0% (-25.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.3554,
+ "weight": 0.1,
+ "weighted": 0.0355,
+ "note": "volume share 34.5% vs target 20.0% (-14.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.5279,
+ "weight": 0.15,
+ "weighted": 0.0792,
+ "note": "utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "weight": 0.05,
+ "weighted": 0.0467,
+ "note": "1/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 3000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:51:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_195",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5667,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.3% vs target 40.0% (+6.7 pp)"
+ },
+ "volume_share": {
+ "score": 0.6255,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 37.4% vs target 50.0% (+12.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2439,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 75.6% (daily 75.6%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2381,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 51.2% vs target 25.0% (-26.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.3553,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.5% vs target 20.0% (-14.5 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.5275,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 40000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:52:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_196",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3653; decisive: load (+0.079), traffic_share (+0.073)",
+ "score": 0.3653,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2441,
+ "weight": 0.3,
+ "weighted": 0.0732,
+ "note": "count share 50.6% vs target 25.0% (-25.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.3565,
+ "weight": 0.1,
+ "weighted": 0.0356,
+ "note": "volume share 34.4% vs target 20.0% (-14.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.649,
+ "weight": 0.05,
+ "weighted": 0.0325,
+ "note": "gazprombank via quickpay: 5 in history, approval 64.9%"
+ },
+ "load": {
+ "score": 0.5275,
+ "weight": 0.15,
+ "weighted": 0.0791,
+ "note": "utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 2000,
+ "bank": "gazprombank",
+ "created_at": "2026-07-30T09:52:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_197",
+ "selected_provider": "vipay",
+ "reason": "best_score",
+ "attempts": [
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "vipay",
+ "decision": "selected",
+ "reason": "best_score",
+ "details": "score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)",
+ "score": 0.725,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.5628,
+ "normalized": 1.0,
+ "weight": 0.3,
+ "weighted": 0.3,
+ "note": "count share 33.7% vs target 40.0% (+6.3 pp)"
+ },
+ "volume_share": {
+ "score": 0.6233,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "volume share 37.7% vs target 50.0% (+12.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "priority 1 (1 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.798,
+ "normalized": 1.0,
+ "weight": 0.1,
+ "weighted": 0.1,
+ "note": "conversion_24h 0.87, history 41 ops → calibrated 0.798"
+ },
+ "bank_affinity": {
+ "score": 0.7492,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "vtb via vipay: 7 in history, approval 74.9%"
+ },
+ "load": {
+ "score": 0.2359,
+ "normalized": 0.0,
+ "weight": 0.15,
+ "weighted": 0.0,
+ "note": "utilization 76.4% (daily 76.4%, in_progress 40.0%/38.0%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 38
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "lower_score",
+ "details": "score 0.275 < 0.725 (vipay)",
+ "score": 0.275,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2384,
+ "normalized": 0.0,
+ "weight": 0.3,
+ "weighted": 0.0,
+ "note": "count share 51.2% vs target 25.0% (-26.2 pp)"
+ },
+ "volume_share": {
+ "score": 0.3564,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "volume share 34.4% vs target 20.0% (-14.4 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "normalized": 0.5,
+ "weight": 0.1,
+ "weighted": 0.05,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "normalized": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.8327,
+ "normalized": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "vtb via quickpay: 10 in history, approval 83.3%"
+ },
+ "load": {
+ "score": 0.5273,
+ "normalized": 1.0,
+ "weight": 0.15,
+ "weighted": 0.15,
+ "note": "utilization 47.3% (daily 47.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 0.9333,
+ "normalized": 0.0,
+ "weight": 0.05,
+ "weighted": 0.0,
+ "note": "1/15 requests in last 60s"
+ }
+ }
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 38,
+ "amount": 8000,
+ "bank": "vtb",
+ "created_at": "2026-07-30T09:53:00+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_198",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "amount_exceeds_limit",
+ "details": "52000 > limit_amount_max 50000",
+ "violations": [
+ "amount_exceeds_limit",
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.3682; decisive: load (+0.079), traffic_share (+0.073)",
+ "score": 0.3682,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2443,
+ "weight": 0.3,
+ "weighted": 0.0733,
+ "note": "count share 50.6% vs target 25.0% (-25.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.3566,
+ "weight": 0.1,
+ "weighted": 0.0357,
+ "note": "volume share 34.3% vs target 20.0% (-14.3 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 50001..100000 prefer vipay"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5273,
+ "weight": 0.15,
+ "weighted": 0.0791,
+ "note": "utilization 47.3% (daily 47.3%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 52000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:53:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_199",
+ "selected_provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "skipped",
+ "reason": "amount_below_minimum",
+ "details": "900 < limit_amount_min 1000"
+ },
+ {
+ "provider": "spacepayments",
+ "decision": "selected",
+ "reason": "fallback_self_provider",
+ "details": "no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum",
+ "simulated_result": "approved",
+ "latency_sec": 15
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 15,
+ "amount": 900,
+ "bank": "tinkoff",
+ "created_at": "2026-07-30T09:54:00+03:00",
+ "retries": 0,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_200",
+ "selected_provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "attempts": [
+ {
+ "provider": "vipay",
+ "decision": "skipped",
+ "reason": "bank_not_in_list",
+ "details": "raiffeisen not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "decision": "skipped",
+ "reason": "daily_limit_exceeded",
+ "details": "daily_approved_amount 2999400 + 30000 > daily_amount_limit 3000000",
+ "violations": [
+ "daily_limit_exceeded",
+ "bank_not_in_list"
+ ]
+ },
+ {
+ "provider": "quickpay",
+ "decision": "selected",
+ "reason": "only_eligible_provider",
+ "details": "score 0.367; decisive: load (+0.078), traffic_share (+0.073)",
+ "score": 0.367,
+ "breakdown": {
+ "traffic_share": {
+ "score": 0.2444,
+ "weight": 0.3,
+ "weighted": 0.0733,
+ "note": "count share 50.6% vs target 25.0% (-25.6 pp)"
+ },
+ "volume_share": {
+ "score": 0.3536,
+ "weight": 0.1,
+ "weighted": 0.0354,
+ "note": "volume share 34.6% vs target 20.0% (-14.6 pp)"
+ },
+ "cascade_priority": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "priority 3 (3 of 3)"
+ },
+ "amount_band": {
+ "score": 0.0,
+ "weight": 0.1,
+ "weighted": 0.0,
+ "note": "amounts 500..50000 prefer payflow"
+ },
+ "conversion": {
+ "score": 0.698,
+ "weight": 0.1,
+ "weighted": 0.0698,
+ "note": "conversion_24h 0.79, history 40 ops → calibrated 0.698"
+ },
+ "bank_affinity": {
+ "score": 0.7075,
+ "weight": 0.05,
+ "weighted": 0.0354,
+ "note": "raiffeisen via quickpay: 7 in history, approval 70.8%"
+ },
+ "load": {
+ "score": 0.5208,
+ "weight": 0.15,
+ "weighted": 0.0781,
+ "note": "utilization 47.9% (daily 47.9%, in_progress 6.7%/2.5%)"
+ },
+ "turnover_min": {
+ "score": 0.5,
+ "weight": 0.05,
+ "weighted": 0.025,
+ "note": "no daily_turnover_min"
+ },
+ "rate_headroom": {
+ "score": 1.0,
+ "weight": 0.05,
+ "weighted": 0.05,
+ "note": "0/15 requests in last 60s"
+ }
+ },
+ "simulated_result": "approved",
+ "latency_sec": 29
+ }
+ ],
+ "simulated_result": "approved",
+ "latency_sec": 29,
+ "amount": 30000,
+ "bank": "raiffeisen",
+ "created_at": "2026-07-30T09:54:30+03:00",
+ "retries": 0,
+ "fallback_used": false
+ }
+]
diff --git a/routing_report_test.html b/routing_report_test.html
new file mode 100644
index 0000000..60dd4fc
--- /dev/null
+++ b/routing_report_test.html
@@ -0,0 +1,4679 @@
+
+
+
+
+
+PayoutRouter · отчёт роутинга 2026-07-30
+
+
+
+
+
+
+
+
+ Против оптимума онлайн-роутинг сравнён с точным решением всей очереди
+
+ Эталон считается как транспортная задача «банк × провайдер» и решается точно (min-cost flow).
+ У него две форы: он видит всю очередь заранее и не ограничен ёмкостями. Self-provider доступен ему
+ ровно в том объёме, в каком его использовал роутер, — иначе «всё себе» побеждает любую стратегию.
+ Наше распределение допустимо в его задаче, поэтому это настоящая верхняя граница: превысить её нельзя.
+
+
+
+
100.12%
+
от точного оптимума
+
+
+
+
+ худшее допустимое 53.93
+ мы 63.55
+ оптимум 63.48
+
+
+ Отставание -0.07
+ одобрения раскладывается на два слагаемых:
+ 17.65 — цена обязательства держать целевые
+ доли (эталон без этого требования свободнее), и
+ -17.73 — цена решений по одной заявке
+ без знания следующих.
+ Второе слагаемое отрицательное: роутер сознательно отступил от целевых долей ради одобрений
+ и обошёл эталон, которому держать их обязательно. Доли у роутера — мягкая цель, а не жёсткое
+ ограничение, поэтому такое возможно.
+
+
+
+
+
+
+ Распределение факт против цели из снимка и против достижимой
+ Достижимая цель — доля, которую провайдер получил бы при идеально пропорциональном
+ роутинге среди тех заявок, где он вообще проходит hard-правила. Отклонение от неё показывает работу
+ стратегии; отклонение от цели из снимка — ещё и то, насколько сама цель выполнима на этих данных.
+
+ Провайдер Доля по заявкам Заявок Факт Цель Откл. Достижимо Откл. от дост. Объём Доля объёма / цель
+
+ vipay
+
+ 30
+ 33.3%
+ 40%
+ -6.7
+ 21.0%
+ +12.4
+ 628 500 ₽
+ 18.0% / 50%
+
+
+ payflow
+
+ 10
+ 11.1%
+ 35%
+ -23.9
+ 8.7%
+ +2.4
+ 99 400 ₽
+ 2.8% / 30%
+
+
+ quickpay
+
+ 46
+ 51.1%
+ 25%
+ +26.1
+ 65.9%
+ -14.8
+ 2 764 000 ₽
+ 79.1% / 20%
+
+
+ spacepayments
+
+ 4
+ 4.4%
+ 0%
+ +4.4
+ 0.0%
+ +4.4
+ 3 600 ₽
+ 0.1% / 0%
+
+
+
+
+
+ Загрузка лимитов после обработки очереди
+
+ Провайдер Дневной оборот Использовано Лимит In-progress Реквизиты Одобрено / отказ / таймаут Конверсия (сим. / 24h)
+
+ vipay
+
+ 3 828 500 ₽ (76.6%)
+ 5 000 000 ₽
+ 4/10 · 380 000 ₽
+ 12
+ 30 / 0 / 0
+ 1.0 / 0.87
+
+
+ payflow
+
+ 2 999 400 ₽ (100.0%)
+ 3 000 000 ₽
+ 2/8 · 120 000 ₽
+ 5
+ 10 / 0 / 0
+ 1.0 / 0.91
+
+
+ quickpay
+
+ 3 864 000 ₽ (48.3%)
+ 8 000 000 ₽
+ 1/15 · 50 000 ₽
+ 20
+ 46 / 0 / 0
+ 1.0 / 0.79
+
+
+ spacepayments
+
+ 3 600 ₽ (—)
+ —
+ 0/∞ · 0 ₽
+ 8
+ 4 / 0 / 0
+ 1.0 / 0.95
+
+
+
+
+
+ Причины отсева по всем попыткам
+
+ bank_not_in_list × 57
+ daily_limit_exceeded × 40
+ amount_exceeds_limit × 33
+ amount_below_minimum × 16
+
+
+
+
+ Разобранные примеры кого выбрали, почему отсеяли остальных и что при отказе
+ разобранные примеры: кого выбрали, почему отсеяли остальных и что происходит при отказе. У каждого примера source — где в коде принимается это решение. Полный трейс по всем заявкам — в routing_decisions.json
+
+ op_111 · среди нескольких допустимых выбран лучший по сумме взвешенных целей
+ 8000 ₽ · alfa
+
+ Провайдер Решение Почему
+
+ payflow
+ + best_score
+ score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
+
+
+ vipay
+ − bank_not_in_list
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ quickpay
+ − lower_score
+ score 0.45 < 0.55 (payflow)
+
+
+ где в коде: lib/payout_router/scoring/composite_scorer.rb → CompositeScorer#rank (нормировка по пулу кандидатов и взвешенная сумма целей)
+
+
+ op_113 · hard-правила оставили одного кандидата — скоринг уже ничего не решает
+ 10000 ₽ · gazprombank
+
+ Провайдер Решение Почему
+
+ quickpay
+ + only_eligible_provider
+ score 0.5869; decisive: traffic_share (+0.225), load (+0.129)
+
+
+ vipay
+ − bank_not_in_list
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ − bank_not_in_list
+ gazprombank not in banks [sberbank, alfa]
+
+
+ где в коде: lib/payout_router/constraints/pipeline.rb → Pipeline#evaluate (правила из policy.hard_constraints, коды причин — routing/reasons.rb)
+
+
+ op_112 · провайдер отказал: заявка переотправлена следующему по рангу
+ 40000 ₽ · vtb
+
+ Провайдер Решение Почему
+
+ quickpay
+ + fallback_after_failure
+ retry #1 after failure; score 0.4; decisive: load (+0.15), volume_share (+0.1)
+
+
+ payflow
+ − bank_not_in_list
+ vtb not in banks [sberbank, alfa]
+
+
+ vipay
+ − provider_rejected
+ dispatched, simulated result: rejected after 38s (score 0.6; decisive: traffic_share (+0.3), cascade_priority (+0.1))
+
+
+ где в коде: lib/payout_router/routing/router.rb → Router#try_ranked (отправка, разбор исхода и переход к следующему кандидату по рангу)
+
+
+ op_116 · внешние кандидаты кончились — заявка ушла на self-provider
+ 20000 ₽ · gazprombank
+
+ Провайдер Решение Почему
+
+ spacepayments
+ + fallback_self_provider
+ all 1 eligible providers failed: vipay: bank_not_in_list; payflow: bank_not_in_list; quickpay: provider_rejected
+
+
+ vipay
+ − bank_not_in_list
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ − bank_not_in_list
+ gazprombank not in banks [sberbank, alfa]
+
+
+ quickpay
+ − provider_rejected
+ dispatched, simulated result: rejected after 29s (score 0.4656; decisive: load (+0.128), traffic_share (+0.105))
+
+
+ где в коде: lib/payout_router/routing/router.rb → Router#fallback (пул внешних исчерпан — self-provider по policy.fallback_rules)
+
+
+
+
+ Каскад при отказах та же очередь, исходы по conversion_24h, seed 42
+ основной прогон — optimistic, отказов в routing_decisions нет по построению. Здесь та же очередь и политика, исходы разыграны по conversion_24h (seed 42): видно переход к следующему провайдеру и fallback. Полные решения этого прогона в формате routing_decisions — в routing_cascade_demo*.json рядом с отчётом
+
+ отправок 101
+ неудачных 11
+ заявок с повтором 11
+ fallback 12
+
+
+ Заявка Путь по каскаду Итог
+
+ op_112
+ vipay: provider_rejected (rejected) → quickpay: fallback_after_failure (approved)
+ quickpay · approved
+
+
+ op_116
+ quickpay: provider_rejected (rejected) → spacepayments: fallback_self_provider (approved)
+ spacepayments · approved
+
+
+ op_118
+ quickpay: provider_rejected (rejected) → spacepayments: fallback_self_provider (approved)
+ spacepayments · approved
+
+
+
+
+
+ Достижимость целевых долей в какой доле заявок провайдер вообще допустим
+
+ Провайдер Допустим Заявок Что блокирует Банки, не прошедшие фильтр
+
+ vipay
+
+ 31/90 (34.4%)
+ bank_not_in_list ×41, amount_exceeds_limit ×10, amount_below_minimum ×8
+ gazprombank ×15, alfa ×13, raiffeisen ×13
+
+
+ payflow
+
+ 11/90 (12.2%)
+ daily_limit_exceeded ×40, amount_exceeds_limit ×23, bank_not_in_list ×16
+ vtb ×5, tinkoff ×4, raiffeisen ×4, gazprombank ×3
+
+
+ quickpay
+
+ 82/90 (91.1%)
+ amount_below_minimum ×8
+
+
+
+
+
+
+ Рекомендации 9
+
+
критично · daily_limit_pressure · traffic_percentage: 35 → 20
+
payflow: дневной лимит использован на 100.0% (2 999 400 ₽ из 3 000 000 ₽) — снизить traffic_percentage с 35 до 20 или поднять daily_amount_limit до 3 800 000 ₽
+
+
+
внимание · share_shortfall · traffic_percentage: 35 → 10
+
payflow: доля 11.1% при цели 35% — цель недостижима, провайдер допустим лишь в 12.2% заявок (главная причина: daily_limit_exceeded, 40 раз), а при пропорциональном роутинге по допустимым получил бы 8.7%. Устранить причину daily_limit_exceeded; либо снизить traffic_percentage до достижимых 10
+
+
+
внимание · fallback_usage · fallback_operations: 4 → 0
+
4 из 90 заявок (4.4%) ушли на self-provider spacepayments: внешние провайдеры отсеяны по причинам amount_below_minimum ×8, daily_limit_exceeded ×3, bank_not_in_list ×1 — расширить лимиты/банки внешних провайдеров или подключить ещё одного
+
+
+
внимание · conversion_drift · conversion_24h: 0.91 → 0.47
+
payflow: заявленная conversion_24h 0.91 лежит вне 95% интервала по истории [0.273, 0.683] (19 операций, факт 0.47) — метрика завышена, скоринг по конверсии переоценивает провайдера. Проверить источник conversion_24h или использовать наблюдаемое значение 0.47
+
+
+
к сведению · share_overflow · traffic_percentage: 25 → 50
+
quickpay: доля 51.1% при цели 25% — принимает переток заявок, которые другие провайдеры не прошли (vipay: bank_not_in_list ×41; vipay: amount_exceeds_limit ×10; payflow: daily_limit_exceeded ×40; payflow: amount_exceeds_limit ×23). Либо признать это и поднять traffic_percentage до 50, либо расширить лимиты/банки у остальных
+
+
+
к сведению · low_conversion_overload · goals.conversion: 0.1 → 0.2
+
quickpay: самая низкая конверсия в пуле (0.79) при доле 51.1% (цель 25%) — примерно 2.8 лишних отказов на 90 заявок. Поднять вес conversion с 0.1 до 0.2 или расширить лимиты провайдеров с конверсией 0.91
+
+
+
к сведению · expired_heavy · goals.latency: 0.0 → 0.1
+
payflow: в истории 36.8% заявок истекли по таймауту (средняя задержка 631 с) — включить latency в скоринг (вес 0.1) или снизить traffic_percentage с 35 до 25
+
+
+
к сведению · expired_heavy · goals.latency: 0.0 → 0.1
+
quickpay: в истории 15.0% заявок истекли по таймауту (средняя задержка 539 с) — включить latency в скоринг (вес 0.1) или снизить traffic_percentage с 25 до 15
+
+
+
к сведению · dead_goal · goals.turnover_min: 0.05 → 0
+
цель turnover_min (вес 0.05) не различила кандидатов ни в одной из 37 конкурентных заявок — на этой очереди не работает и лишь размывает остальные веса. Снять вес (goals.turnover_min: 0) или изменить её параметры
+
+
+
+
+ История операций 100 заявок · заявленная конверсия против наблюдаемой
+
+ Провайдер Операций Доля Конверсия Отказы Таймауты Задержка, с Заявлено 24h Дрейф
+
+ payflow
+ 19
+ 19.0%
+ 0.474
+ 15.8%
+ 36.8%
+ 77
+ 0.91
+ -43.6 п.п.
+
+
+ quickpay
+ 40
+ 40.0%
+ 0.675
+ 17.5%
+ 15.0%
+ 55
+ 0.79
+ -11.5 п.п.
+
+
+ vipay
+ 41
+ 41.0%
+ 0.78
+ 14.6%
+ 7.3%
+ 52
+ 0.87
+ -9.0 п.п.
+
+
+
+
+
+ Решения по заявкам раскройте, чтобы увидеть трейс
+
+
+ ✓
+ op_111 8 000 ₽ alfa
+ → payflow · approved · 52 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.55
+ score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.45
+ score 0.45 < 0.55 (payflow)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.85 1.0 0.3 0.3 count share 0.0% vs target 35.0% (+35.0 pp)
+ volume_share 0.4103 0.0 0.1 0.0 volume share 39.0% vs target 30.0% (-9.0 pp)
+ cascade_priority 0.5 1.0 0.1 0.1 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 0.0 0.1 0.0 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 0.0 0.05 0.0 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0333 0.0 0.15 0.0 utilization 96.7% (daily 96.7%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3020000)
+ rate_headroom 1.0 0.5 0.05 0.025 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_112 40 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ vtb not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.6
+ score 0.6; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.4
+ score 0.4 < 0.6 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.9 1.0 0.3 0.3 count share 0.0% vs target 40.0% (+40.0 pp)
+ volume_share 0.5385 0.0 0.1 0.0 volume share 46.1% vs target 50.0% (+3.9 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.36 0.0 0.15 0.0 utilization 64.0% (daily 64.0%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 0.5 0.05 0.025 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_113 10 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, alfa]
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5869
+ score 0.5869; decisive: traffic_share (+0.225), load (+0.129)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.75 — 0.3 0.225 count share 0.0% vs target 25.0% (+25.0 pp)
+ volume_share 0.5525 — 0.1 0.0553 volume share 14.7% vs target 20.0% (+5.3 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.8625 — 0.15 0.1294 utilization 13.8% (daily 13.8%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_114 75 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 75000 > limit_amount_max 50000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5667 1.0 0.3 0.3 count share 33.3% vs target 40.0% (+6.7 pp)
+ volume_share 0.5364 0.0 0.1 0.0 volume share 46.4% vs target 50.0% (+3.6 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 50001..100000
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.352 0.0 0.15 0.0 utilization 64.8% (daily 64.8%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_115 52 000 ₽ vtb
+ → quickpay · approved · 29 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 52000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.675
+ score 0.675; decisive vs vipay: traffic_share (+0.3), load (+0.15)
+
+
+ vipay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.325
+ score 0.325 < 0.675 (quickpay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5 1.0 0.3 0.3 count share 25.0% vs target 25.0% (+0.0 pp)
+ volume_share 0.5528 1.0 0.1 0.1 volume share 14.7% vs target 20.0% (+5.3 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 0.0 0.1 0.0 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.8327 1.0 0.05 0.05 vtb via quickpay: 10 in history, approval 83.3%
+ load 0.8613 1.0 0.15 0.15 utilization 13.9% (daily 13.9%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_116 20 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, alfa]
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4619
+ score 0.4619; decisive: load (+0.128), traffic_share (+0.105)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.35 — 0.3 0.105 count share 40.0% vs target 25.0% (-15.0 pp)
+ volume_share 0.5473 — 0.1 0.0547 volume share 15.3% vs target 20.0% (+4.7 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.8548 — 0.15 0.1282 utilization 14.5% (daily 14.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_117 2 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ vtb not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.625
+ score 0.625; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.375
+ score 0.375 < 0.625 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5667 1.0 0.3 0.3 count share 33.3% vs target 40.0% (+6.7 pp)
+ volume_share 0.5355 0.0 0.1 0.0 volume share 46.4% vs target 50.0% (+3.6 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.337 0.0 0.15 0.0 utilization 66.3% (daily 66.3%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_118 80 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 80000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.456
+ score 0.456; decisive: load (+0.128), traffic_share (+0.096)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3214 — 0.3 0.0964 count share 42.9% vs target 25.0% (-17.9 pp)
+ volume_share 0.5452 — 0.1 0.0545 volume share 15.5% vs target 20.0% (+4.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.8523 — 0.15 0.1278 utilization 14.8% (daily 14.8%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_119 900 ₽ alfa
+ → payflow · approved · 52 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ payflow
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5732
+ score 0.5732; decisive: traffic_share (+0.218), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.725 — 0.3 0.2175 count share 12.5% vs target 35.0% (+22.5 pp)
+ volume_share 0.4232 — 0.1 0.0423 volume share 37.7% vs target 30.0% (-7.7 pp)
+ cascade_priority 0.5 — 0.1 0.05 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 — 0.1 0.0624 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 — 0.05 0.0213 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0307 — 0.15 0.0046 utilization 96.9% (daily 96.9%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3028000)
+ rate_headroom 1.0 — 0.05 0.05 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_120 150 000 ₽ sberbank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5389
+ score 0.5389; decisive: load (+0.126), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3056 — 0.3 0.0917 count share 44.4% vs target 25.0% (-19.4 pp)
+ volume_share 0.5368 — 0.1 0.0537 volume share 16.3% vs target 20.0% (+3.7 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.449 — 0.05 0.0225 sberbank via quickpay: 5 in history, approval 44.9%
+ load 0.8423 — 0.15 0.1263 utilization 15.8% (daily 15.8%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_121 75 000 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 75000 > limit_amount_max 50000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.825
+ score 0.825; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.175
+ score 0.175 < 0.825 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6 1.0 0.3 0.3 count share 30.0% vs target 40.0% (+10.0 pp)
+ volume_share 0.5485 1.0 0.1 0.1 volume share 45.2% vs target 50.0% (+4.8 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 50001..100000
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.3366 0.0 0.15 0.0 utilization 66.3% (daily 66.3%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_122 25 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ tinkoff not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5364 1.0 0.3 0.3 count share 36.4% vs target 40.0% (+3.6 pp)
+ volume_share 0.5435 1.0 0.1 0.1 volume share 45.6% vs target 50.0% (+4.4 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.3366 0.0 0.15 0.0 utilization 66.3% (daily 66.3%, in_progress 50.0%/45.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_123 80 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 80000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4531
+ score 0.4531; decisive: load (+0.124), traffic_share (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3333 — 0.3 0.1 count share 41.7% vs target 25.0% (-16.7 pp)
+ volume_share 0.5236 — 0.1 0.0524 volume share 17.6% vs target 20.0% (+2.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.8235 — 0.15 0.1235 utilization 17.6% (daily 17.6%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_124 25 000 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.6468
+ score 0.6468; decisive vs payflow: volume_share (+0.1), conversion (+0.1)
+
+
+ payflow
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.5471
+ score 0.5471 < 0.6468 (vipay)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.2893
+ score 0.2893 < 0.6468 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5154 0.5566 0.3 0.167 count share 38.5% vs target 40.0% (+1.5 pp)
+ volume_share 0.5462 1.0 0.1 0.1 volume share 45.4% vs target 50.0% (+4.6 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.3166 0.3655 0.15 0.0548 utilization 68.3% (daily 68.3%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_125 45 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ vtb not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.675
+ score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.325
+ score 0.325 < 0.675 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.4714 1.0 0.3 0.3 count share 42.9% vs target 40.0% (-2.9 pp)
+ volume_share 0.5446 1.0 0.1 0.1 volume share 45.5% vs target 50.0% (+4.5 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.3166 0.0 0.15 0.0 utilization 68.3% (daily 68.3%, in_progress 50.0%/40.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_126 15 000 ₽ alfa
+ → payflow · approved · 52 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.55
+ score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.45
+ score 0.45 < 0.55 (payflow)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.7167 1.0 0.3 0.3 count share 13.3% vs target 35.0% (+21.7 pp)
+ volume_share 0.441 0.0 0.1 0.0 volume share 35.9% vs target 30.0% (-5.9 pp)
+ cascade_priority 0.5 1.0 0.1 0.1 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 0.0 0.1 0.0 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 0.0 0.05 0.0 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0304 0.0 0.15 0.0 utilization 97.0% (daily 97.0%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3028900)
+ rate_headroom 1.0 0.5 0.05 0.025 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_127 42 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, alfa]
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4665
+ score 0.4665; decisive: load (+0.122), traffic_share (+0.112)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.375 — 0.3 0.1125 count share 37.5% vs target 25.0% (-12.5 pp)
+ volume_share 0.5176 — 0.1 0.0518 volume share 18.2% vs target 20.0% (+1.8 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.8135 — 0.15 0.122 utilization 18.6% (daily 18.6%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_128 40 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, alfa]
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4509
+ score 0.4509; decisive: load (+0.121), traffic_share (+0.101)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3382 — 0.3 0.1015 count share 41.2% vs target 25.0% (-16.2 pp)
+ volume_share 0.5135 — 0.1 0.0514 volume share 18.6% vs target 20.0% (+1.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.8083 — 0.15 0.1212 utilization 19.2% (daily 19.2%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_129 52 000 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 52000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.44
+ score 0.44; decisive: load (+0.12), traffic_share (+0.092)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3056 — 0.3 0.0917 count share 44.4% vs target 25.0% (-19.4 pp)
+ volume_share 0.5097 — 0.1 0.051 volume share 19.0% vs target 20.0% (+1.0 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.8033 — 0.15 0.1205 utilization 19.7% (daily 19.7%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_130 95 000 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 95000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4297
+ score 0.4297; decisive: load (+0.12), traffic_share (+0.083)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2763 — 0.3 0.0829 count share 47.4% vs target 25.0% (-22.4 pp)
+ volume_share 0.5048 — 0.1 0.0505 volume share 19.5% vs target 20.0% (+0.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.7968 — 0.15 0.1195 utilization 20.3% (daily 20.3%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_131 150 000 ₽ vtb
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5254
+ score 0.5254; decisive: load (+0.118), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.25 — 0.3 0.075 count share 50.0% vs target 25.0% (-25.0 pp)
+ volume_share 0.496 — 0.1 0.0496 volume share 20.4% vs target 20.0% (-0.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.8327 — 0.05 0.0416 vtb via quickpay: 10 in history, approval 83.3%
+ load 0.7849 — 0.15 0.1177 utilization 21.5% (daily 21.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_132 3 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ vtb not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5667 1.0 0.3 0.3 count share 33.3% vs target 40.0% (+6.7 pp)
+ volume_share 0.5622 1.0 0.1 0.1 volume share 43.8% vs target 50.0% (+6.2 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.3026 0.0 0.15 0.0 utilization 69.7% (daily 69.7%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_133 8 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, alfa]
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4154
+ score 0.4154; decisive: load (+0.115), traffic_share (+0.075)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.25 — 0.3 0.075 count share 50.0% vs target 25.0% (-25.0 pp)
+ volume_share 0.4826 — 0.1 0.0483 volume share 21.7% vs target 20.0% (-1.7 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.7661 — 0.15 0.1149 utilization 23.4% (daily 23.4%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_134 12 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ tinkoff not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.775
+ score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.225
+ score 0.225 < 0.775 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5522 1.0 0.3 0.3 count share 34.8% vs target 40.0% (+5.2 pp)
+ volume_share 0.5624 1.0 0.1 0.1 volume share 43.8% vs target 50.0% (+6.2 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.302 0.0 0.15 0.0 utilization 69.8% (daily 69.8%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_135 800 ₽ sberbank
+ → payflow · approved · 52 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 800 < limit_amount_min 1000
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 800 < limit_amount_min 1000
+
+
+ payflow
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5856
+ score 0.5856; decisive: traffic_share (+0.218), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.725 — 0.3 0.2175 count share 12.5% vs target 35.0% (+22.5 pp)
+ volume_share 0.4562 — 0.1 0.0456 volume share 34.4% vs target 30.0% (-4.4 pp)
+ cascade_priority 0.5 — 0.1 0.05 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 — 0.1 0.0624 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.6241 — 0.05 0.0312 sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%
+ load 0.0254 — 0.15 0.0038 utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3043900)
+ rate_headroom 1.0 — 0.05 0.05 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_136 35 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ tinkoff not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.75
+ score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.25
+ score 0.25 < 0.75 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.54 1.0 0.3 0.3 count share 36.0% vs target 40.0% (+4.0 pp)
+ volume_share 0.5616 1.0 0.1 0.1 volume share 43.8% vs target 50.0% (+6.2 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.2996 0.0 0.15 0.0 utilization 70.0% (daily 70.0%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 0.5 0.05 0.025 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_137 180 000 ₽ sberbank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 180000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 180000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5169
+ score 0.5169; decisive: load (+0.115), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2885 — 0.3 0.0865 count share 46.2% vs target 25.0% (-21.2 pp)
+ volume_share 0.483 — 0.1 0.0483 volume share 21.7% vs target 20.0% (-1.7 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.449 — 0.05 0.0225 sberbank via quickpay: 5 in history, approval 44.9%
+ load 0.7651 — 0.15 0.1148 utilization 23.5% (daily 23.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_138 180 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 180000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 180000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5126
+ score 0.5126; decisive: load (+0.111), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2685 — 0.3 0.0806 count share 48.1% vs target 25.0% (-23.1 pp)
+ volume_share 0.4675 — 0.1 0.0467 volume share 23.3% vs target 20.0% (-3.3 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.7426 — 0.15 0.1114 utilization 25.7% (daily 25.7%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_139 900 ₽ alfa
+ → payflow · approved · 52 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ payflow
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5717
+ score 0.5717; decisive: traffic_share (+0.212), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.7071 — 0.3 0.2121 count share 14.3% vs target 35.0% (+20.7 pp)
+ volume_share 0.4709 — 0.1 0.0471 volume share 32.9% vs target 30.0% (-2.9 pp)
+ cascade_priority 0.5 — 0.1 0.05 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 — 0.1 0.0624 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 — 0.05 0.0213 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0251 — 0.15 0.0038 utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3044700)
+ rate_headroom 1.0 — 0.05 0.05 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_140 40 000 ₽ alfa
+ → payflow · approved · 52 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.625
+ score 0.625; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.375
+ score 0.375 < 0.625 (payflow)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6776 1.0 0.3 0.3 count share 17.2% vs target 35.0% (+17.8 pp)
+ volume_share 0.4708 1.0 0.1 0.1 volume share 32.9% vs target 30.0% (-2.9 pp)
+ cascade_priority 0.5 1.0 0.1 0.1 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 0.0 0.1 0.0 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 0.0 0.05 0.0 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0251 0.0 0.15 0.0 utilization 97.5% (daily 97.5%, in_progress 37.5%/24.2%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3045600)
+ rate_headroom 0.8571 0.0 0.05 0.0 1/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_141 8 000 ₽ alfa
+ → payflow · approved · 52 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.625
+ score 0.625; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.375
+ score 0.375 < 0.625 (payflow)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.65 1.0 0.3 0.3 count share 20.0% vs target 35.0% (+15.0 pp)
+ volume_share 0.4679 1.0 0.1 0.1 volume share 33.2% vs target 30.0% (-3.2 pp)
+ cascade_priority 0.5 1.0 0.1 0.1 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 0.0 0.1 0.0 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 0.0 0.05 0.0 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0248 0.0 0.15 0.0 utilization 97.5% (daily 97.5%, in_progress 37.5%/32.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3085600)
+ rate_headroom 0.8571 0.0 0.05 0.0 1/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_142 10 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ vtb not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.7
+ score 0.7; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.3
+ score 0.3 < 0.7 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5774 1.0 0.3 0.3 count share 32.3% vs target 40.0% (+7.7 pp)
+ volume_share 0.5788 1.0 0.1 0.1 volume share 42.1% vs target 50.0% (+7.9 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.2926 0.0 0.15 0.0 utilization 70.7% (daily 70.7%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 0.5 0.05 0.025 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_143 35 000 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2973600 + 35000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5563 1.0 0.3 0.3 count share 34.4% vs target 40.0% (+5.6 pp)
+ volume_share 0.5782 1.0 0.1 0.1 volume share 42.2% vs target 50.0% (+7.8 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2926 0.0 0.15 0.0 utilization 70.7% (daily 70.7%, in_progress 50.0%/39.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_144 2 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ tinkoff not in banks [sberbank, alfa]
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5364 1.0 0.3 0.3 count share 36.4% vs target 40.0% (+3.6 pp)
+ volume_share 0.576 1.0 0.1 0.1 volume share 42.4% vs target 50.0% (+7.6 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.2906 0.0 0.15 0.0 utilization 70.9% (daily 70.9%, in_progress 50.0%/41.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_145 10 000 ₽ alfa
+ → payflow · approved · 52 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.65
+ score 0.65; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.35
+ score 0.35 < 0.65 (payflow)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6441 1.0 0.3 0.3 count share 20.6% vs target 35.0% (+14.4 pp)
+ volume_share 0.469 1.0 0.1 0.1 volume share 33.1% vs target 30.0% (-3.1 pp)
+ cascade_priority 0.5 1.0 0.1 0.1 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 0.0 0.1 0.0 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 0.0 0.05 0.0 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0088 0.0 0.15 0.0 utilization 99.1% (daily 99.1%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3093600)
+ rate_headroom 1.0 0.5 0.05 0.025 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_146 900 ₽ raiffeisen
+ → spacepayments · approved · 15 с
+ внешних провайдеров не осталось — self-provider · fallback
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, alfa]
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ spacepayments
+ selected
+ fallback_self_providerвнешних провайдеров не осталось — self-provider
+ —
+ no eligible external provider: vipay: amount_below_minimum; payflow: bank_not_in_list; quickpay: amount_below_minimum
+
+
+
+
+
+
+ ✓
+ op_147 5 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, alfa]
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4421
+ score 0.4421; decisive: traffic_share (+0.108), load (+0.108)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3611 — 0.3 0.1083 count share 38.9% vs target 25.0% (-13.9 pp)
+ volume_share 0.4554 — 0.1 0.0455 volume share 24.5% vs target 20.0% (-4.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.7201 — 0.15 0.108 utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_148 15 000 ₽ alfa
+ → payflow · approved · 52 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.675
+ score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.325
+ score 0.325 < 0.675 (payflow)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6338 1.0 0.3 0.3 count share 21.6% vs target 35.0% (+13.4 pp)
+ volume_share 0.4685 1.0 0.1 0.1 volume share 33.2% vs target 30.0% (-3.2 pp)
+ cascade_priority 0.5 1.0 0.1 0.1 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 0.0 0.1 0.0 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.4267 0.0 0.05 0.0 alfa via payflow: 7 in history, approval 42.7%
+ load 0.0055 0.0 0.15 0.0 utilization 99.5% (daily 99.5%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3103600)
+ rate_headroom 1.0 — 0.05 0.05 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_149 80 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 80000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4373
+ score 0.4373; decisive: load (+0.108), traffic_share (+0.107)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3553 — 0.3 0.1066 count share 39.5% vs target 25.0% (-14.5 pp)
+ volume_share 0.4553 — 0.1 0.0455 volume share 24.5% vs target 20.0% (-4.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.7195 — 0.15 0.1079 utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_150 42 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4301
+ score 0.4301; decisive: load (+0.106), traffic_share (+0.102)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3397 — 0.3 0.1019 count share 41.0% vs target 25.0% (-16.0 pp)
+ volume_share 0.449 — 0.1 0.0449 volume share 25.1% vs target 20.0% (-5.1 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.7095 — 0.15 0.1064 utilization 29.0% (daily 29.0%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_151 25 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 25000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.775
+ score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.225
+ score 0.225 < 0.775 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.575 1.0 0.3 0.3 count share 32.5% vs target 40.0% (+7.5 pp)
+ volume_share 0.5827 1.0 0.1 0.1 volume share 41.7% vs target 50.0% (+8.3 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.2832 0.0 0.15 0.0 utilization 71.7% (daily 71.7%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_152 15 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 15000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4311
+ score 0.4311; decisive: load (+0.106), traffic_share (+0.101)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3354 — 0.3 0.1006 count share 41.5% vs target 25.0% (-16.5 pp)
+ volume_share 0.4463 — 0.1 0.0446 volume share 25.4% vs target 20.0% (-5.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.7043 — 0.15 0.1056 utilization 29.6% (daily 29.6%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_153 2 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 2000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4231
+ score 0.4231; decisive: load (+0.105), traffic_share (+0.096)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3214 — 0.3 0.0964 count share 42.9% vs target 25.0% (-17.9 pp)
+ volume_share 0.4451 — 0.1 0.0445 volume share 25.5% vs target 20.0% (-5.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.7024 — 0.15 0.1054 utilization 29.8% (daily 29.8%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_154 42 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4191
+ score 0.4191; decisive: load (+0.105), traffic_share (+0.092)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.3081 — 0.3 0.0924 count share 44.2% vs target 25.0% (-19.2 pp)
+ volume_share 0.445 — 0.1 0.0445 volume share 25.5% vs target 20.0% (-5.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.7021 — 0.15 0.1053 utilization 29.8% (daily 29.8%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_155 95 000 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 95000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4142
+ score 0.4142; decisive: load (+0.105), traffic_share (+0.089)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2955 — 0.3 0.0886 count share 45.5% vs target 25.0% (-20.5 pp)
+ volume_share 0.4417 — 0.1 0.0442 volume share 25.8% vs target 20.0% (-5.8 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.6969 — 0.15 0.1045 utilization 30.3% (daily 30.3%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_156 150 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.508
+ score 0.508; decisive: load (+0.103), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2833 — 0.3 0.085 count share 46.7% vs target 25.0% (-21.7 pp)
+ volume_share 0.4344 — 0.1 0.0434 volume share 26.6% vs target 20.0% (-6.6 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.685 — 0.15 0.1028 utilization 31.5% (daily 31.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_157 10 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 10000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3977
+ score 0.3977; decisive: load (+0.1), traffic_share (+0.082)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2717 — 0.3 0.0815 count share 47.8% vs target 25.0% (-22.8 pp)
+ volume_share 0.4232 — 0.1 0.0423 volume share 27.7% vs target 20.0% (-7.7 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.6663 — 0.15 0.0999 utilization 33.4% (daily 33.4%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_158 42 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3941
+ score 0.3941; decisive: load (+0.1), traffic_share (+0.078)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2606 — 0.3 0.0782 count share 48.9% vs target 25.0% (-23.9 pp)
+ volume_share 0.4225 — 0.1 0.0422 volume share 27.8% vs target 20.0% (-7.8 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.665 — 0.15 0.0998 utilization 33.5% (daily 33.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_159 48 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 48000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3898
+ score 0.3898; decisive: load (+0.099), traffic_share (+0.075)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.25 — 0.3 0.075 count share 50.0% vs target 25.0% (-25.0 pp)
+ volume_share 0.4194 — 0.1 0.0419 volume share 28.1% vs target 20.0% (-8.1 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.6598 — 0.15 0.099 utilization 34.0% (daily 34.0%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_160 120 000 ₽ tinkoff
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 120000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 120000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4871
+ score 0.4871; decisive: amount_band (+0.1), load (+0.098)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2398 — 0.3 0.0719 count share 51.0% vs target 25.0% (-26.0 pp)
+ volume_share 0.4159 — 0.1 0.0416 volume share 28.4% vs target 20.0% (-8.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.6809 — 0.05 0.034 tinkoff via quickpay: 6 in history, approval 68.1%
+ load 0.6538 — 0.15 0.0981 utilization 34.6% (daily 34.6%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_161 150 000 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 150000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4824
+ score 0.4824; decisive: amount_band (+0.1), load (+0.096)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.23 — 0.3 0.069 count share 52.0% vs target 25.0% (-27.0 pp)
+ volume_share 0.4074 — 0.1 0.0407 volume share 29.3% vs target 20.0% (-9.3 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.6387 — 0.15 0.0958 utilization 36.1% (daily 36.1%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_162 30 000 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 30000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.775
+ score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.225
+ score 0.225 < 0.775 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6255 1.0 0.3 0.3 count share 27.5% vs target 40.0% (+12.5 pp)
+ volume_share 0.6088 1.0 0.1 0.1 volume share 39.1% vs target 50.0% (+10.9 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2782 0.0 0.15 0.0 utilization 72.2% (daily 72.2%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_163 40 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 40000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3793
+ score 0.3793; decisive: load (+0.093), conversion (+0.07)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2308 — 0.3 0.0692 count share 51.9% vs target 25.0% (-26.9 pp)
+ volume_share 0.3979 — 0.1 0.0398 volume share 30.2% vs target 20.0% (-10.2 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.62 — 0.15 0.093 utilization 38.0% (daily 38.0%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_164 800 ₽ sberbank
+ → payflow · approved · 52 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 800 < limit_amount_min 1000
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 800 < limit_amount_min 1000
+
+
+ payflow
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.5724
+ score 0.5724; decisive: traffic_share (+0.204), amount_band (+0.1)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6802 — 0.3 0.2041 count share 17.0% vs target 35.0% (+18.0 pp)
+ volume_share 0.4963 — 0.1 0.0496 volume share 30.4% vs target 30.0% (-0.4 pp)
+ cascade_priority 0.5 — 0.1 0.05 priority 2 (2 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 500..50000
+ conversion 0.6241 — 0.1 0.0624 conversion_24h 0.91, history 19 ops → calibrated 0.624
+ bank_affinity 0.6241 — 0.05 0.0312 sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%
+ load 0.0005 — 0.15 0.0001 utilization 100.0% (daily 100.0%, in_progress 25.0%/24.0%)
+ turnover_min 0.5 — 0.05 0.025 daily_turnover_min 2000000 reached (3118600)
+ rate_headroom 1.0 — 0.05 0.05 0/7 requests in last 60s
+
+
+
+
+
+ ✓
+ op_165 3 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2998600 + 3000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3785
+ score 0.3785; decisive: load (+0.092), conversion (+0.07)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2315 — 0.3 0.0694 count share 51.9% vs target 25.0% (-26.9 pp)
+ volume_share 0.3952 — 0.1 0.0395 volume share 30.5% vs target 20.0% (-10.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.615 — 0.15 0.0923 utilization 38.5% (daily 38.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_166 120 000 ₽ sberbank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 120000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 120000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4624
+ score 0.4624; decisive: amount_band (+0.1), load (+0.092)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2227 — 0.3 0.0668 count share 52.7% vs target 25.0% (-27.7 pp)
+ volume_share 0.395 — 0.1 0.0395 volume share 30.5% vs target 20.0% (-10.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.449 — 0.05 0.0225 sberbank via quickpay: 5 in history, approval 44.9%
+ load 0.6146 — 0.15 0.0922 utilization 38.5% (daily 38.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_167 25 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 25000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6321 1.0 0.3 0.3 count share 26.8% vs target 40.0% (+13.2 pp)
+ volume_share 0.6132 1.0 0.1 0.1 volume share 38.7% vs target 50.0% (+11.3 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.2722 0.0 0.15 0.0 utilization 72.8% (daily 72.8%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_168 52 000 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 52000 > limit_amount_max 50000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.775
+ score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.225
+ score 0.225 < 0.775 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6193 1.0 0.3 0.3 count share 28.1% vs target 40.0% (+11.9 pp)
+ volume_share 0.6118 1.0 0.1 0.1 volume share 38.8% vs target 50.0% (+11.2 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 50001..100000
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2722 0.0 0.15 0.0 utilization 72.8% (daily 72.8%, in_progress 50.0%/40.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_169 10 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.675
+ score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.325
+ score 0.325 < 0.675 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.6069 1.0 0.3 0.3 count share 29.3% vs target 40.0% (+10.7 pp)
+ volume_share 0.6087 1.0 0.1 0.1 volume share 39.1% vs target 50.0% (+10.9 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.2672 0.0 0.15 0.0 utilization 73.3% (daily 73.3%, in_progress 50.0%/43.2%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_170 1 500 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5949 1.0 0.3 0.3 count share 30.5% vs target 40.0% (+9.5 pp)
+ volume_share 0.6081 1.0 0.1 0.1 volume share 39.2% vs target 50.0% (+10.8 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2568 0.0 0.15 0.0 utilization 74.3% (daily 74.3%, in_progress 50.0%/39.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_171 3 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5833 1.0 0.3 0.3 count share 31.7% vs target 40.0% (+8.3 pp)
+ volume_share 0.6081 1.0 0.1 0.1 volume share 39.2% vs target 50.0% (+10.8 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.2548 0.0 0.15 0.0 utilization 74.5% (daily 74.5%, in_progress 50.0%/38.2%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_172 8 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5721 1.0 0.3 0.3 count share 32.8% vs target 40.0% (+7.2 pp)
+ volume_share 0.6079 1.0 0.1 0.1 volume share 39.2% vs target 50.0% (+10.8 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.2545 0.0 0.15 0.0 utilization 74.6% (daily 74.6%, in_progress 50.0%/38.3%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_173 12 000 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3889
+ score 0.3889; decisive: load (+0.09), traffic_share (+0.08)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2661 — 0.3 0.0798 count share 48.4% vs target 25.0% (-23.4 pp)
+ volume_share 0.3899 — 0.1 0.039 volume share 31.0% vs target 20.0% (-11.0 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.5996 — 0.15 0.0899 utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_174 8 000 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.775
+ score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.225
+ score 0.225 < 0.775 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5667 1.0 0.3 0.3 count share 33.3% vs target 40.0% (+6.7 pp)
+ volume_share 0.6079 1.0 0.1 0.1 volume share 39.2% vs target 50.0% (+10.8 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2523 0.0 0.15 0.0 utilization 74.8% (daily 74.8%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_175 10 000 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3885
+ score 0.3885; decisive: load (+0.09), traffic_share (+0.08)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2656 — 0.3 0.0797 count share 48.4% vs target 25.0% (-23.4 pp)
+ volume_share 0.3894 — 0.1 0.0389 volume share 31.1% vs target 20.0% (-11.1 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.5981 — 0.15 0.0897 utilization 40.2% (daily 40.2%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_176 900 ₽ sberbank
+ → spacepayments · approved · 15 с
+ внешних провайдеров не осталось — self-provider · fallback
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ spacepayments
+ selected
+ fallback_self_providerвнешних провайдеров не осталось — self-provider
+ —
+ no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum
+
+
+
+
+
+
+ ✓
+ op_177 42 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 42000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3881
+ score 0.3881; decisive: load (+0.09), traffic_share (+0.08)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2652 — 0.3 0.0795 count share 48.5% vs target 25.0% (-23.5 pp)
+ volume_share 0.3887 — 0.1 0.0389 volume share 31.1% vs target 20.0% (-11.1 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.5969 — 0.15 0.0895 utilization 40.3% (daily 40.3%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_178 120 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 120000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 120000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4785
+ score 0.4785; decisive: amount_band (+0.1), load (+0.089)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2575 — 0.3 0.0772 count share 49.3% vs target 25.0% (-24.3 pp)
+ volume_share 0.386 — 0.1 0.0386 volume share 31.4% vs target 20.0% (-11.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.5916 — 0.15 0.0887 utilization 40.8% (daily 40.8%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_179 1 500 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3762
+ score 0.3762; decisive: load (+0.086), traffic_share (+0.075)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.25 — 0.3 0.075 count share 50.0% vs target 25.0% (-25.0 pp)
+ volume_share 0.3783 — 0.1 0.0378 volume share 32.2% vs target 20.0% (-12.2 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.5766 — 0.15 0.0865 utilization 42.3% (daily 42.3%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_180 180 000 ₽ tinkoff
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 180000 > limit_amount_max 100000
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 180000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.4726
+ score 0.4726; decisive: amount_band (+0.1), load (+0.086)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2428 — 0.3 0.0728 count share 50.7% vs target 25.0% (-25.7 pp)
+ volume_share 0.3782 — 0.1 0.0378 volume share 32.2% vs target 20.0% (-12.2 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 1.0 — 0.1 0.1 preferred for amounts 100001..∞
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.6809 — 0.05 0.034 tinkoff via quickpay: 6 in history, approval 68.1%
+ load 0.5764 — 0.15 0.0865 utilization 42.4% (daily 42.4%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_181 1 500 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.775
+ score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.225
+ score 0.225 < 0.775 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5857 1.0 0.3 0.3 count share 31.4% vs target 40.0% (+8.6 pp)
+ volume_share 0.6202 1.0 0.1 0.1 volume share 38.0% vs target 50.0% (+12.0 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2507 0.0 0.15 0.0 utilization 74.9% (daily 74.9%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_182 1 500 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3699
+ score 0.3699; decisive: load (+0.083), traffic_share (+0.073)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.243 — 0.3 0.0729 count share 50.7% vs target 25.0% (-25.7 pp)
+ volume_share 0.367 — 0.1 0.0367 volume share 33.3% vs target 20.0% (-13.3 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.5539 — 0.15 0.0831 utilization 44.6% (daily 44.6%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_183 40 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3674
+ score 0.3674; decisive: load (+0.083), traffic_share (+0.071)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2361 — 0.3 0.0708 count share 51.4% vs target 25.0% (-26.4 pp)
+ volume_share 0.3669 — 0.1 0.0367 volume share 33.3% vs target 20.0% (-13.3 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.5538 — 0.15 0.0831 utilization 44.6% (daily 44.6%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_184 1 500 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.775
+ score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.225
+ score 0.225 < 0.775 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5849 1.0 0.3 0.3 count share 31.5% vs target 40.0% (+8.5 pp)
+ volume_share 0.6215 1.0 0.1 0.1 volume share 37.8% vs target 50.0% (+12.2 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2504 0.0 0.15 0.0 utilization 75.0% (daily 75.0%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_185 3 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5757 1.0 0.3 0.3 count share 32.4% vs target 40.0% (+7.6 pp)
+ volume_share 0.6215 1.0 0.1 0.1 volume share 37.9% vs target 50.0% (+12.1 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.2504 0.0 0.15 0.0 utilization 75.0% (daily 75.0%, in_progress 50.0%/38.2%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_186 95 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 95000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3719
+ score 0.3719; decisive: load (+0.082), traffic_share (+0.073)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2433 — 0.3 0.073 count share 50.7% vs target 25.0% (-25.7 pp)
+ volume_share 0.3646 — 0.1 0.0365 volume share 33.5% vs target 20.0% (-13.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.5488 — 0.15 0.0823 utilization 45.1% (daily 45.1%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_187 8 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5711 1.0 0.3 0.3 count share 32.9% vs target 40.0% (+7.1 pp)
+ volume_share 0.6246 1.0 0.1 0.1 volume share 37.5% vs target 50.0% (+12.5 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.2495 0.0 0.15 0.0 utilization 75.0% (daily 75.0%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_188 12 000 ₽ tinkoff
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5623 1.0 0.3 0.3 count share 33.8% vs target 40.0% (+6.2 pp)
+ volume_share 0.6241 1.0 0.1 0.1 volume share 37.6% vs target 50.0% (+12.4 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8173 1.0 0.05 0.05 tinkoff via vipay: 6 in history, approval 81.7%
+ load 0.2495 0.0 0.15 0.0 utilization 75.0% (daily 75.0%, in_progress 50.0%/38.8%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 0.0 0.05 0.0 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_189 15 000 ₽ alfa
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ alfa not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 15000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3717
+ score 0.3717; decisive: load (+0.081), traffic_share (+0.075)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.25 — 0.3 0.075 count share 50.0% vs target 25.0% (-25.0 pp)
+ volume_share 0.3595 — 0.1 0.0359 volume share 34.1% vs target 20.0% (-14.1 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 alfa via quickpay: 7 in history, approval 70.8%
+ load 0.5369 — 0.15 0.0805 utilization 46.3% (daily 46.3%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_190 900 ₽ alfa
+ → spacepayments · approved · 15 с
+ внешних провайдеров не осталось — self-provider · fallback
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ spacepayments
+ selected
+ fallback_self_providerвнешних провайдеров не осталось — self-provider
+ —
+ no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum
+
+
+
+
+
+
+ ✓
+ op_191 8 000 ₽ sberbank
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.75
+ score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.25
+ score 0.25 < 0.75 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5625 1.0 0.3 0.3 count share 33.8% vs target 40.0% (+6.2 pp)
+ volume_share 0.6239 1.0 0.1 0.1 volume share 37.6% vs target 50.0% (+12.4 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.8454 1.0 0.05 0.05 sberbank via vipay: 8 in history, approval 84.5%
+ load 0.2455 0.0 0.15 0.0 utilization 75.4% (daily 75.4%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 0.5 0.05 0.025 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_192 55 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 55000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3702
+ score 0.3702; decisive: load (+0.08), traffic_share (+0.077)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2562 — 0.3 0.0769 count share 49.4% vs target 25.0% (-24.4 pp)
+ volume_share 0.3588 — 0.1 0.0359 volume share 34.1% vs target 20.0% (-14.1 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.535 — 0.15 0.0802 utilization 46.5% (daily 46.5%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_193 2 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3666
+ score 0.3666; decisive: load (+0.079), traffic_share (+0.075)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.25 — 0.3 0.075 count share 50.0% vs target 25.0% (-25.0 pp)
+ volume_share 0.3556 — 0.1 0.0356 volume share 34.4% vs target 20.0% (-14.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.5281 — 0.15 0.0792 utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_194 3 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3618
+ score 0.3618; decisive: load (+0.079), traffic_share (+0.073)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.244 — 0.3 0.0732 count share 50.6% vs target 25.0% (-25.6 pp)
+ volume_share 0.3554 — 0.1 0.0355 volume share 34.5% vs target 20.0% (-14.5 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.5279 — 0.15 0.0792 utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 0.9333 — 0.05 0.0467 1/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_195 40 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5667 1.0 0.3 0.3 count share 33.3% vs target 40.0% (+6.7 pp)
+ volume_share 0.6255 1.0 0.1 0.1 volume share 37.4% vs target 50.0% (+12.6 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.2439 0.0 0.15 0.0 utilization 75.6% (daily 75.6%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_196 2 000 ₽ gazprombank
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ gazprombank not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3653
+ score 0.3653; decisive: load (+0.079), traffic_share (+0.073)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2441 — 0.3 0.0732 count share 50.6% vs target 25.0% (-25.6 pp)
+ volume_share 0.3565 — 0.1 0.0356 volume share 34.4% vs target 20.0% (-14.4 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.649 — 0.05 0.0325 gazprombank via quickpay: 5 in history, approval 64.9%
+ load 0.5275 — 0.15 0.0791 utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_197 8 000 ₽ vtb
+ → vipay · approved · 38 с
+ лучший суммарный скор по активным целям
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
+
+
+ vipay
+ selected
+ best_scoreлучший суммарный скор по активным целям
+ 0.725
+ score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
+
+
+ quickpay
+ skipped
+ lower_scoreдопустим, но уступил по скору
+ 0.275
+ score 0.275 < 0.725 (vipay)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.5628 1.0 0.3 0.3 count share 33.7% vs target 40.0% (+6.3 pp)
+ volume_share 0.6233 1.0 0.1 0.1 volume share 37.7% vs target 50.0% (+12.3 pp)
+ cascade_priority 1.0 — 0.1 0.1 priority 1 (1 of 3)
+ amount_band 0.0 0.5 0.1 0.05 amounts 500..50000 prefer payflow
+ conversion 0.798 1.0 0.1 0.1 conversion_24h 0.87, history 41 ops → calibrated 0.798
+ bank_affinity 0.7492 0.0 0.05 0.0 vtb via vipay: 7 in history, approval 74.9%
+ load 0.2359 0.0 0.15 0.0 utilization 76.4% (daily 76.4%, in_progress 40.0%/38.0%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_198 52 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ amount_exceeds_limitсумма больше максимального чека
+ —
+ 52000 > limit_amount_max 50000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.3682
+ score 0.3682; decisive: load (+0.079), traffic_share (+0.073)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2443 — 0.3 0.0733 count share 50.6% vs target 25.0% (-25.6 pp)
+ volume_share 0.3566 — 0.1 0.0357 volume share 34.3% vs target 20.0% (-14.3 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 50001..100000 prefer vipay
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.5273 — 0.15 0.0791 utilization 47.3% (daily 47.3%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+ ✓
+ op_199 900 ₽ tinkoff
+ → spacepayments · approved · 15 с
+ внешних провайдеров не осталось — self-provider · fallback
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000
+
+
+ quickpay
+ skipped
+ amount_below_minimumсумма меньше минимального чека
+ —
+ 900 < limit_amount_min 1000
+
+
+ spacepayments
+ selected
+ fallback_self_providerвнешних провайдеров не осталось — self-provider
+ —
+ no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum
+
+
+
+
+
+
+ ✓
+ op_200 30 000 ₽ raiffeisen
+ → quickpay · approved · 29 с
+ единственный допустимый провайдер
+
+
+
+ Провайдер Решение Причина Скор Детали
+
+ vipay
+ skipped
+ bank_not_in_listбанк получателя не в списке поддерживаемых
+ —
+ raiffeisen not in banks [sberbank, tinkoff, vtb]
+
+
+ payflow
+ skipped
+ daily_limit_exceededисчерпан дневной лимит оборота
+ —
+ daily_approved_amount 2999400 + 30000 > daily_amount_limit 3000000
+
+
+ quickpay
+ selected
+ only_eligible_providerединственный допустимый провайдер
+ 0.367
+ score 0.367; decisive: load (+0.078), traffic_share (+0.073)
+
+
+
Разложение скора выбранного провайдера:
+
+ Цель Оценка По пулу Вес Вклад Пояснение
+ traffic_share 0.2444 — 0.3 0.0733 count share 50.6% vs target 25.0% (-25.6 pp)
+ volume_share 0.3536 — 0.1 0.0354 volume share 34.6% vs target 20.0% (-14.6 pp)
+ cascade_priority 0.0 — 0.1 0.0 priority 3 (3 of 3)
+ amount_band 0.0 — 0.1 0.0 amounts 500..50000 prefer payflow
+ conversion 0.698 — 0.1 0.0698 conversion_24h 0.79, history 40 ops → calibrated 0.698
+ bank_affinity 0.7075 — 0.05 0.0354 raiffeisen via quickpay: 7 in history, approval 70.8%
+ load 0.5208 — 0.15 0.0781 utilization 47.9% (daily 47.9%, in_progress 6.7%/2.5%)
+ turnover_min 0.5 — 0.05 0.025 no daily_turnover_min
+ rate_headroom 1.0 — 0.05 0.05 0/15 requests in last 60s
+
+
+
+
+
+PayoutRouter 0.1.0 · weighted (pool): traffic_share 0.3, volume_share 0.1, cascade_priority 0.1, amount_band 0.1, conversion 0.1, bank_affinity 0.05, load 0.15, turnover_min 0.05, rate_headroom 0.05 · hard-правила: 13
+
+
diff --git a/routing_report_test.json b/routing_report_test.json
new file mode 100644
index 0000000..3d0db4e
--- /dev/null
+++ b/routing_report_test.json
@@ -0,0 +1,918 @@
+{
+ "period": "2026-07-30",
+ "snapshot_at": "2026-07-30T09:00:00+03:00",
+ "gateway": "RUB_SBP_WITHDRAW",
+ "merchant": "alpha_market",
+ "policy": {
+ "name": "balanced",
+ "description": "Держим целевые доли трафика и объёма, но учитываем конверсию (в том числе по банку из истории), текущую загрузку, позицию в каскаде и диапазон суммы. Fallback — self-provider spacepayments.",
+ "goals": {
+ "traffic_share": 0.3,
+ "volume_share": 0.1,
+ "cascade_priority": 0.1,
+ "amount_band": 0.1,
+ "conversion": 0.1,
+ "bank_affinity": 0.05,
+ "load": 0.15,
+ "turnover_min": 0.05,
+ "rate_headroom": 0.05
+ },
+ "selection": "weighted (pool): traffic_share 0.3, volume_share 0.1, cascade_priority 0.1, amount_band 0.1, conversion 0.1, bank_affinity 0.05, load 0.15, turnover_min 0.05, rate_headroom 0.05",
+ "plugins": [],
+ "custom_goals": [],
+ "hard_constraints": [
+ "provider_active",
+ "currency",
+ "traffic_enabled",
+ "amount_range",
+ "daily_limit",
+ "in_progress_count",
+ "in_progress_amount",
+ "requisites",
+ "margin",
+ "bank_filter",
+ "rate_limit",
+ "daily_turnover_max",
+ "circuit_breaker"
+ ],
+ "tie_breakers": [
+ "priority",
+ "conversion",
+ "name"
+ ],
+ "fallback_provider": "spacepayments"
+ },
+ "simulation": {
+ "mode": "optimistic",
+ "seed": 42
+ },
+ "total_operations": 90,
+ "routed_operations": 90,
+ "fallback_operations": 4,
+ "unrouted_operations": 0,
+ "distribution": {
+ "vipay": {
+ "count": 30,
+ "share_pct": 33.3,
+ "target_pct": 40,
+ "deviation_pp": -6.7,
+ "proportional_target_pct": 21.0,
+ "proportional_deviation_pp": 12.4,
+ "volume": 628500,
+ "volume_share_pct": 18.0,
+ "target_volume_pct": 50,
+ "volume_deviation_pp": -32.0
+ },
+ "payflow": {
+ "count": 10,
+ "share_pct": 11.1,
+ "target_pct": 35,
+ "deviation_pp": -23.9,
+ "proportional_target_pct": 8.7,
+ "proportional_deviation_pp": 2.4,
+ "volume": 99400,
+ "volume_share_pct": 2.8,
+ "target_volume_pct": 30,
+ "volume_deviation_pp": -27.2
+ },
+ "quickpay": {
+ "count": 46,
+ "share_pct": 51.1,
+ "target_pct": 25,
+ "deviation_pp": 26.1,
+ "proportional_target_pct": 65.9,
+ "proportional_deviation_pp": -14.8,
+ "volume": 2764000,
+ "volume_share_pct": 79.1,
+ "target_volume_pct": 20,
+ "volume_deviation_pp": 59.1
+ },
+ "spacepayments": {
+ "count": 4,
+ "share_pct": 4.4,
+ "target_pct": 0,
+ "deviation_pp": 4.4,
+ "proportional_target_pct": 0.0,
+ "proportional_deviation_pp": 4.4,
+ "volume": 3600,
+ "volume_share_pct": 0.1,
+ "target_volume_pct": 0,
+ "volume_deviation_pp": 0.1
+ }
+ },
+ "results": {
+ "approved": 90,
+ "rejected": 0,
+ "expired": 0,
+ "by_provider": {
+ "vipay": {
+ "dispatched": 30,
+ "approved": 30,
+ "rejected": 0,
+ "expired": 0,
+ "conversion_simulated": 1.0,
+ "conversion_24h": 0.87,
+ "circuit_trips": 0
+ },
+ "payflow": {
+ "dispatched": 10,
+ "approved": 10,
+ "rejected": 0,
+ "expired": 0,
+ "conversion_simulated": 1.0,
+ "conversion_24h": 0.91,
+ "circuit_trips": 0
+ },
+ "quickpay": {
+ "dispatched": 46,
+ "approved": 46,
+ "rejected": 0,
+ "expired": 0,
+ "conversion_simulated": 1.0,
+ "conversion_24h": 0.79,
+ "circuit_trips": 0
+ },
+ "spacepayments": {
+ "dispatched": 4,
+ "approved": 4,
+ "rejected": 0,
+ "expired": 0,
+ "conversion_simulated": 1.0,
+ "conversion_24h": 0.95,
+ "circuit_trips": 0
+ }
+ }
+ },
+ "skip_reasons": {
+ "bank_not_in_list": 57,
+ "daily_limit_exceeded": 40,
+ "amount_exceeds_limit": 33,
+ "amount_below_minimum": 16
+ },
+ "skip_reasons_by_provider": {
+ "vipay": {
+ "bank_not_in_list": 41,
+ "amount_exceeds_limit": 10,
+ "amount_below_minimum": 8
+ },
+ "payflow": {
+ "daily_limit_exceeded": 40,
+ "amount_exceeds_limit": 23,
+ "bank_not_in_list": 16
+ },
+ "quickpay": {
+ "amount_below_minimum": 8
+ }
+ },
+ "projected_daily_utilization": {
+ "vipay": {
+ "used": 3828500,
+ "limit": 5000000,
+ "utilization_pct": 76.6,
+ "remaining": 1171500,
+ "in_progress_count": 4,
+ "in_progress_count_limit": 10,
+ "in_progress_amount": 380000,
+ "in_progress_amount_limit": 1000000,
+ "available_requisites": 12
+ },
+ "payflow": {
+ "used": 2999400,
+ "limit": 3000000,
+ "utilization_pct": 100.0,
+ "remaining": 600,
+ "in_progress_count": 2,
+ "in_progress_count_limit": 8,
+ "in_progress_amount": 120000,
+ "in_progress_amount_limit": 500000,
+ "available_requisites": 5
+ },
+ "quickpay": {
+ "used": 3864000,
+ "limit": 8000000,
+ "utilization_pct": 48.3,
+ "remaining": 4136000,
+ "in_progress_count": 1,
+ "in_progress_count_limit": 15,
+ "in_progress_amount": 50000,
+ "in_progress_amount_limit": 2000000,
+ "available_requisites": 20
+ }
+ },
+ "provider_capacity": {
+ "vipay": {
+ "used": 3828500,
+ "limit": 5000000,
+ "utilization_pct": 76.6,
+ "remaining": 1171500,
+ "in_progress_count": 4,
+ "in_progress_count_limit": 10,
+ "in_progress_amount": 380000,
+ "in_progress_amount_limit": 1000000,
+ "available_requisites": 12
+ },
+ "payflow": {
+ "used": 2999400,
+ "limit": 3000000,
+ "utilization_pct": 100.0,
+ "remaining": 600,
+ "in_progress_count": 2,
+ "in_progress_count_limit": 8,
+ "in_progress_amount": 120000,
+ "in_progress_amount_limit": 500000,
+ "available_requisites": 5
+ },
+ "quickpay": {
+ "used": 3864000,
+ "limit": 8000000,
+ "utilization_pct": 48.3,
+ "remaining": 4136000,
+ "in_progress_count": 1,
+ "in_progress_count_limit": 15,
+ "in_progress_amount": 50000,
+ "in_progress_amount_limit": 2000000,
+ "available_requisites": 20
+ },
+ "spacepayments": {
+ "used": 3600,
+ "limit": null,
+ "utilization_pct": null,
+ "remaining": null,
+ "in_progress_count": 0,
+ "in_progress_count_limit": null,
+ "in_progress_amount": 0,
+ "in_progress_amount_limit": null,
+ "available_requisites": 8
+ }
+ },
+ "attempts": {
+ "total": 274,
+ "avg_per_operation": 3.04,
+ "retries_after_failure": 0,
+ "fallback_used": 4,
+ "unrouted": 0
+ },
+ "target_attainability": {
+ "vipay": {
+ "considered": 90,
+ "eligible": 31,
+ "eligible_pct": 34.4,
+ "max_attainable_share_pct": 34.4,
+ "blocked_by": {
+ "bank_not_in_list": 41,
+ "amount_exceeds_limit": 10,
+ "amount_below_minimum": 8
+ },
+ "blocked_banks": {
+ "gazprombank": 15,
+ "alfa": 13,
+ "raiffeisen": 13
+ },
+ "blocked_amounts": {
+ "min": 800,
+ "max": 180000,
+ "count": 18
+ }
+ },
+ "payflow": {
+ "considered": 90,
+ "eligible": 11,
+ "eligible_pct": 12.2,
+ "max_attainable_share_pct": 12.2,
+ "blocked_by": {
+ "daily_limit_exceeded": 40,
+ "amount_exceeds_limit": 23,
+ "bank_not_in_list": 16
+ },
+ "blocked_banks": {
+ "vtb": 5,
+ "tinkoff": 4,
+ "raiffeisen": 4,
+ "gazprombank": 3
+ },
+ "blocked_amounts": {
+ "min": 52000,
+ "max": 180000,
+ "count": 23
+ }
+ },
+ "quickpay": {
+ "considered": 90,
+ "eligible": 82,
+ "eligible_pct": 91.1,
+ "max_attainable_share_pct": 91.1,
+ "blocked_by": {
+ "amount_below_minimum": 8
+ },
+ "blocked_banks": {},
+ "blocked_amounts": {
+ "min": 800,
+ "max": 900,
+ "count": 8
+ }
+ }
+ },
+ "goal_activity": {
+ "contested_operations": 37,
+ "goals": {
+ "traffic_share": {
+ "weight": 0.3,
+ "discriminating_operations": 37,
+ "share_pct": 100.0
+ },
+ "volume_share": {
+ "weight": 0.1,
+ "discriminating_operations": 37,
+ "share_pct": 100.0
+ },
+ "cascade_priority": {
+ "weight": 0.1,
+ "discriminating_operations": 37,
+ "share_pct": 100.0
+ },
+ "amount_band": {
+ "weight": 0.1,
+ "discriminating_operations": 11,
+ "share_pct": 29.7
+ },
+ "conversion": {
+ "weight": 0.1,
+ "discriminating_operations": 37,
+ "share_pct": 100.0
+ },
+ "bank_affinity": {
+ "weight": 0.05,
+ "discriminating_operations": 37,
+ "share_pct": 100.0
+ },
+ "load": {
+ "weight": 0.15,
+ "discriminating_operations": 37,
+ "share_pct": 100.0
+ },
+ "turnover_min": {
+ "weight": 0.05,
+ "discriminating_operations": 0,
+ "share_pct": 0.0
+ },
+ "rate_headroom": {
+ "weight": 0.05,
+ "discriminating_operations": 30,
+ "share_pct": 81.1
+ }
+ }
+ },
+ "optimality": {
+ "headline": "Онлайн-роутинг взял 100.1% от точного оптимума этой очереди (63.55 из 63.48 ожидаемых одобрений; оптимум посчитан min-cost flow по всей очереди сразу). Из отставания в -0.08 одобрения 17.65 — цена обязательства держать целевые доли, и -17.73 — цена решений по одной заявке без знания следующих.",
+ "score_vs_optimum_pct": 100.12,
+ "approvals_lost_to_share_targets": 17.65,
+ "approvals_lost_to_online_decisions": -17.73,
+ "operations": 90,
+ "expected_approvals_ours": 63.55,
+ "optimum_same_self_provider_budget": 63.48,
+ "optimum_with_target_shares": 45.82,
+ "worst_feasible": 53.93,
+ "baseline_all_to_self_provider": 85.5,
+ "gap_to_optimum_pct": -0.12,
+ "gap_to_quota_pct": -38.69,
+ "share_compliance_cost_approvals": 17.65,
+ "capture_of_attainable": 1.0,
+ "self_provider_budget": 4,
+ "quotas": {
+ "vipay": 36,
+ "payflow": 32,
+ "quickpay": 22
+ },
+ "eligible_pairs": 15,
+ "method": "transportation problem bank × provider solved exactly as min-cost flow; static hard rules only, no capacity, requisite or rate limits; the reference knows the whole queue in advance and may use the self-provider at most as many times as our router did"
+ },
+ "examples": {
+ "note": "разобранные примеры: кого выбрали, почему отсеяли остальных и что происходит при отказе. У каждого примера source — где в коде принимается это решение. Полный трейс по всем заявкам — в routing_decisions.json",
+ "choice_among_several": {
+ "what_it_shows": "среди нескольких допустимых выбран лучший по сумме взвешенных целей",
+ "operation": {
+ "operation_id": "op_111",
+ "amount": 8000,
+ "bank": "alfa"
+ },
+ "selected": {
+ "provider": "payflow",
+ "reason": "best_score",
+ "why": "score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)",
+ "score": 0.55
+ },
+ "skipped": [
+ {
+ "provider": "vipay",
+ "reason": "bank_not_in_list",
+ "why": "alfa not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "quickpay",
+ "reason": "lower_score",
+ "why": "score 0.45 < 0.55 (payflow)"
+ }
+ ],
+ "outcome": {
+ "simulated_result": "approved",
+ "retries": 0,
+ "fallback_used": false
+ },
+ "source": "lib/payout_router/scoring/composite_scorer.rb → CompositeScorer#rank (нормировка по пулу кандидатов и взвешенная сумма целей)"
+ },
+ "single_eligible": {
+ "what_it_shows": "hard-правила оставили одного кандидата — скоринг уже ничего не решает",
+ "operation": {
+ "operation_id": "op_113",
+ "amount": 10000,
+ "bank": "gazprombank"
+ },
+ "selected": {
+ "provider": "quickpay",
+ "reason": "only_eligible_provider",
+ "why": "score 0.5869; decisive: traffic_share (+0.225), load (+0.129)",
+ "score": 0.5869
+ },
+ "skipped": [
+ {
+ "provider": "vipay",
+ "reason": "bank_not_in_list",
+ "why": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "reason": "bank_not_in_list",
+ "why": "gazprombank not in banks [sberbank, alfa]"
+ }
+ ],
+ "outcome": {
+ "simulated_result": "approved",
+ "retries": 0,
+ "fallback_used": false
+ },
+ "source": "lib/payout_router/constraints/pipeline.rb → Pipeline#evaluate (правила из policy.hard_constraints, коды причин — routing/reasons.rb)"
+ },
+ "retry_after_failure": {
+ "what_it_shows": "провайдер отказал: заявка переотправлена следующему по рангу",
+ "operation": {
+ "operation_id": "op_112",
+ "amount": 40000,
+ "bank": "vtb"
+ },
+ "selected": {
+ "provider": "quickpay",
+ "reason": "fallback_after_failure",
+ "why": "retry #1 after failure; score 0.4; decisive: load (+0.15), volume_share (+0.1)",
+ "score": 0.4
+ },
+ "skipped": [
+ {
+ "provider": "payflow",
+ "reason": "bank_not_in_list",
+ "why": "vtb not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "vipay",
+ "reason": "provider_rejected",
+ "why": "dispatched, simulated result: rejected after 38s (score 0.6; decisive: traffic_share (+0.3), cascade_priority (+0.1))",
+ "dispatched": true,
+ "simulated_result": "rejected"
+ }
+ ],
+ "outcome": {
+ "simulated_result": "approved",
+ "retries": 1,
+ "fallback_used": false
+ },
+ "source": "lib/payout_router/routing/router.rb → Router#try_ranked (отправка, разбор исхода и переход к следующему кандидату по рангу)"
+ },
+ "fallback_to_self_provider": {
+ "what_it_shows": "внешние кандидаты кончились — заявка ушла на self-provider",
+ "operation": {
+ "operation_id": "op_116",
+ "amount": 20000,
+ "bank": "gazprombank"
+ },
+ "selected": {
+ "provider": "spacepayments",
+ "reason": "fallback_self_provider",
+ "why": "all 1 eligible providers failed: vipay: bank_not_in_list; payflow: bank_not_in_list; quickpay: provider_rejected"
+ },
+ "skipped": [
+ {
+ "provider": "vipay",
+ "reason": "bank_not_in_list",
+ "why": "gazprombank not in banks [sberbank, tinkoff, vtb]"
+ },
+ {
+ "provider": "payflow",
+ "reason": "bank_not_in_list",
+ "why": "gazprombank not in banks [sberbank, alfa]"
+ },
+ {
+ "provider": "quickpay",
+ "reason": "provider_rejected",
+ "why": "dispatched, simulated result: rejected after 29s (score 0.4656; decisive: load (+0.128), traffic_share (+0.105))",
+ "dispatched": true,
+ "simulated_result": "rejected"
+ }
+ ],
+ "outcome": {
+ "simulated_result": "approved",
+ "retries": 1,
+ "fallback_used": true
+ },
+ "source": "lib/payout_router/routing/router.rb → Router#fallback (пул внешних исчерпан — self-provider по policy.fallback_rules)"
+ }
+ },
+ "cascade_demonstration": {
+ "note": "основной прогон — optimistic, отказов в routing_decisions нет по построению. Здесь та же очередь и политика, исходы разыграны по conversion_24h (seed 42): видно переход к следующему провайдеру и fallback. Полные решения этого прогона в формате routing_decisions — в routing_cascade_demo*.json рядом с отчётом",
+ "simulation": {
+ "mode": "conversion",
+ "seed": 42
+ },
+ "operations": 90,
+ "dispatches": 101,
+ "failed_dispatches": 11,
+ "final_results": {
+ "approved": 90
+ },
+ "operations_with_retry": 11,
+ "retries_after_failure": 11,
+ "fallback_used": 12,
+ "examples": [
+ {
+ "operation_id": "op_112",
+ "path": [
+ "vipay: provider_rejected (rejected)",
+ "quickpay: fallback_after_failure (approved)"
+ ],
+ "selected_provider": "quickpay",
+ "simulated_result": "approved",
+ "retries": 1,
+ "fallback_used": false
+ },
+ {
+ "operation_id": "op_116",
+ "path": [
+ "quickpay: provider_rejected (rejected)",
+ "spacepayments: fallback_self_provider (approved)"
+ ],
+ "selected_provider": "spacepayments",
+ "simulated_result": "approved",
+ "retries": 1,
+ "fallback_used": true
+ },
+ {
+ "operation_id": "op_118",
+ "path": [
+ "quickpay: provider_rejected (rejected)",
+ "spacepayments: fallback_self_provider (approved)"
+ ],
+ "selected_provider": "spacepayments",
+ "simulated_result": "approved",
+ "retries": 1,
+ "fallback_used": true
+ }
+ ]
+ },
+ "history_analysis": {
+ "operations": 100,
+ "volume": 3391500,
+ "providers": {
+ "payflow": {
+ "operations": 19,
+ "count_share_pct": 19.0,
+ "volume": 287500,
+ "volume_share_pct": 8.5,
+ "avg_amount": 15132,
+ "approved": 9,
+ "rejected": 3,
+ "expired": 7,
+ "conversion": 0.474,
+ "rejected_pct": 15.8,
+ "expired_pct": 36.8,
+ "avg_latency_sec": 77,
+ "avg_expired_latency_sec": 631,
+ "banks": {
+ "alfa": 7,
+ "raiffeisen": 4,
+ "vtb": 3,
+ "sberbank": 3,
+ "tinkoff": 2
+ },
+ "bank_conversion": {
+ "alfa": {
+ "operations": 7,
+ "approved": 2,
+ "conversion": 0.286
+ },
+ "raiffeisen": {
+ "operations": 4,
+ "approved": 2,
+ "conversion": 0.5
+ },
+ "vtb": {
+ "operations": 3,
+ "approved": 2,
+ "conversion": 0.667
+ },
+ "sberbank": {
+ "operations": 3,
+ "approved": 3,
+ "conversion": 1.0
+ },
+ "tinkoff": {
+ "operations": 2,
+ "approved": 0,
+ "conversion": 0.0
+ }
+ }
+ },
+ "quickpay": {
+ "operations": 40,
+ "count_share_pct": 40.0,
+ "volume": 1885000,
+ "volume_share_pct": 55.6,
+ "avg_amount": 47125,
+ "approved": 27,
+ "rejected": 7,
+ "expired": 6,
+ "conversion": 0.675,
+ "rejected_pct": 17.5,
+ "expired_pct": 15.0,
+ "avg_latency_sec": 55,
+ "avg_expired_latency_sec": 539,
+ "banks": {
+ "vtb": 10,
+ "raiffeisen": 7,
+ "alfa": 7,
+ "tinkoff": 6,
+ "gazprombank": 5,
+ "sberbank": 5
+ },
+ "bank_conversion": {
+ "vtb": {
+ "operations": 10,
+ "approved": 9,
+ "conversion": 0.9
+ },
+ "raiffeisen": {
+ "operations": 7,
+ "approved": 5,
+ "conversion": 0.714
+ },
+ "alfa": {
+ "operations": 7,
+ "approved": 5,
+ "conversion": 0.714
+ },
+ "tinkoff": {
+ "operations": 6,
+ "approved": 4,
+ "conversion": 0.667
+ },
+ "gazprombank": {
+ "operations": 5,
+ "approved": 3,
+ "conversion": 0.6
+ },
+ "sberbank": {
+ "operations": 5,
+ "approved": 1,
+ "conversion": 0.2
+ }
+ }
+ },
+ "vipay": {
+ "operations": 41,
+ "count_share_pct": 41.0,
+ "volume": 1219000,
+ "volume_share_pct": 35.9,
+ "avg_amount": 29732,
+ "approved": 32,
+ "rejected": 6,
+ "expired": 3,
+ "conversion": 0.78,
+ "rejected_pct": 14.6,
+ "expired_pct": 7.3,
+ "avg_latency_sec": 52,
+ "avg_expired_latency_sec": 567,
+ "banks": {
+ "alfa": 8,
+ "sberbank": 8,
+ "vtb": 7,
+ "raiffeisen": 7,
+ "tinkoff": 6,
+ "gazprombank": 5
+ },
+ "bank_conversion": {
+ "alfa": {
+ "operations": 8,
+ "approved": 5,
+ "conversion": 0.625
+ },
+ "sberbank": {
+ "operations": 8,
+ "approved": 7,
+ "conversion": 0.875
+ },
+ "vtb": {
+ "operations": 7,
+ "approved": 5,
+ "conversion": 0.714
+ },
+ "raiffeisen": {
+ "operations": 7,
+ "approved": 6,
+ "conversion": 0.857
+ },
+ "tinkoff": {
+ "operations": 6,
+ "approved": 5,
+ "conversion": 0.833
+ },
+ "gazprombank": {
+ "operations": 5,
+ "approved": 4,
+ "conversion": 0.8
+ }
+ }
+ }
+ },
+ "banks": {
+ "alfa": {
+ "operations": 22,
+ "share_pct": 22.0
+ },
+ "vtb": {
+ "operations": 20,
+ "share_pct": 20.0
+ },
+ "raiffeisen": {
+ "operations": 18,
+ "share_pct": 18.0
+ },
+ "sberbank": {
+ "operations": 16,
+ "share_pct": 16.0
+ },
+ "tinkoff": {
+ "operations": 14,
+ "share_pct": 14.0
+ },
+ "gazprombank": {
+ "operations": 10,
+ "share_pct": 10.0
+ }
+ },
+ "amount_buckets": {
+ "<=1000": {
+ "operations": 0,
+ "approved": 0,
+ "conversion": null
+ },
+ "1001-50000": {
+ "operations": 74,
+ "approved": 49,
+ "conversion": 0.662
+ },
+ "50001-100000": {
+ "operations": 21,
+ "approved": 17,
+ "conversion": 0.81
+ },
+ ">100000": {
+ "operations": 5,
+ "approved": 2,
+ "conversion": 0.4
+ }
+ },
+ "conversion_drift": {
+ "vipay": {
+ "reported": 0.87,
+ "observed": 0.78,
+ "delta": -0.09,
+ "interval_95": [
+ 0.633,
+ 0.88
+ ],
+ "significant": false
+ },
+ "payflow": {
+ "reported": 0.91,
+ "observed": 0.474,
+ "delta": -0.436,
+ "interval_95": [
+ 0.273,
+ 0.683
+ ],
+ "significant": true
+ },
+ "quickpay": {
+ "reported": 0.79,
+ "observed": 0.675,
+ "delta": -0.115,
+ "interval_95": [
+ 0.52,
+ 0.799
+ ],
+ "significant": false
+ }
+ }
+ },
+ "recommendations": [
+ "payflow: дневной лимит использован на 100.0% (2 999 400 ₽ из 3 000 000 ₽) — снизить traffic_percentage с 35 до 20 или поднять daily_amount_limit до 3 800 000 ₽",
+ "payflow: доля 11.1% при цели 35% — цель недостижима, провайдер допустим лишь в 12.2% заявок (главная причина: daily_limit_exceeded, 40 раз), а при пропорциональном роутинге по допустимым получил бы 8.7%. Устранить причину daily_limit_exceeded; либо снизить traffic_percentage до достижимых 10",
+ "4 из 90 заявок (4.4%) ушли на self-provider spacepayments: внешние провайдеры отсеяны по причинам amount_below_minimum ×8, daily_limit_exceeded ×3, bank_not_in_list ×1 — расширить лимиты/банки внешних провайдеров или подключить ещё одного",
+ "payflow: заявленная conversion_24h 0.91 лежит вне 95% интервала по истории [0.273, 0.683] (19 операций, факт 0.47) — метрика завышена, скоринг по конверсии переоценивает провайдера. Проверить источник conversion_24h или использовать наблюдаемое значение 0.47",
+ "quickpay: доля 51.1% при цели 25% — принимает переток заявок, которые другие провайдеры не прошли (vipay: bank_not_in_list ×41; vipay: amount_exceeds_limit ×10; payflow: daily_limit_exceeded ×40; payflow: amount_exceeds_limit ×23). Либо признать это и поднять traffic_percentage до 50, либо расширить лимиты/банки у остальных",
+ "quickpay: самая низкая конверсия в пуле (0.79) при доле 51.1% (цель 25%) — примерно 2.8 лишних отказов на 90 заявок. Поднять вес conversion с 0.1 до 0.2 или расширить лимиты провайдеров с конверсией 0.91",
+ "payflow: в истории 36.8% заявок истекли по таймауту (средняя задержка 631 с) — включить latency в скоринг (вес 0.1) или снизить traffic_percentage с 35 до 25",
+ "quickpay: в истории 15.0% заявок истекли по таймауту (средняя задержка 539 с) — включить latency в скоринг (вес 0.1) или снизить traffic_percentage с 25 до 15",
+ "цель turnover_min (вес 0.05) не различила кандидатов ни в одной из 37 конкурентных заявок — на этой очереди не работает и лишь размывает остальные веса. Снять вес (goals.turnover_min: 0) или изменить её параметры"
+ ],
+ "recommendation_details": [
+ {
+ "severity": "critical",
+ "rule": "daily_limit_pressure",
+ "provider": "payflow",
+ "parameter": "traffic_percentage",
+ "current": 35,
+ "suggested": 20,
+ "message": "payflow: дневной лимит использован на 100.0% (2 999 400 ₽ из 3 000 000 ₽) — снизить traffic_percentage с 35 до 20 или поднять daily_amount_limit до 3 800 000 ₽"
+ },
+ {
+ "severity": "warning",
+ "rule": "share_shortfall",
+ "provider": "payflow",
+ "parameter": "traffic_percentage",
+ "current": 35,
+ "suggested": 10,
+ "message": "payflow: доля 11.1% при цели 35% — цель недостижима, провайдер допустим лишь в 12.2% заявок (главная причина: daily_limit_exceeded, 40 раз), а при пропорциональном роутинге по допустимым получил бы 8.7%. Устранить причину daily_limit_exceeded; либо снизить traffic_percentage до достижимых 10"
+ },
+ {
+ "severity": "warning",
+ "rule": "fallback_usage",
+ "provider": "spacepayments",
+ "parameter": "fallback_operations",
+ "current": 4,
+ "suggested": 0,
+ "message": "4 из 90 заявок (4.4%) ушли на self-provider spacepayments: внешние провайдеры отсеяны по причинам amount_below_minimum ×8, daily_limit_exceeded ×3, bank_not_in_list ×1 — расширить лимиты/банки внешних провайдеров или подключить ещё одного"
+ },
+ {
+ "severity": "warning",
+ "rule": "conversion_drift",
+ "provider": "payflow",
+ "parameter": "conversion_24h",
+ "current": 0.91,
+ "suggested": 0.47,
+ "message": "payflow: заявленная conversion_24h 0.91 лежит вне 95% интервала по истории [0.273, 0.683] (19 операций, факт 0.47) — метрика завышена, скоринг по конверсии переоценивает провайдера. Проверить источник conversion_24h или использовать наблюдаемое значение 0.47"
+ },
+ {
+ "severity": "info",
+ "rule": "share_overflow",
+ "provider": "quickpay",
+ "parameter": "traffic_percentage",
+ "current": 25,
+ "suggested": 50,
+ "message": "quickpay: доля 51.1% при цели 25% — принимает переток заявок, которые другие провайдеры не прошли (vipay: bank_not_in_list ×41; vipay: amount_exceeds_limit ×10; payflow: daily_limit_exceeded ×40; payflow: amount_exceeds_limit ×23). Либо признать это и поднять traffic_percentage до 50, либо расширить лимиты/банки у остальных"
+ },
+ {
+ "severity": "info",
+ "rule": "low_conversion_overload",
+ "provider": "quickpay",
+ "parameter": "goals.conversion",
+ "current": 0.1,
+ "suggested": 0.2,
+ "message": "quickpay: самая низкая конверсия в пуле (0.79) при доле 51.1% (цель 25%) — примерно 2.8 лишних отказов на 90 заявок. Поднять вес conversion с 0.1 до 0.2 или расширить лимиты провайдеров с конверсией 0.91"
+ },
+ {
+ "severity": "info",
+ "rule": "expired_heavy",
+ "provider": "payflow",
+ "parameter": "goals.latency",
+ "current": 0.0,
+ "suggested": 0.1,
+ "message": "payflow: в истории 36.8% заявок истекли по таймауту (средняя задержка 631 с) — включить latency в скоринг (вес 0.1) или снизить traffic_percentage с 35 до 25"
+ },
+ {
+ "severity": "info",
+ "rule": "expired_heavy",
+ "provider": "quickpay",
+ "parameter": "goals.latency",
+ "current": 0.0,
+ "suggested": 0.1,
+ "message": "quickpay: в истории 15.0% заявок истекли по таймауту (средняя задержка 539 с) — включить latency в скоринг (вес 0.1) или снизить traffic_percentage с 25 до 15"
+ },
+ {
+ "severity": "info",
+ "rule": "dead_goal",
+ "provider": null,
+ "parameter": "goals.turnover_min",
+ "current": 0.05,
+ "suggested": 0,
+ "message": "цель turnover_min (вес 0.05) не различила кандидатов ни в одной из 37 конкурентных заявок — на этой очереди не работает и лишь размывает остальные веса. Снять вес (goals.turnover_min: 0) или изменить её параметры"
+ }
+ ]
+}