Files
MikrotikManager/docs/ux-ui/optimizer-observed-audit-2026-10-07.md

5.0 KiB
Raw Permalink Blame History

Аудит достоверности скоростных снимков оптимизатора

Дата: 2026-10-07. Это анализ кода и первичных RouterOS документов, без запуска сетевых тестов или PostgreSQL.

Первичный источник: RouterOS bandwidth-test CLI (на момент чтения версия документации 7.26). TX относится к отправке клиента, RX — к его приёму. Успех HTTP-запроса отдельно не определяет терминальный статус теста.

Проблема Доказательство в проекте Последствие Следующий блок
TX/RX перепутаны с DL/UL backend/src/services/uptime-speed-service.ts: тест выполняет srcClient, TX/RX сохраняются напрямую. lib/route-optimizer-data.ts: TX читается как DL и RX как UL Для Home→JH download к Home соответствует RX, upload от Home — TX. Для обратной пробы Exit→JH стороны нужно развернуть 12.3.71: исправить отображение и модельные лимиты, проверить forward/reverse, null/zero/asymmetric rates
Сопоставление скорости конкретному WAN не подтверждено MikrotikClient.bandwidthTest принимает address/protocol/direction/duration/user/password; srcInterface туда не передаётся. Он используется в after-ping. srcAddress вычисляется для метаданных, не передаётся команде Даже выбранный source-интерфейс не доказывает WAN bandwidth-test. Wildcard-проба тем более не измеряет выбранный WAN. Скорость относится к паре устройств; привязка — модель 12.3.72: показать область измерения и границу сопоставления; не добавлять недокументированные RouterOS параметры/временные routing rules
Отсутствие скорости превращается в zero parseRateToMbps возвращает0 для пустого/неразобранного поля. `txAvg mean
Терминальный статус bandwidth-test не проверяется После bandwidthTest producer агрегирует поля, записывает status:done без проверки последнего status. Документация перечисляет auth/connect/busy/disconnected ошибки HTTP200 с терминальным отказом может выглядеть выполненным тестом; пустой ответ не доказывает завершение 12.3.74: pure result interpreter и validation до success write, сохраняя pending/unknown пояснение и прежние команды/права

Нулевой маршрутный каталог без WAN остаётся известным отсутствием модельных комбинаций, а не нулевым наблюдаемым трафиком. Исторические сохранённые0 нельзя автоматически считать неизвестными без исходного RouterOS ответа; массовую коррекцию/удаление данных не выполнять.

flowchart LR
  A["RouterOS на srcClient"] --> B["TX: отправка / RX: приём"]
  B --> C["Снимок пары устройств"]
  C --> D["Направление к Home: DL / от Home: UL"]
  C --> E["WAN: модельное сопоставление"]
  F["srcInterface"] --> G["after-ping / метаданные"]

Проверки по блокам: pure функции без DB/network side effects, live API e2e с подменой HTTP, TypeScript/lint/build и профильные context сценарии при изменениях общей основы. Изменение фактической маршрутизации или новая стратегия принудительного выбора WAN требует отдельного дизайна и внешней приёмки12.5; в этой серии таких изменений нет.