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 + + + +
+

Роутинг выплат · 2026-07-30

+
+ политика balanced · симуляция optimistic + · шлюз RUB_SBP_WITHDRAW · мерчант alpha_market · снимок 2026-07-30T09:00:00+03:00 +
+
+
+
+
+
Заявок
90
+
Маршрутизировано
90
+
Одобрено
90
+
Fallback
4
+
Повторов после отказа
0
+
Попыток на заявку
3.04
+
+
+ +
+

Против оптимума онлайн-роутинг сравнён с точным решением всей очереди

+

+ Эталон считается как транспортная задача «банк × провайдер» и решается точно (min-cost flow). + У него две форы: он видит всю очередь заранее и не ограничен ёмкостями. Self-provider доступен ему + ровно в том объёме, в каком его использовал роутер, — иначе «всё себе» побеждает любую стратегию. + Наше распределение допустимо в его задаче, поэтому это настоящая верхняя граница: превысить её нельзя. +

+
+
+
100.12%
+
от точного оптимума
+
+
+
+
+ худшее допустимое 53.93 + мы 63.55 + оптимум 63.48 +
+

+ Отставание -0.07 + одобрения раскладывается на два слагаемых: + 17.65 — цена обязательства держать целевые + доли (эталон без этого требования свободнее), и + -17.73 — цена решений по одной заявке + без знания следующих. + Второе слагаемое отрицательное: роутер сознательно отступил от целевых долей ради одобрений + и обошёл эталон, которому держать их обязательно. Доли у роутера — мягкая цель, а не жёсткое + ограничение, поэтому такое возможно. +

+
+
+
+ +
+

Распределение факт против цели из снимка и против достижимой

+

Достижимая цель — доля, которую провайдер получил бы при идеально пропорциональном + роутинге среди тех заявок, где он вообще проходит hard-правила. Отклонение от неё показывает работу + стратегии; отклонение от цели из снимка — ещё и то, насколько сама цель выполнима на этих данных.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерДоля по заявкамЗаявокФактЦельОткл.ДостижимоОткл. от дост.ОбъёмДоля объёма / цель
vipay
3033.3%40%-6.721.0%+12.4628 500 ₽18.0% / 50%
payflow
1011.1%35%-23.98.7%+2.499 400 ₽2.8% / 30%
quickpay
4651.1%25%+26.165.9%-14.82 764 000 ₽79.1% / 20%
spacepayments
44.4%0%+4.40.0%+4.43 600 ₽0.1% / 0%
+
+ +
+

Загрузка лимитов после обработки очереди

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерДневной оборотИспользованоЛимитIn-progressРеквизитыОдобрено / отказ / таймаутКонверсия (сим. / 24h)
vipay
3 828 500 ₽ (76.6%)5 000 000 ₽4/10 · 380 000 ₽1230 / 0 / 01.0 / 0.87
payflow
2 999 400 ₽ (100.0%)3 000 000 ₽2/8 · 120 000 ₽510 / 0 / 01.0 / 0.91
quickpay
3 864 000 ₽ (48.3%)8 000 000 ₽1/15 · 50 000 ₽2046 / 0 / 01.0 / 0.79
spacepayments
3 600 ₽ (—)—0/∞ · 0 ₽84 / 0 / 01.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_scorescore 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
vipay− bank_not_in_listalfa not in banks [sberbank, tinkoff, vtb]
quickpay− lower_scorescore 0.45 < 0.55 (payflow)
+

где в коде: lib/payout_router/scoring/composite_scorer.rb → CompositeScorer#rank (нормировка по пулу кандидатов и взвешенная сумма целей)

+
+
+ op_113 · hard-правила оставили одного кандидата — скоринг уже ничего не решает +

10000 ₽ · gazprombank

+ + + + + + + + + + + + + + + + + +
ПровайдерРешениеПочему
quickpay+ only_eligible_providerscore 0.5869; decisive: traffic_share (+0.225), load (+0.129)
vipay− bank_not_in_listgazprombank not in banks [sberbank, tinkoff, vtb]
payflow− bank_not_in_listgazprombank 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_failureretry #1 after failure; score 0.4; decisive: load (+0.15), volume_share (+0.1)
payflow− bank_not_in_listvtb not in banks [sberbank, alfa]
vipay− provider_rejecteddispatched, 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_providerall 1 eligible providers failed: vipay: bank_not_in_list; payflow: bank_not_in_list; quickpay: provider_rejected
vipay− bank_not_in_listgazprombank not in banks [sberbank, tinkoff, vtb]
payflow− bank_not_in_listgazprombank not in banks [sberbank, alfa]
quickpay− provider_rejecteddispatched, 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_112vipay: provider_rejected (rejected) → quickpay: fallback_after_failure (approved)quickpay · approved
op_116quickpay: provider_rejected (rejected) → spacepayments: fallback_self_provider (approved)spacepayments · approved
op_118quickpay: 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 ×8gazprombank ×15, alfa ×13, raiffeisen ×13
payflow
11/90 (12.2%)daily_limit_exceeded ×40, amount_exceeds_limit ×23, bank_not_in_list ×16vtb ×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Дрейф
payflow1919.0%0.47415.8%36.8%770.91-43.6 п.п.
quickpay4040.0%0.67517.5%15.0%550.79-11.5 п.п.
vipay4141.0%0.7814.6%7.3%520.87-9.0 п.п.
+
+ +
+

Решения по заявкам раскройте, чтобы увидеть трейс

