fix(optimizer): убрать лишние поиски и расчёты маршрутов

This commit is contained in:
Denozordec committed 2026-10-07 13:16:12 +07:00
1 parent 057f0d352a
commit 4fee9e371f
8 files changed
+164 -9

No files matched your search

+9
View File
@@ -190,3 +190,12 @@ Pure child CPU1000: equal1217.5→15.6ms,varied7967.5→14.5ms,freshness10с tim
16 main browser +2 повторных новых профиля после copy-уточнения прошли:1000JH и1000Exit отдельно (без опасного cross product), repetitions/two sites/1000sites/long80chars/unknown/empty/offline/disabled/503 cache/recovery.320px без overflow, caption≤80px, scoped WCAG axe passed. Non-incremental TypeScript до dev, full page/helper/test lint и окончательный production build прошли. ReUI API/validate_usage проверены; primitive/theme не изменены. Historical9 optimizer PNG восстановлены, новые docs/ux-ui/screens/optimizer-sites-{jump-host,exit-node}-320.png просмотрены.
Далее12.3.68 pure child CPU profile full-route product≤100000/timeout10s/memory cap; не грузить тяжёлый baseline в UI. Остаточные DFS worst-case/full-route memory/native selector и внешняя12.5 не объявляются принятыми. Общая main/context регрессия относится к ранее записанным HEAD; текущий footer delta проверен профильными16+2.
## 12.3.69 — lookup leg и исключение ненужных расчётов без WAN
2026-10-07. WAN/JH map сохраняет первый matching leg, lookup вынесен из Exit loop. JH/Exit legs не строятся, если нет настроенного WAN: их не может использовать ни один full route. Порядок WAN/JH/Exit, сортировка/ties, raw source identity, all routes и unknown community indices сохранены.13pure tests прошли, включая1230 assignment oracle fixtures и новые проверки8route probe ownership/ties/zeroWAN.12browser (large homes/routes/observed/tables) passed; non-incremental typecheck до dev, targeted lint и production build успешны.
CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms. До lookup ~284–329ms и267–287ms. Дополнительный zeroWAN baseline0×100×1000 строил100000unused JH/Exit legs:45.6ms/heapDelta24.6MB; после skip11.5ms/0.17MB. Новый profiler допускаетWAN0 и ограничивает также JH×Exit≤100000. HeapDelta не peak/retained memory; полный nonzero product по-прежнему хранится и сортируется в памяти. Evidence docs/ux-ui/acceptance/optimizer-routes-final-2026-10-07.json содержит source SHA256 и точные результаты.
После чтения реального producer обнаружены следующие вопросы достоверности:source btest выполняется на srcClient,TX/RX экспортируются без переименования,optimizer пока читаетTX какDL. srcInterface передаётся только after-ping, не bandwidthTest; поле не доказывает WAN скоростного теста. Producer parser/fallback отсутствующую скорость превращает в0, а explicit avg0 может заменяться mean series. Следующий12.3.70 фиксирует аудит с первичными RouterOS источниками и планирует точечные исправления данных/подписей. Команды/права/правила сетевых операций не менялись; real PG/RouterOS/integrations12.5 не выполнялись.
+1 -1
View File
@@ -1,6 +1,6 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-07: 12.3.68 baseline full routes сохранён: pure product1000/100000 под timeout10s/memory256MB, все route IDs/unknown сохранены. Следующий12.3.69: заменить повторный wanJhLegs.find на map с first-match семантикой и доказать route/source/tie эквивалентность. Затем аудит направлений TX/RX и привязки wildcard-проб; внешняя12.5 остаётся.
Актуальное продолжение 2026-10-07: 12.3.69 завершён: first-match WAN/JH map и skip JH/Exit без WAN,13pure+12browser/type/lint/build.100000routes≈44–50ms; zeroWAN heapDelta24.6MB→0.17MB. Следующий12.3.70: зафиксировать аудит TX/RX, WAN-binding и missing→0 producer по RouterOS docs/code; затем адресные исправления, без изменения команд/правил сетевых операций. Внешняя12.5 отдельно.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-04. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
+1 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-07: 12.3.68 baseline full routes сохранён: pure product1000/100000 под timeout10s/memory256MB, все route IDs/unknown сохранены. Следующий12.3.69: заменить повторный wanJhLegs.find на map с first-match семантикой и доказать route/source/tie эквивалентность. Затем аудит направлений TX/RX и привязки wildcard-проб; внешняя12.5 остаётся.
Актуальное продолжение 2026-10-07: 12.3.69 завершён: first-match WAN/JH map и skip JH/Exit без WAN,13pure+12browser/type/lint/build.100000routes≈44–50ms; zeroWAN heapDelta24.6MB→0.17MB. Следующий12.3.70: зафиксировать аудит TX/RX, WAN-binding и missing→0 producer по RouterOS docs/code; затем адресные исправления, без изменения команд/правил сетевых операций. Внешняя12.5 отдельно.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения.
+9
View File
@@ -774,3 +774,12 @@ Pure child CPU1000: equal1217.5→15.6ms,varied7967.5→14.5ms,freshness10с tim
2026-10-07. Pure child process без API/DB/браузера/сети, product≤100000/dimensions1–1000/timeout10s/V8heap256MB.1000WAN×1JH×1Exit1000routes≈16.9ms/heapDelta1.8MB;10×100×100100000routes≈329.6ms/22.0MB;100×10×100≈266.7ms/27.1MB. Первый измеренный прогон; точные повторные значения и source SHA256 в docs/ux-ui/acceptance/optimizer-routes-baseline-2026-10-07.json. Heap delta не peak/retained memory, время не production p95/SLA. Проверены count/first-last IDs/bestFirst/сохранение отсутствующих наблюдений. ESLint скрипта прошёл.
Baseline в UI не запускался. Повторный Array.find по1000wanJhLegs на каждую из100000комбинаций даёт лишние линейные сканирования. Следующий12.3.69: map lookup с сохранением первого matching leg и порядка routes/ties, профильный repeat. Полный product всё ещё хранится/сортируется в памяти; опасную произвольную размерность этот профиль не принимает. Далее аудит TX/RX и связи wildcard-пробы с конкретным WAN, прежде чем объявлять observed correctness закрытой. Внешняя12.5 отдельно.
## 12.3.69 — lookup leg и исключение ненужных расчётов без WAN
2026-10-07. WAN/JH map сохраняет первый matching leg, lookup вынесен из Exit loop. JH/Exit legs не строятся, если нет настроенного WAN: их не может использовать ни один full route. Порядок WAN/JH/Exit, сортировка/ties, raw source identity, all routes и unknown community indices сохранены.13pure tests прошли, включая1230 assignment oracle fixtures и новые проверки8route probe ownership/ties/zeroWAN.12browser (large homes/routes/observed/tables) passed; non-incremental typecheck до dev, targeted lint и production build успешны.
CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms. До lookup ~284–329ms и267–287ms. Дополнительный zeroWAN baseline0×100×1000 строил100000unused JH/Exit legs:45.6ms/heapDelta24.6MB; после skip11.5ms/0.17MB. Новый profiler допускаетWAN0 и ограничивает также JH×Exit≤100000. HeapDelta не peak/retained memory; полный nonzero product по-прежнему хранится и сортируется в памяти. Evidence docs/ux-ui/acceptance/optimizer-routes-final-2026-10-07.json содержит source SHA256 и точные результаты.
После чтения реального producer обнаружены следующие вопросы достоверности:source btest выполняется на srcClient,TX/RX экспортируются без переименования,optimizer пока читаетTX какDL. srcInterface передаётся только after-ping, не bandwidthTest; поле не доказывает WAN скоростного теста. Producer parser/fallback отсутствующую скорость превращает в0, а explicit avg0 может заменяться mean series. Следующий12.3.70 фиксирует аудит с первичными RouterOS источниками и планирует точечные исправления данных/подписей. Команды/права/правила сетевых операций не менялись; real PG/RouterOS/integrations12.5 не выполнялись.
@@ -0,0 +1,92 @@
{
"baseHead": "057f0d352a58d7a4abe4dca18d64dd3d93a002d6",
"sourceSha256": "4f6f3b8b9c82efefdb82a2e02a241f3ca557cc1c5d689eaa079e20178f872947",
"runs": [
{
"wanCount": 1000,
"jhCount": 1,
"exitCount": 1,
"combinations": 1000,
"memoryCapMb": 256,
"timeoutMs": 10000,
"totalMs": 267,
"status": 0,
"timedOut": false,
"result": {
"elapsedMs": 13.307500000000005,
"heapDeltaBytes": 1925224,
"wanJhLegs": 1000,
"routes": 1000,
"firstId": "1-w0-2-3",
"lastId": "1-w999-2-3",
"bestMatchesFirst": true,
"missingObservations": true
},
"error": ""
},
{
"wanCount": 10,
"jhCount": 100,
"exitCount": 100,
"combinations": 100000,
"memoryCapMb": 256,
"timeoutMs": 10000,
"totalMs": 303,
"status": 0,
"timedOut": false,
"result": {
"elapsedMs": 49.748999999999995,
"heapDeltaBytes": 27920816,
"wanJhLegs": 1000,
"routes": 100000,
"firstId": "1-w0-2-102",
"lastId": "1-w9-101-201",
"bestMatchesFirst": true,
"missingObservations": true
},
"error": ""
},
{
"wanCount": 100,
"jhCount": 10,
"exitCount": 100,
"combinations": 100000,
"memoryCapMb": 256,
"timeoutMs": 10000,
"totalMs": 288,
"status": 0,
"timedOut": false,
"result": {
"elapsedMs": 43.97179999999997,
"heapDeltaBytes": 22567496,
"wanJhLegs": 1000,
"routes": 100000,
"firstId": "1-w0-2-12",
"lastId": "1-w99-11-111",
"bestMatchesFirst": true,
"missingObservations": true
},
"error": ""
},
{
"wanCount": 0,
"jhCount": 100,
"exitCount": 1000,
"combinations": 0,
"memoryCapMb": 256,
"timeoutMs": 10000,
"totalMs": 278,
"status": 0,
"timedOut": false,
"result": {
"elapsedMs": 11.54419999999999,
"heapDeltaBytes": 168744,
"wanJhLegs": 0,
"routes": 0,
"bestMatchesFirst": true,
"missingObservations": true
},
"error": ""
}
]
}