📈 Настройка курсов обмена

Назад к списку Редактировать
Информация
Slug:
rates-configuration.html
Обновлено:
30.05.2026 15:03
Размер:
10.12 KB
Путь:
/resources/docs/user/rates-configuration.html
Ссылки
Публичная ссылка:
Ссылка в админке:
📈 Настройка курсов обмена

Двухуровневая система курсов

1. Внешние курсы (External Rates)

Источник: Рыночные данные, получаемые автоматически из внешних API.

Содержат: "Сырые" данные с биржи:

  • external_rate - среднерыночный курс
  • bid_price - цена покупки (зеленый стакан)
  • ask_price - цена продажи (красный стакан)
  • volume_24h - объем торгов за 24 часа
  • change_24h - изменение цены за 24 часа (%)
  • spread - разница между ask и bid

Управление: Обновляются автоматически по расписанию (каждый час). Ручное редактирование не предусмотрено.

2. Курсы обмена (Exchange Rates)

Назначение: Конечный курс, который видит клиент на сайте.

Содержат: Настройки для конкретной пары валют:

  • Ручной курс - фиксированное значение
  • Использовать внешний курс как базу - галочка для применения наценки
  • Наценка/скидка % - процент к внешнему курсу
  • Мин/макс сумма - лимиты для этой пары
  • Приоритет - чем выше число, тем выше приоритет
📝 Примечание: Запись в exchange_rates может ссылаться на запись в external_rates через поле external_rate_id. Если стоит галочка "Использовать внешний курс", поле "Ручной курс" игнорируется.

Типы курсов обмена

Тип курсаКак рассчитываетсяКогда использовать
Внешний + наценка Цена из стакана × (1 + наценка%) Для автоматического следования рынку со своей наценкой
Ручной (фиксированный) Игнорирует внешние API. Всегда показывает фиксированное значение Акции, специальные предложения
Партнерский внешний Использует API партнера (если указан) или общий API Для партнеров с собственным источником курсов

Создание курса обмена

  1. Перейдите в раздел Курсы обмена
  2. Нажмите Добавить курс в правом верхнем углу
  3. Выберите:
    • Партнер (если оставить пустым - курс будет общим)
    • Из валюты - что отдает клиент
    • В валюту - что получает клиент
  4. Выберите тип курса:
    • Для ручного курса: заполните поле Ручной курс
    • Для внешнего курса: поставьте галочку Использовать внешний курс как базу и укажите наценку
  5. Укажите лимиты (мин/макс сумму)
  6. Нажмите Сохранить

Массовое редактирование общих курсов

Для удобства администрирования доступно массовое редактирование всех общих курсов в одной таблице:

  1. Перейдите в раздел Курсы обмена
  2. Прокрутите вниз до блока "Настройка общих курсов обмена"
  3. В таблице вы можете:
    • Редактировать существующие курсы
    • Добавлять новые строки кнопкой "Добавить курс"
    • Удалять строки кнопкой
  4. После внесения изменений нажмите Сохранить все курсы
⚠️ Важно: В режиме массового редактирования все старые общие курсы удаляются и заменяются новыми. Сохраняйте изменения только после полной настройки всех необходимых пар.

Обновление внешних курсов из API

Внешние курсы обновляются автоматически по расписанию (каждый час). Также можно обновить вручную:

  1. Перейдите в раздел Курсы обмена
  2. Нажмите кнопку Обновить курсы в правом верхнем углу
  3. Выберите API источник из выпадающего списка или используйте "Все активные API"
  4. Подтвердите обновление
📝 Примечание: При обновлении из API старые внешние курсы не удаляются, а обновляются. Если API недоступен, старые курсы сохраняются.

Просмотр стакана заявок (Order Book)

Для каждой валютной пары доступен просмотр стакана заявок (bid/ask):

  1. Перейдите в раздел Курсы обмена → Внешние курсы
  2. Нажмите кнопку (иконка графика) в строке нужной пары
  3. В модальном окне отобразится:
    • Bid - лучшие цены покупки (зеленый стакан)
    • Ask - лучшие цены продажи (красный стакан)
    • Spread - разница между ask и bid
    • Топ-5 заявок - по 5 лучших цен покупки и продажи

Диагностика проблем с курсами

