DuoRoute получает очередь выплат, проверяет доступность провайдеров, выбирает лучший вариант по заданной стратегии, переходит к следующему при отказе и сохраняет объяснение каждого решения. Проект команды DuoTech для Hack.Genesis 2026, кейс «Умный роутинг выплат».
JSON со состоянием провайдеров и очередью операций, настройки YAML/JSON и история CSV. Для точного демонстрационного сценария можно добавить ответы провайдеров outcomes.json.
Программа последовательно проверяет обязательные ограничения, оценивает допустимых провайдеров по одной из семи стратегий или их комбинации и обновляет состояние после попыток. Ответы моделируются локально; реальные выплаты не отправляются. CLI и Web используют одно Ruby-ядро.
routing_decisions.json содержит решения и причины по каждой операции; routing_report.json — распределение, успешность, лимиты и рекомендации. Рядом сохраняются конфигурация и Manifest — параметры и контрольные суммы для повторения расчёта.
Нужны Ruby 3.4.10 через rbenv, Bundler и SQLite. Установка и исправление системной Ruby описаны в CLI.
git clone https://github.com/RisaGithub/DuoRoute.git
cd DuoRoute
bin/setup --skip-server
bin/dev -b 127.0.0.1 -p 3000Откройте http://localhost:3000. Подготовка добавляет готовый публичный пример.
Из корня подготовленного проекта:
bin/router demo --seed 42
ruby script/validate_10.rb routing_decisions.jsonЭто публичная демонстрация с заранее заданными ответами. CLI работает без Web и базы данных.
- CLI — команды, входные файлы, настройки и финальный запуск.
- Web-интерфейс — страницы и работа через браузер.
- Соответствие критериям — как выполнен каждый пункт оценки.
- Архитектура — устройство проекта.
- Алгоритм — правила выбора провайдера и формулы.
bin/router readinessselected_provider содержит итогового провайдера после каскада и fallback; attempts — полную последовательность попыток. Пользовательские стратегии комбинируют существующие мягкие политики и не отключают обязательные ограничения. Отсутствующая цель не равна нулевой. balanced — проверенная безопасная конфигурация по умолчанию в пределах исследованных сценариев, без гарантии математической оптимальности.
Лицензия — MIT; сторонние компоненты.