Общее описание задачи
Необходимо реализовать интеграцию с API стороннего автовокзала. Ключевое отличие от предыдущих интеграций - появление динамической наценки на уровне конкретного вокзала.
Формула расчета стоимости
Итоговая цена билета складывается из составляющих:
- Базовая цена билета - 100 % (например 100 рублей).
- Наценка автовокзала - настраиваемый процент (от 0 %). Если задана наценка 3 %, новой базой становится 103 %.
- Общая станйдартная наценка (уже настроенный общий процент сайта, например 10 %). Итоговая стоимость для клиента = базовая цена × (1 + наценка вокзала) × (1 + общая наценка). Пример: 100 × 1.03 × 1.10 = 113,30 руб.
Требования к интерфейсу
Добавить в личный раздел нового перевозчика (или редакцию города) новое поле:Процент наценки автовокзала.
Поле должно позволять устанавливать значение от 0 до любого разумного числа. Минимальное значение - 0 (наценка не применяется).Базовые проценты
Описание API Avibus для клиентов предоставляется отдельно.Архитектурные ограничения
- Количество входящих запросов. На 1 покупку должно уходить 10-20 внешних запросов к API. Допустимо не более. Если реализация потребует большего числа запросов, необходимо изменить алгоритм с кэшированием данных в локальной базе длительного хранения (или охлаждение с ACP; детали на усмотрение инженера).
- Защита роутинга от DDoS-выкачивания. Приложение должно само распознавать и блокировать создание 30-60 запросов подряд одним пользователем в рамках сессии.
- Автообновление расписания. Механизм обновления тарифов на произвольные даты запрещён в линейном запросе: каждое обновление билетной сетки запрашивает конкретную потребность клиента (дата в одну сторону, маршрут АБ → город финала). Нельзя безусловно получать все направления сразу для каждого пользователя.
Сохранение существующей иерархии городов. Единый пункт меню search-box: например, клиент ищет “Краснодар”. Обнаруженный рейсы нескольких перевозчиков единым блоком. Выбор проходных рейсов и указание на выпачку транспортной остановки осуществляется внутри по результату формирования поездки (при отрисовке информации по билету). Текущие города первого аггрегатора в ящике записи сохранить без изменений.Важные заметки
- Всегда помнить про уже интегриые ACP существующих серверов API: задание не требует прямыз интерів контргал відрізки.
- При неполноте данных из описов клиентской копии от АРІ вокзала не добавлять от себя любую 'middle-way' дороги а проссь к дисграфию в доке.
N-третий. Вся логика и описание поступает хозяину проекта от Исполнителя.