+
+ + ✓ + op_1118 000 ₽alfa + → payflow · approved · 52 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowselectedbest_score
лучший суммарный скор по активным целям
0.55score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.45score 0.45 < 0.55 (payflow)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.851.00.30.3count share 0.0% vs target 35.0% (+35.0 pp)
volume_share0.41030.00.10.0volume share 39.0% vs target 30.0% (-9.0 pp)
cascade_priority0.51.00.10.1priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.62410.00.10.0conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.42670.00.050.0alfa via payflow: 7 in history, approval 42.7%
load0.03330.00.150.0utilization 96.7% (daily 96.7%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3020000)
rate_headroom1.00.50.050.0250/7 requests in last 60s
+
+
+
+ + ✓ + op_11240 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—vtb not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.6score 0.6; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.4score 0.4 < 0.6 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.91.00.30.3count share 0.0% vs target 40.0% (+40.0 pp)
volume_share0.53850.00.10.0volume share 46.1% vs target 50.0% (+3.9 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.360.00.150.0utilization 64.0% (daily 64.0%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.00.50.050.0250/15 requests in last 60s
+
+
+
+ + ✓ + op_11310 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, alfa]
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.5869score 0.5869; decisive: traffic_share (+0.225), load (+0.129)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.75—0.30.225count share 0.0% vs target 25.0% (+25.0 pp)
volume_share0.5525—0.10.0553volume share 14.7% vs target 20.0% (+5.3 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.8625—0.150.1294utilization 13.8% (daily 13.8%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_11475 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—75000 > limit_amount_max 50000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56671.00.30.3count share 33.3% vs target 40.0% (+6.7 pp)
volume_share0.53640.00.10.0volume share 46.4% vs target 50.0% (+3.6 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band1.0—0.10.1preferred for amounts 50001..100000
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.3520.00.150.0utilization 64.8% (daily 64.8%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_11552 000 ₽vtb + → quickpay · approved · 29 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—52000 > limit_amount_max 50000
quickpayselectedbest_score
лучший суммарный скор по активным целям
0.675score 0.675; decisive vs vipay: traffic_share (+0.3), load (+0.15)
vipayskippedlower_score
допустим, но уступил по скору
0.325score 0.325 < 0.675 (quickpay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.51.00.30.3count share 25.0% vs target 25.0% (+0.0 pp)
volume_share0.55281.00.10.1volume share 14.7% vs target 20.0% (+5.3 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.6980.00.10.0conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.83271.00.050.05vtb via quickpay: 10 in history, approval 83.3%
load0.86131.00.150.15utilization 13.9% (daily 13.9%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_11620 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, alfa]
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4619score 0.4619; decisive: load (+0.128), traffic_share (+0.105)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.35—0.30.105count share 40.0% vs target 25.0% (-15.0 pp)
volume_share0.5473—0.10.0547volume share 15.3% vs target 20.0% (+4.7 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.8548—0.150.1282utilization 14.5% (daily 14.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_1172 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—vtb not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.625score 0.625; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.375score 0.375 < 0.625 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56671.00.30.3count share 33.3% vs target 40.0% (+6.7 pp)
volume_share0.53550.00.10.0volume share 46.4% vs target 50.0% (+3.6 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.3370.00.150.0utilization 66.3% (daily 66.3%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_11880 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—80000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.456score 0.456; decisive: load (+0.128), traffic_share (+0.096)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3214—0.30.0964count share 42.9% vs target 25.0% (-17.9 pp)
volume_share0.5452—0.10.0545volume share 15.5% vs target 20.0% (+4.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.8523—0.150.1278utilization 14.8% (daily 14.8%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_119900 ₽alfa + → payflow · approved · 52 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
payflowselectedonly_eligible_provider
единственный допустимый провайдер
0.5732score 0.5732; decisive: traffic_share (+0.218), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.725—0.30.2175count share 12.5% vs target 35.0% (+22.5 pp)
volume_share0.4232—0.10.0423volume share 37.7% vs target 30.0% (-7.7 pp)
cascade_priority0.5—0.10.05priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.6241—0.10.0624conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.4267—0.050.0213alfa via payflow: 7 in history, approval 42.7%
load0.0307—0.150.0046utilization 96.9% (daily 96.9%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3028000)
rate_headroom1.0—0.050.050/7 requests in last 60s
+
+
+
+ + ✓ + op_120150 000 ₽sberbank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.5389score 0.5389; decisive: load (+0.126), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3056—0.30.0917count share 44.4% vs target 25.0% (-19.4 pp)
volume_share0.5368—0.10.0537volume share 16.3% vs target 20.0% (+3.7 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.449—0.050.0225sberbank via quickpay: 5 in history, approval 44.9%
load0.8423—0.150.1263utilization 15.8% (daily 15.8%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_12175 000 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—75000 > limit_amount_max 50000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.825score 0.825; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.175score 0.175 < 0.825 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.61.00.30.3count share 30.0% vs target 40.0% (+10.0 pp)
volume_share0.54851.00.10.1volume share 45.2% vs target 50.0% (+4.8 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band1.0—0.10.1preferred for amounts 50001..100000
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.33660.00.150.0utilization 66.3% (daily 66.3%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_12225 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—tinkoff not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.53641.00.30.3count share 36.4% vs target 40.0% (+3.6 pp)
volume_share0.54351.00.10.1volume share 45.6% vs target 50.0% (+4.4 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.33660.00.150.0utilization 66.3% (daily 66.3%, in_progress 50.0%/45.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_12380 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—80000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4531score 0.4531; decisive: load (+0.124), traffic_share (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3333—0.30.1count share 41.7% vs target 25.0% (-16.7 pp)
volume_share0.5236—0.10.0524volume share 17.6% vs target 20.0% (+2.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.8235—0.150.1235utilization 17.6% (daily 17.6%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_12425 000 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayselectedbest_score
лучший суммарный скор по активным целям
0.6468score 0.6468; decisive vs payflow: volume_share (+0.1), conversion (+0.1)
payflowskippedlower_score
допустим, но уступил по скору
0.5471score 0.5471 < 0.6468 (vipay)
quickpayskippedlower_score
допустим, но уступил по скору
0.2893score 0.2893 < 0.6468 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.51540.55660.30.167count share 38.5% vs target 40.0% (+1.5 pp)
volume_share0.54621.00.10.1volume share 45.4% vs target 50.0% (+4.6 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.31660.36550.150.0548utilization 68.3% (daily 68.3%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_12545 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—vtb not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.675score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.325score 0.325 < 0.675 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.47141.00.30.3count share 42.9% vs target 40.0% (-2.9 pp)
volume_share0.54461.00.10.1volume share 45.5% vs target 50.0% (+4.5 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.31660.00.150.0utilization 68.3% (daily 68.3%, in_progress 50.0%/40.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_12615 000 ₽alfa + → payflow · approved · 52 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowselectedbest_score
лучший суммарный скор по активным целям
0.55score 0.55; decisive vs quickpay: traffic_share (+0.3), cascade_priority (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.45score 0.45 < 0.55 (payflow)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.71671.00.30.3count share 13.3% vs target 35.0% (+21.7 pp)
volume_share0.4410.00.10.0volume share 35.9% vs target 30.0% (-5.9 pp)
cascade_priority0.51.00.10.1priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.62410.00.10.0conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.42670.00.050.0alfa via payflow: 7 in history, approval 42.7%
load0.03040.00.150.0utilization 97.0% (daily 97.0%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3028900)
rate_headroom1.00.50.050.0250/7 requests in last 60s
+
+
+
+ + ✓ + op_12742 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, alfa]
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4665score 0.4665; decisive: load (+0.122), traffic_share (+0.112)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.375—0.30.1125count share 37.5% vs target 25.0% (-12.5 pp)
volume_share0.5176—0.10.0518volume share 18.2% vs target 20.0% (+1.8 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.8135—0.150.122utilization 18.6% (daily 18.6%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_12840 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, alfa]
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4509score 0.4509; decisive: load (+0.121), traffic_share (+0.101)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3382—0.30.1015count share 41.2% vs target 25.0% (-16.2 pp)
volume_share0.5135—0.10.0514volume share 18.6% vs target 20.0% (+1.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.8083—0.150.1212utilization 19.2% (daily 19.2%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_12952 000 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—52000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.44score 0.44; decisive: load (+0.12), traffic_share (+0.092)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3056—0.30.0917count share 44.4% vs target 25.0% (-19.4 pp)
volume_share0.5097—0.10.051volume share 19.0% vs target 20.0% (+1.0 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.8033—0.150.1205utilization 19.7% (daily 19.7%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_13095 000 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—95000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4297score 0.4297; decisive: load (+0.12), traffic_share (+0.083)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2763—0.30.0829count share 47.4% vs target 25.0% (-22.4 pp)
volume_share0.5048—0.10.0505volume share 19.5% vs target 20.0% (+0.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.7968—0.150.1195utilization 20.3% (daily 20.3%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_131150 000 ₽vtb + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.5254score 0.5254; decisive: load (+0.118), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.25—0.30.075count share 50.0% vs target 25.0% (-25.0 pp)
volume_share0.496—0.10.0496volume share 20.4% vs target 20.0% (-0.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.8327—0.050.0416vtb via quickpay: 10 in history, approval 83.3%
load0.7849—0.150.1177utilization 21.5% (daily 21.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_1323 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—vtb not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56671.00.30.3count share 33.3% vs target 40.0% (+6.7 pp)
volume_share0.56221.00.10.1volume share 43.8% vs target 50.0% (+6.2 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.30260.00.150.0utilization 69.7% (daily 69.7%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1338 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, alfa]
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4154score 0.4154; decisive: load (+0.115), traffic_share (+0.075)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.25—0.30.075count share 50.0% vs target 25.0% (-25.0 pp)
volume_share0.4826—0.10.0483volume share 21.7% vs target 20.0% (-1.7 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.7661—0.150.1149utilization 23.4% (daily 23.4%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_13412 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—tinkoff not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.775score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.225score 0.225 < 0.775 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.55221.00.30.3count share 34.8% vs target 40.0% (+5.2 pp)
volume_share0.56241.00.10.1volume share 43.8% vs target 50.0% (+6.2 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.3020.00.150.0utilization 69.8% (daily 69.8%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_135800 ₽sberbank + → payflow · approved · 52 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—800 < limit_amount_min 1000
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—800 < limit_amount_min 1000
payflowselectedonly_eligible_provider
единственный допустимый провайдер
0.5856score 0.5856; decisive: traffic_share (+0.218), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.725—0.30.2175count share 12.5% vs target 35.0% (+22.5 pp)
volume_share0.4562—0.10.0456volume share 34.4% vs target 30.0% (-4.4 pp)
cascade_priority0.5—0.10.05priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.6241—0.10.0624conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.6241—0.050.0312sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%
load0.0254—0.150.0038utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3043900)
rate_headroom1.0—0.050.050/7 requests in last 60s
+
+
+
+ + ✓ + op_13635 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—tinkoff not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.75score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.25score 0.25 < 0.75 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.541.00.30.3count share 36.0% vs target 40.0% (+4.0 pp)
volume_share0.56161.00.10.1volume share 43.8% vs target 50.0% (+6.2 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.29960.00.150.0utilization 70.0% (daily 70.0%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.00.50.050.0250/15 requests in last 60s
+
+
+
+ + ✓ + op_137180 000 ₽sberbank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—180000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—180000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.5169score 0.5169; decisive: load (+0.115), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2885—0.30.0865count share 46.2% vs target 25.0% (-21.2 pp)
volume_share0.483—0.10.0483volume share 21.7% vs target 20.0% (-1.7 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.449—0.050.0225sberbank via quickpay: 5 in history, approval 44.9%
load0.7651—0.150.1148utilization 23.5% (daily 23.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_138180 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—180000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—180000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.5126score 0.5126; decisive: load (+0.111), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2685—0.30.0806count share 48.1% vs target 25.0% (-23.1 pp)
volume_share0.4675—0.10.0467volume share 23.3% vs target 20.0% (-3.3 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.7426—0.150.1114utilization 25.7% (daily 25.7%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_139900 ₽alfa + → payflow · approved · 52 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
payflowselectedonly_eligible_provider
единственный допустимый провайдер
0.5717score 0.5717; decisive: traffic_share (+0.212), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.7071—0.30.2121count share 14.3% vs target 35.0% (+20.7 pp)
volume_share0.4709—0.10.0471volume share 32.9% vs target 30.0% (-2.9 pp)
cascade_priority0.5—0.10.05priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.6241—0.10.0624conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.4267—0.050.0213alfa via payflow: 7 in history, approval 42.7%
load0.0251—0.150.0038utilization 97.5% (daily 97.5%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3044700)
rate_headroom1.0—0.050.050/7 requests in last 60s
+
+
+
+ + ✓ + op_14040 000 ₽alfa + → payflow · approved · 52 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowselectedbest_score
лучший суммарный скор по активным целям
0.625score 0.625; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.375score 0.375 < 0.625 (payflow)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.67761.00.30.3count share 17.2% vs target 35.0% (+17.8 pp)
volume_share0.47081.00.10.1volume share 32.9% vs target 30.0% (-2.9 pp)
cascade_priority0.51.00.10.1priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.62410.00.10.0conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.42670.00.050.0alfa via payflow: 7 in history, approval 42.7%
load0.02510.00.150.0utilization 97.5% (daily 97.5%, in_progress 37.5%/24.2%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3045600)
rate_headroom0.85710.00.050.01/7 requests in last 60s
+
+
+
+ + ✓ + op_1418 000 ₽alfa + → payflow · approved · 52 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowselectedbest_score
лучший суммарный скор по активным целям
0.625score 0.625; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.375score 0.375 < 0.625 (payflow)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.651.00.30.3count share 20.0% vs target 35.0% (+15.0 pp)
volume_share0.46791.00.10.1volume share 33.2% vs target 30.0% (-3.2 pp)
cascade_priority0.51.00.10.1priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.62410.00.10.0conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.42670.00.050.0alfa via payflow: 7 in history, approval 42.7%
load0.02480.00.150.0utilization 97.5% (daily 97.5%, in_progress 37.5%/32.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3085600)
rate_headroom0.85710.00.050.01/7 requests in last 60s
+
+
+
+ + ✓ + op_14210 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—vtb not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.7score 0.7; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.3score 0.3 < 0.7 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.57741.00.30.3count share 32.3% vs target 40.0% (+7.7 pp)
volume_share0.57881.00.10.1volume share 42.1% vs target 50.0% (+7.9 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.29260.00.150.0utilization 70.7% (daily 70.7%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.00.50.050.0250/15 requests in last 60s
+
+
+
+ + ✓ + op_14335 000 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2973600 + 35000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.55631.00.30.3count share 34.4% vs target 40.0% (+5.6 pp)
volume_share0.57821.00.10.1volume share 42.2% vs target 50.0% (+7.8 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.29260.00.150.0utilization 70.7% (daily 70.7%, in_progress 50.0%/39.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_1442 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—tinkoff not in banks [sberbank, alfa]
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.53641.00.30.3count share 36.4% vs target 40.0% (+3.6 pp)
volume_share0.5761.00.10.1volume share 42.4% vs target 50.0% (+7.6 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.29060.00.150.0utilization 70.9% (daily 70.9%, in_progress 50.0%/41.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_14510 000 ₽alfa + → payflow · approved · 52 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowselectedbest_score
лучший суммарный скор по активным целям
0.65score 0.65; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.35score 0.35 < 0.65 (payflow)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.64411.00.30.3count share 20.6% vs target 35.0% (+14.4 pp)
volume_share0.4691.00.10.1volume share 33.1% vs target 30.0% (-3.1 pp)
cascade_priority0.51.00.10.1priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.62410.00.10.0conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.42670.00.050.0alfa via payflow: 7 in history, approval 42.7%
load0.00880.00.150.0utilization 99.1% (daily 99.1%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3093600)
rate_headroom1.00.50.050.0250/7 requests in last 60s
+
+
+
+ + ✓ + op_146900 ₽raiffeisen + → spacepayments · approved · 15 с + внешних провайдеров не осталось — self-provider · fallback + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, alfa]
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
spacepaymentsselectedfallback_self_provider
внешних провайдеров не осталось — self-provider
—no eligible external provider: vipay: amount_below_minimum; payflow: bank_not_in_list; quickpay: amount_below_minimum
+
+
+
+ + ✓ + op_1475 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, alfa]
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4421score 0.4421; decisive: traffic_share (+0.108), load (+0.108)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3611—0.30.1083count share 38.9% vs target 25.0% (-13.9 pp)
volume_share0.4554—0.10.0455volume share 24.5% vs target 20.0% (-4.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.7201—0.150.108utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_14815 000 ₽alfa + → payflow · approved · 52 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowselectedbest_score
лучший суммарный скор по активным целям
0.675score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.325score 0.325 < 0.675 (payflow)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.63381.00.30.3count share 21.6% vs target 35.0% (+13.4 pp)
volume_share0.46851.00.10.1volume share 33.2% vs target 30.0% (-3.2 pp)
cascade_priority0.51.00.10.1priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.62410.00.10.0conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.42670.00.050.0alfa via payflow: 7 in history, approval 42.7%
load0.00550.00.150.0utilization 99.5% (daily 99.5%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3103600)
rate_headroom1.0—0.050.050/7 requests in last 60s
+
+
+
+ + ✓ + op_14980 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—80000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4373score 0.4373; decisive: load (+0.108), traffic_share (+0.107)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3553—0.30.1066count share 39.5% vs target 25.0% (-14.5 pp)
volume_share0.4553—0.10.0455volume share 24.5% vs target 20.0% (-4.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.7195—0.150.1079utilization 28.0% (daily 28.0%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_15042 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4301score 0.4301; decisive: load (+0.106), traffic_share (+0.102)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3397—0.30.1019count share 41.0% vs target 25.0% (-16.0 pp)
volume_share0.449—0.10.0449volume share 25.1% vs target 20.0% (-5.1 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.7095—0.150.1064utilization 29.0% (daily 29.0%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_15125 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 25000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.775score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.225score 0.225 < 0.775 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.5751.00.30.3count share 32.5% vs target 40.0% (+7.5 pp)
volume_share0.58271.00.10.1volume share 41.7% vs target 50.0% (+8.3 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.28320.00.150.0utilization 71.7% (daily 71.7%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_15215 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 15000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4311score 0.4311; decisive: load (+0.106), traffic_share (+0.101)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3354—0.30.1006count share 41.5% vs target 25.0% (-16.5 pp)
volume_share0.4463—0.10.0446volume share 25.4% vs target 20.0% (-5.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.7043—0.150.1056utilization 29.6% (daily 29.6%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1532 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 2000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4231score 0.4231; decisive: load (+0.105), traffic_share (+0.096)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3214—0.30.0964count share 42.9% vs target 25.0% (-17.9 pp)
volume_share0.4451—0.10.0445volume share 25.5% vs target 20.0% (-5.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.7024—0.150.1054utilization 29.8% (daily 29.8%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_15442 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4191score 0.4191; decisive: load (+0.105), traffic_share (+0.092)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.3081—0.30.0924count share 44.2% vs target 25.0% (-19.2 pp)
volume_share0.445—0.10.0445volume share 25.5% vs target 20.0% (-5.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.7021—0.150.1053utilization 29.8% (daily 29.8%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_15595 000 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—95000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4142score 0.4142; decisive: load (+0.105), traffic_share (+0.089)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2955—0.30.0886count share 45.5% vs target 25.0% (-20.5 pp)
volume_share0.4417—0.10.0442volume share 25.8% vs target 20.0% (-5.8 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.6969—0.150.1045utilization 30.3% (daily 30.3%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_156150 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.508score 0.508; decisive: load (+0.103), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2833—0.30.085count share 46.7% vs target 25.0% (-21.7 pp)
volume_share0.4344—0.10.0434volume share 26.6% vs target 20.0% (-6.6 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.685—0.150.1028utilization 31.5% (daily 31.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_15710 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 10000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3977score 0.3977; decisive: load (+0.1), traffic_share (+0.082)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2717—0.30.0815count share 47.8% vs target 25.0% (-22.8 pp)
volume_share0.4232—0.10.0423volume share 27.7% vs target 20.0% (-7.7 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.6663—0.150.0999utilization 33.4% (daily 33.4%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_15842 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 42000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3941score 0.3941; decisive: load (+0.1), traffic_share (+0.078)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2606—0.30.0782count share 48.9% vs target 25.0% (-23.9 pp)
volume_share0.4225—0.10.0422volume share 27.8% vs target 20.0% (-7.8 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.665—0.150.0998utilization 33.5% (daily 33.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_15948 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 48000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3898score 0.3898; decisive: load (+0.099), traffic_share (+0.075)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.25—0.30.075count share 50.0% vs target 25.0% (-25.0 pp)
volume_share0.4194—0.10.0419volume share 28.1% vs target 20.0% (-8.1 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.6598—0.150.099utilization 34.0% (daily 34.0%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_160120 000 ₽tinkoff + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—120000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—120000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4871score 0.4871; decisive: amount_band (+0.1), load (+0.098)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2398—0.30.0719count share 51.0% vs target 25.0% (-26.0 pp)
volume_share0.4159—0.10.0416volume share 28.4% vs target 20.0% (-8.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.6809—0.050.034tinkoff via quickpay: 6 in history, approval 68.1%
load0.6538—0.150.0981utilization 34.6% (daily 34.6%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_161150 000 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—150000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4824score 0.4824; decisive: amount_band (+0.1), load (+0.096)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.23—0.30.069count share 52.0% vs target 25.0% (-27.0 pp)
volume_share0.4074—0.10.0407volume share 29.3% vs target 20.0% (-9.3 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.6387—0.150.0958utilization 36.1% (daily 36.1%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_16230 000 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 30000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.775score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.225score 0.225 < 0.775 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.62551.00.30.3count share 27.5% vs target 40.0% (+12.5 pp)
volume_share0.60881.00.10.1volume share 39.1% vs target 50.0% (+10.9 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.27820.00.150.0utilization 72.2% (daily 72.2%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_16340 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 40000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3793score 0.3793; decisive: load (+0.093), conversion (+0.07)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2308—0.30.0692count share 51.9% vs target 25.0% (-26.9 pp)
volume_share0.3979—0.10.0398volume share 30.2% vs target 20.0% (-10.2 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.62—0.150.093utilization 38.0% (daily 38.0%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_164800 ₽sberbank + → payflow · approved · 52 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—800 < limit_amount_min 1000
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—800 < limit_amount_min 1000
payflowselectedonly_eligible_provider
единственный допустимый провайдер
0.5724score 0.5724; decisive: traffic_share (+0.204), amount_band (+0.1)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.6802—0.30.2041count share 17.0% vs target 35.0% (+18.0 pp)
volume_share0.4963—0.10.0496volume share 30.4% vs target 30.0% (-0.4 pp)
cascade_priority0.5—0.10.05priority 2 (2 of 3)
amount_band1.0—0.10.1preferred for amounts 500..50000
conversion0.6241—0.10.0624conversion_24h 0.91, history 19 ops → calibrated 0.624
bank_affinity0.6241—0.050.0312sberbank via payflow: 3 in history (< 5), using provider overall: 19 ops, approval 62.4%
load0.0005—0.150.0001utilization 100.0% (daily 100.0%, in_progress 25.0%/24.0%)
turnover_min0.5—0.050.025daily_turnover_min 2000000 reached (3118600)
rate_headroom1.0—0.050.050/7 requests in last 60s
+
+
+
+ + ✓ + op_1653 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2998600 + 3000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3785score 0.3785; decisive: load (+0.092), conversion (+0.07)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2315—0.30.0694count share 51.9% vs target 25.0% (-26.9 pp)
volume_share0.3952—0.10.0395volume share 30.5% vs target 20.0% (-10.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.615—0.150.0923utilization 38.5% (daily 38.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_166120 000 ₽sberbank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—120000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—120000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4624score 0.4624; decisive: amount_band (+0.1), load (+0.092)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2227—0.30.0668count share 52.7% vs target 25.0% (-27.7 pp)
volume_share0.395—0.10.0395volume share 30.5% vs target 20.0% (-10.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.449—0.050.0225sberbank via quickpay: 5 in history, approval 44.9%
load0.6146—0.150.0922utilization 38.5% (daily 38.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_16725 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 25000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.63211.00.30.3count share 26.8% vs target 40.0% (+13.2 pp)
volume_share0.61321.00.10.1volume share 38.7% vs target 50.0% (+11.3 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.27220.00.150.0utilization 72.8% (daily 72.8%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_16852 000 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—52000 > limit_amount_max 50000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.775score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.225score 0.225 < 0.775 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.61931.00.30.3count share 28.1% vs target 40.0% (+11.9 pp)
volume_share0.61181.00.10.1volume share 38.8% vs target 50.0% (+11.2 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band1.0—0.10.1preferred for amounts 50001..100000
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.27220.00.150.0utilization 72.8% (daily 72.8%, in_progress 50.0%/40.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_16910 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.675score 0.675; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.325score 0.325 < 0.675 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.60691.00.30.3count share 29.3% vs target 40.0% (+10.7 pp)
volume_share0.60871.00.10.1volume share 39.1% vs target 50.0% (+10.9 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.26720.00.150.0utilization 73.3% (daily 73.3%, in_progress 50.0%/43.2%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_1701 500 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.59491.00.30.3count share 30.5% vs target 40.0% (+9.5 pp)
volume_share0.60811.00.10.1volume share 39.2% vs target 50.0% (+10.8 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.25680.00.150.0utilization 74.3% (daily 74.3%, in_progress 50.0%/39.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_1713 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.58331.00.30.3count share 31.7% vs target 40.0% (+8.3 pp)
volume_share0.60811.00.10.1volume share 39.2% vs target 50.0% (+10.8 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.25480.00.150.0utilization 74.5% (daily 74.5%, in_progress 50.0%/38.2%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_1728 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.57211.00.30.3count share 32.8% vs target 40.0% (+7.2 pp)
volume_share0.60791.00.10.1volume share 39.2% vs target 50.0% (+10.8 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.25450.00.150.0utilization 74.6% (daily 74.6%, in_progress 50.0%/38.3%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_17312 000 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3889score 0.3889; decisive: load (+0.09), traffic_share (+0.08)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2661—0.30.0798count share 48.4% vs target 25.0% (-23.4 pp)
volume_share0.3899—0.10.039volume share 31.0% vs target 20.0% (-11.0 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.5996—0.150.0899utilization 40.0% (daily 40.0%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1748 000 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.775score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.225score 0.225 < 0.775 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56671.00.30.3count share 33.3% vs target 40.0% (+6.7 pp)
volume_share0.60791.00.10.1volume share 39.2% vs target 50.0% (+10.8 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.25230.00.150.0utilization 74.8% (daily 74.8%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_17510 000 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 10000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3885score 0.3885; decisive: load (+0.09), traffic_share (+0.08)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2656—0.30.0797count share 48.4% vs target 25.0% (-23.4 pp)
volume_share0.3894—0.10.0389volume share 31.1% vs target 20.0% (-11.1 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.5981—0.150.0897utilization 40.2% (daily 40.2%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_176900 ₽sberbank + → spacepayments · approved · 15 с + внешних провайдеров не осталось — self-provider · fallback + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
spacepaymentsselectedfallback_self_provider
внешних провайдеров не осталось — self-provider
—no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum
+
+
+
+ + ✓ + op_17742 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 42000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3881score 0.3881; decisive: load (+0.09), traffic_share (+0.08)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2652—0.30.0795count share 48.5% vs target 25.0% (-23.5 pp)
volume_share0.3887—0.10.0389volume share 31.1% vs target 20.0% (-11.1 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.5969—0.150.0895utilization 40.3% (daily 40.3%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_178120 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—120000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—120000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4785score 0.4785; decisive: amount_band (+0.1), load (+0.089)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2575—0.30.0772count share 49.3% vs target 25.0% (-24.3 pp)
volume_share0.386—0.10.0386volume share 31.4% vs target 20.0% (-11.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.5916—0.150.0887utilization 40.8% (daily 40.8%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_1791 500 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3762score 0.3762; decisive: load (+0.086), traffic_share (+0.075)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.25—0.30.075count share 50.0% vs target 25.0% (-25.0 pp)
volume_share0.3783—0.10.0378volume share 32.2% vs target 20.0% (-12.2 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.5766—0.150.0865utilization 42.3% (daily 42.3%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_180180 000 ₽tinkoff + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_exceeds_limit
сумма больше максимального чека
—180000 > limit_amount_max 100000
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—180000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.4726score 0.4726; decisive: amount_band (+0.1), load (+0.086)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2428—0.30.0728count share 50.7% vs target 25.0% (-25.7 pp)
volume_share0.3782—0.10.0378volume share 32.2% vs target 20.0% (-12.2 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band1.0—0.10.1preferred for amounts 100001..∞
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.6809—0.050.034tinkoff via quickpay: 6 in history, approval 68.1%
load0.5764—0.150.0865utilization 42.4% (daily 42.4%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_1811 500 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.775score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.225score 0.225 < 0.775 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.58571.00.30.3count share 31.4% vs target 40.0% (+8.6 pp)
volume_share0.62021.00.10.1volume share 38.0% vs target 50.0% (+12.0 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.25070.00.150.0utilization 74.9% (daily 74.9%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1821 500 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3699score 0.3699; decisive: load (+0.083), traffic_share (+0.073)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.243—0.30.0729count share 50.7% vs target 25.0% (-25.7 pp)
volume_share0.367—0.10.0367volume share 33.3% vs target 20.0% (-13.3 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.5539—0.150.0831utilization 44.6% (daily 44.6%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_18340 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3674score 0.3674; decisive: load (+0.083), traffic_share (+0.071)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2361—0.30.0708count share 51.4% vs target 25.0% (-26.4 pp)
volume_share0.3669—0.10.0367volume share 33.3% vs target 20.0% (-13.3 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.5538—0.150.0831utilization 44.6% (daily 44.6%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_1841 500 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 1500 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.775score 0.775; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.225score 0.225 < 0.775 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.58491.00.30.3count share 31.5% vs target 40.0% (+8.5 pp)
volume_share0.62151.00.10.1volume share 37.8% vs target 50.0% (+12.2 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.25040.00.150.0utilization 75.0% (daily 75.0%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1853 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.57571.00.30.3count share 32.4% vs target 40.0% (+7.6 pp)
volume_share0.62151.00.10.1volume share 37.9% vs target 50.0% (+12.1 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.25040.00.150.0utilization 75.0% (daily 75.0%, in_progress 50.0%/38.2%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_18695 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—95000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3719score 0.3719; decisive: load (+0.082), traffic_share (+0.073)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2433—0.30.073count share 50.7% vs target 25.0% (-25.7 pp)
volume_share0.3646—0.10.0365volume share 33.5% vs target 20.0% (-13.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.5488—0.150.0823utilization 45.1% (daily 45.1%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1878 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.57111.00.30.3count share 32.9% vs target 40.0% (+7.1 pp)
volume_share0.62461.00.10.1volume share 37.5% vs target 50.0% (+12.5 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.24950.00.150.0utilization 75.0% (daily 75.0%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_18812 000 ₽tinkoff + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 12000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56231.00.30.3count share 33.8% vs target 40.0% (+6.2 pp)
volume_share0.62411.00.10.1volume share 37.6% vs target 50.0% (+12.4 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.81731.00.050.05tinkoff via vipay: 6 in history, approval 81.7%
load0.24950.00.150.0utilization 75.0% (daily 75.0%, in_progress 50.0%/38.8%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.93330.00.050.01/15 requests in last 60s
+
+
+
+ + ✓ + op_18915 000 ₽alfa + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—alfa not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 15000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3717score 0.3717; decisive: load (+0.081), traffic_share (+0.075)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.25—0.30.075count share 50.0% vs target 25.0% (-25.0 pp)
volume_share0.3595—0.10.0359volume share 34.1% vs target 20.0% (-14.1 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354alfa via quickpay: 7 in history, approval 70.8%
load0.5369—0.150.0805utilization 46.3% (daily 46.3%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_190900 ₽alfa + → spacepayments · approved · 15 с + внешних провайдеров не осталось — self-provider · fallback + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
spacepaymentsselectedfallback_self_provider
внешних провайдеров не осталось — self-provider
—no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum
+
+
+
+ + ✓ + op_1918 000 ₽sberbank + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.75score 0.75; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.25score 0.25 < 0.75 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56251.00.30.3count share 33.8% vs target 40.0% (+6.2 pp)
volume_share0.62391.00.10.1volume share 37.6% vs target 50.0% (+12.4 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.84541.00.050.05sberbank via vipay: 8 in history, approval 84.5%
load0.24550.00.150.0utilization 75.4% (daily 75.4%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.00.50.050.0250/15 requests in last 60s
+
+
+
+ + ✓ + op_19255 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—55000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3702score 0.3702; decisive: load (+0.08), traffic_share (+0.077)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2562—0.30.0769count share 49.4% vs target 25.0% (-24.4 pp)
volume_share0.3588—0.10.0359volume share 34.1% vs target 20.0% (-14.1 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.535—0.150.0802utilization 46.5% (daily 46.5%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1932 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3666score 0.3666; decisive: load (+0.079), traffic_share (+0.075)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.25—0.30.075count share 50.0% vs target 25.0% (-25.0 pp)
volume_share0.3556—0.10.0356volume share 34.4% vs target 20.0% (-14.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.5281—0.150.0792utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_1943 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 3000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3618score 0.3618; decisive: load (+0.079), traffic_share (+0.073)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.244—0.30.0732count share 50.6% vs target 25.0% (-25.6 pp)
volume_share0.3554—0.10.0355volume share 34.5% vs target 20.0% (-14.5 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.5279—0.150.0792utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom0.9333—0.050.04671/15 requests in last 60s
+
+
+
+ + ✓ + op_19540 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 40000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56671.00.30.3count share 33.3% vs target 40.0% (+6.7 pp)
volume_share0.62551.00.10.1volume share 37.4% vs target 50.0% (+12.6 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.24390.00.150.0utilization 75.6% (daily 75.6%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1962 000 ₽gazprombank + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—gazprombank not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 2000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3653score 0.3653; decisive: load (+0.079), traffic_share (+0.073)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2441—0.30.0732count share 50.6% vs target 25.0% (-25.6 pp)
volume_share0.3565—0.10.0356volume share 34.4% vs target 20.0% (-14.4 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.649—0.050.0325gazprombank via quickpay: 5 in history, approval 64.9%
load0.5275—0.150.0791utilization 47.2% (daily 47.2%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_1978 000 ₽vtb + → vipay · approved · 38 с + лучший суммарный скор по активным целям + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 8000 > daily_amount_limit 3000000
vipayselectedbest_score
лучший суммарный скор по активным целям
0.725score 0.725; decisive vs quickpay: traffic_share (+0.3), volume_share (+0.1)
quickpayskippedlower_score
допустим, но уступил по скору
0.275score 0.275 < 0.725 (vipay)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.56281.00.30.3count share 33.7% vs target 40.0% (+6.3 pp)
volume_share0.62331.00.10.1volume share 37.7% vs target 50.0% (+12.3 pp)
cascade_priority1.0—0.10.1priority 1 (1 of 3)
amount_band0.00.50.10.05amounts 500..50000 prefer payflow
conversion0.7981.00.10.1conversion_24h 0.87, history 41 ops → calibrated 0.798
bank_affinity0.74920.00.050.0vtb via vipay: 7 in history, approval 74.9%
load0.23590.00.150.0utilization 76.4% (daily 76.4%, in_progress 40.0%/38.0%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_19852 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippedamount_exceeds_limit
сумма больше максимального чека
—52000 > limit_amount_max 50000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.3682score 0.3682; decisive: load (+0.079), traffic_share (+0.073)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2443—0.30.0733count share 50.6% vs target 25.0% (-25.6 pp)
volume_share0.3566—0.10.0357volume share 34.3% vs target 20.0% (-14.3 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 50001..100000 prefer vipay
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.5273—0.150.0791utilization 47.3% (daily 47.3%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+ + ✓ + op_199900 ₽tinkoff + → spacepayments · approved · 15 с + внешних провайдеров не осталось — self-provider · fallback + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 900 > daily_amount_limit 3000000
quickpayskippedamount_below_minimum
сумма меньше минимального чека
—900 < limit_amount_min 1000
spacepaymentsselectedfallback_self_provider
внешних провайдеров не осталось — self-provider
—no eligible external provider: vipay: amount_below_minimum; payflow: daily_limit_exceeded; quickpay: amount_below_minimum
+
+
+
+ + ✓ + op_20030 000 ₽raiffeisen + → quickpay · approved · 29 с + единственный допустимый провайдер + +
+ + + + + + + + + + + + + + + + + + + + + + + +
ПровайдерРешениеПричинаСкорДетали
vipayskippedbank_not_in_list
банк получателя не в списке поддерживаемых
—raiffeisen not in banks [sberbank, tinkoff, vtb]
payflowskippeddaily_limit_exceeded
исчерпан дневной лимит оборота
—daily_approved_amount 2999400 + 30000 > daily_amount_limit 3000000
quickpayselectedonly_eligible_provider
единственный допустимый провайдер
0.367score 0.367; decisive: load (+0.078), traffic_share (+0.073)
+

Разложение скора выбранного провайдера:

+ + + + + + + + + + + +
ЦельОценкаПо пулуВесВкладПояснение
traffic_share0.2444—0.30.0733count share 50.6% vs target 25.0% (-25.6 pp)
volume_share0.3536—0.10.0354volume share 34.6% vs target 20.0% (-14.6 pp)
cascade_priority0.0—0.10.0priority 3 (3 of 3)
amount_band0.0—0.10.0amounts 500..50000 prefer payflow
conversion0.698—0.10.0698conversion_24h 0.79, history 40 ops → calibrated 0.698
bank_affinity0.7075—0.050.0354raiffeisen via quickpay: 7 in history, approval 70.8%
load0.5208—0.150.0781utilization 47.9% (daily 47.9%, in_progress 6.7%/2.5%)
turnover_min0.5—0.050.025no daily_turnover_min
rate_headroom1.0—0.050.050/15 requests in last 60s
+
+
+
+
+ + + 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) или изменить её параметры" + } + ] +}