СимптомРешение
Курс на сайте "Загружается" или не отображается 1. Проверить, есть ли активная запись в exchange_rates для нужной пары
2. Проверить, заполнено ли поле rate или настроено use_external_rate
Курс не обновляется, хотя стоит автообновление 1. Проверить, что связанная запись в external_rates существует и не устарела
2. Проверить, работает ли крон команда rates:update-from-apis
У партнера свой курс, но применяется глобальный 1. Проверить, что у партнера есть активный курс с более высоким priority
2. Проверить, что курс партнера активен (is_active = true)
Последнее обновление: 30.05.2026 в 15:03
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Настройка курсов обмена - DEXA</title>
    <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 1200px; margin: 0 auto; padding: 20px; }
        h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
        h2 { color: #34495e; margin-top: 30px; }
        h3 { color: #7f8c8d; margin-top: 20px; }
        code { background: #f4f4f4; padding: 2px 6px; border-radius: 4px; }
        .note { background: #e3f2fd; border-left: 4px solid #2196f3; padding: 15px; margin: 20px 0; }
        .warning { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; }
        table { width: 100%; border-collapse: collapse; margin: 20px 0; }
        th, td { border: 1px solid #ddd; padding: 10px; text-align: left; }
        th { background: #f5f5f5; }
    </style>
</head>
<body>
<h1>📈 Настройка курсов обмена</h1>

<h2>Двухуровневая система курсов</h2>

<h3>1. Внешние курсы (External Rates)</h3>
<p><strong>Источник:</strong> Рыночные данные, получаемые автоматически из внешних API.</p>
<p><strong>Содержат:</strong> "Сырые" данные с биржи:</p>
<ul>
    <li><strong>external_rate</strong> - среднерыночный курс</li>
    <li><strong>bid_price</strong> - цена покупки (зеленый стакан)</li>
    <li><strong>ask_price</strong> - цена продажи (красный стакан)</li>
    <li><strong>volume_24h</strong> - объем торгов за 24 часа</li>
    <li><strong>change_24h</strong> - изменение цены за 24 часа (%)</li>
    <li><strong>spread</strong> - разница между ask и bid</li>
</ul>
<p><strong>Управление:</strong> Обновляются автоматически по расписанию (каждый час). Ручное редактирование не предусмотрено.</p>

<h3>2. Курсы обмена (Exchange Rates)</h3>
<p><strong>Назначение:</strong> Конечный курс, который видит клиент на сайте.</p>
<p><strong>Содержат:</strong> Настройки для конкретной пары валют:</p>
<ul>
    <li><strong>Ручной курс</strong> - фиксированное значение</li>
    <li><strong>Использовать внешний курс как базу</strong> - галочка для применения наценки</li>
    <li><strong>Наценка/скидка %</strong> - процент к внешнему курсу</li>
    <li><strong>Мин/макс сумма</strong> - лимиты для этой пары</li>
    <li><strong>Приоритет</strong> - чем выше число, тем выше приоритет</li>
</ul>

<div class="note">
    <strong>📝 Примечание:</strong> Запись в exchange_rates может ссылаться на запись в external_rates через поле external_rate_id.
    Если стоит галочка "Использовать внешний курс", поле "Ручной курс" игнорируется.
</div>

<h2>Типы курсов обмена</h2>

<table>
    <thead>
    <tr><th>Тип курса</th><th>Как рассчитывается</th><th>Когда использовать</th></tr>
    </thead>
    <tbody>
    <tr>
        <td><strong>Внешний + наценка</strong></td>
        <td>Цена из стакана × (1 + наценка%)</td>
        <td>Для автоматического следования рынку со своей наценкой</td>
    </tr>
    <tr>
        <td><strong>Ручной (фиксированный)</strong></td>
        <td>Игнорирует внешние API. Всегда показывает фиксированное значение</td>
        <td>Акции, специальные предложения</td>
    </tr>
    <tr>
        <td><strong>Партнерский внешний</strong></td>
        <td>Использует API партнера (если указан) или общий API</td>
        <td>Для партнеров с собственным источником курсов</td>
    </tr>
    </tbody>
</table>

<h2>Создание курса обмена</h2>
<ol>
    <li>Перейдите в раздел <strong>Курсы обмена</strong></li>
    <li>Нажмите <strong>Добавить курс</strong> в правом верхнем углу</li>
    <li>Выберите:
        <ul>
            <li><strong>Партнер</strong> (если оставить пустым - курс будет общим)</li>
            <li><strong>Из валюты</strong> - что отдает клиент</li>
            <li><strong>В валюту</strong> - что получает клиент</li>
        </ul>
    </li>
    <li>Выберите тип курса:
        <ul>
            <li>Для ручного курса: заполните поле <strong>Ручной курс</strong></li>
            <li>Для внешнего курса: поставьте галочку <strong>Использовать внешний курс как базу</strong> и укажите наценку</li>
        </ul>
    </li>
    <li>Укажите лимиты (мин/макс сумму)</li>
    <li>Нажмите <strong>Сохранить</strong></li>
</ol>

<h2>Массовое редактирование общих курсов</h2>
<p>Для удобства администрирования доступно массовое редактирование всех общих курсов в одной таблице:</p>
<ol>
    <li>Перейдите в раздел <strong>Курсы обмена</strong></li>
    <li>Прокрутите вниз до блока <strong>"Настройка общих курсов обмена"</strong></li>
    <li>В таблице вы можете:
        <ul>
            <li>Редактировать существующие курсы</li>
            <li>Добавлять новые строки кнопкой <strong>"Добавить курс"</strong></li>
            <li>Удалять строки кнопкой <strong><i class="fas fa-trash"></i></strong></li>
        </ul>
    </li>
    <li>После внесения изменений нажмите <strong>Сохранить все курсы</strong></li>
</ol>

<div class="warning">
    <strong>⚠️ Важно:</strong> В режиме массового редактирования все старые общие курсы удаляются и заменяются новыми.
    Сохраняйте изменения только после полной настройки всех необходимых пар.
</div>

<h2>Обновление внешних курсов из API</h2>
<p>Внешние курсы обновляются автоматически по расписанию (каждый час). Также можно обновить вручную:</p>
<ol>
    <li>Перейдите в раздел <strong>Курсы обмена</strong></li>
    <li>Нажмите кнопку <strong>Обновить курсы</strong> в правом верхнем углу</li>
    <li>Выберите API источник из выпадающего списка или используйте "Все активные API"</li>
    <li>Подтвердите обновление</li>
</ol>

<div class="note">
    <strong>📝 Примечание:</strong> При обновлении из API старые внешние курсы не удаляются, а обновляются.
    Если API недоступен, старые курсы сохраняются.
</div>

<h2>Просмотр стакана заявок (Order Book)</h2>
<p>Для каждой валютной пары доступен просмотр стакана заявок (bid/ask):</p>
<ol>
    <li>Перейдите в раздел <strong>Курсы обмена → Внешние курсы</strong></li>
    <li>Нажмите кнопку <strong><i class="fas fa-chart-bar"></i></strong> (иконка графика) в строке нужной пары</li>
    <li>В модальном окне отобразится:
        <ul>
            <li><strong>Bid</strong> - лучшие цены покупки (зеленый стакан)</li>
            <li><strong>Ask</strong> - лучшие цены продажи (красный стакан)</li>
            <li><strong>Spread</strong> - разница между ask и bid</li>
            <li><strong>Топ-5 заявок</strong> - по 5 лучших цен покупки и продажи</li>
        </ul>
    </li>
</ol>

<h2>Диагностика проблем с курсами</h2>

<table>
    <thead>
    <tr><th>Симптом</th><th>Решение</th></tr>
    </thead>
    <tbody>
    <tr>
        <td>Курс на сайте "Загружается" или не отображается</td>
        <td>1. Проверить, есть ли активная запись в exchange_rates для нужной пары<br>2. Проверить, заполнено ли поле rate или настроено use_external_rate</td>
    </tr>
    <tr>
        <td>Курс не обновляется, хотя стоит автообновление</td>
        <td>1. Проверить, что связанная запись в external_rates существует и не устарела<br>2. Проверить, работает ли крон команда <code>rates:update-from-apis</code></td>
    </tr>
    <tr>
        <td>У партнера свой курс, но применяется глобальный</td>
        <td>1. Проверить, что у партнера есть активный курс с более высоким priority<br>2. Проверить, что курс партнера активен (is_active = true)</td>
    </tr>
    </tbody>
</table>

</body>
</html>