fix(uptime): точно разбирать составные длительности RTT

This commit is contained in:
Denozordec committed 2026-10-12 18:17:10 +07:00
1 parent 737e04a6a9
commit ca2b634743
9 files changed
+184 -24

No files matched your search

+12 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5
Актуальное продолжение 2026-10-12: завершён12.5.175 — real HTTP client/traffic producer→owned PostgreSQL→scheduler JSON→source confidence,9 SQL controls passed за9358ms; ownDB/role/container удалены. Backend ux-traffic175 deployed/healthy, frontend ux-ping173;1024 compiled parity,2live UI/3API passed. Следующий176 — проверить compound RouterOS RTT duration parser по сохранённым native payloads; legacy counters/history freshness остаются открыты. Этап12.5 открыт.
Актуальное продолжение 2026-10-12: завершён локальный12.5.176 — Ping RTT parser учитывает compound s/ms/us и отвергает numeric-prefix garbage; test:probes/backend build и offline replay2 native CHR payloads прошли. Стенд backend ux-traffic175/frontend ux-ping173;176 ещё не deployed. Следующий177 — owned SQL/HTTP Ping regression и backend deploy176 с compiled parity/health/browser. Legacy counters/history freshness и полная12.5 остаются открыты.
IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md).
@@ -696,7 +696,7 @@ flowchart LR
## 12.5.77 — основной блок IPsec (2026-10-09)
Актуальное продолжение 2026-10-12: завершён12.5.175 — real HTTP client/traffic producer→owned PostgreSQL→scheduler JSON→source confidence,9 SQL controls passed за9358ms; ownDB/role/container удалены. Backend ux-traffic175 deployed/healthy, frontend ux-ping173;1024 compiled parity,2live UI/3API passed. Следующий176 — проверить compound RouterOS RTT duration parser по сохранённым native payloads; legacy counters/history freshness остаются открыты. Этап12.5 открыт.
Актуальное продолжение 2026-10-12: завершён локальный12.5.176 — Ping RTT parser учитывает compound s/ms/us и отвергает numeric-prefix garbage; test:probes/backend build и offline replay2 native CHR payloads прошли. Стенд backend ux-traffic175/frontend ux-ping173;176 ещё не deployed. Следующий177 — owned SQL/HTTP Ping regression и backend deploy176 с compiled parity/health/browser. Legacy counters/history freshness и полная12.5 остаются открыты.
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
@@ -1997,3 +1997,13 @@ Production backend build прошёл локально и на Debian; [1024 com
[Read-only live smoke](ux-ui/acceptance/traffic-confidence-deployed-2026-10-12.json): /traffic1440/320, traffic servers200/no pageerrors/no overflow; /servers,/traffic/servers,/scheduler/runs?jobKey=traffic200. Это проверка доступности/совместимости UI, не доказательство доставки Telegram или возникновения всех edge cases в main DB. Нет manual scheduler run/config/password/message writes; автоматический scheduler остаётся штатным. Пароли CHR не менялись; native Ping4/4 в обе стороны подтверждён ранее в173, здесь повторно не заявлен.
Следующий176 — inspect native compound durations53ms561us и parseFloat prefix fallback в Ping parser; положительные source payloads уже сохранены в173, не требуются новые сетевые сущности для первоначального доказательства. Legacy invalid traffic counters/raw-rate consumers, history freshness/failed attempt barriers, interface identity/config changes, scale/multiple backend и внешние интеграции остаются условиями12.5. Не считать guard174–175 полной приёмкой трафика. Локальный коммит без push.
## 12.5.176 — точность составных длительностей Ping RTT (2026-10-12)
В native payloads173 обоих CHR есть53ms561us и другие ms/us. Прежний parseFloat fallback терял microsecond component; например53ms900us превращалось в53ms вместо rounded54ms,1s53ms561us — в1ms вместо1054ms. parsePingTimeMs теперь разбирает ordered s/ms/us, простые decimal units, comma decimal, clock c minute/second<60 и полную bare millisecond numeric string; duplicate/reverse units, negative, exponent, unknown suffix и numeric-prefix garbage возвращаютnull. Значения хранят дробную точность до прежнего integer rounding общего RTT. Success-reply fallback теперь требует валидную duration; garbage time без explicit counts/loss не изображает успешное измерение. Summary с подтверждённым packet loss может иметь RTTnull — loss от этого не подменяется.
Добавлены unit positive/negative controls, genuine0,53ms900us→54 и1s53ms561us→1054. Offline replay двух сохранённых настоящих CHR responses173 подтвердил дробные значения53.xms и прежний правильный rounded mean53ms/0%loss. Это повторная интерпретация записанного ответа, не новый физический Ping. [Local/native replay protocol](ux-ui/acceptance/ping-duration-local-2026-10-12.json). Файл evidence optional в test runner: если отсутствует в image, replay явно skipped, форматные guards продолжают исполняться.
Backend production build и полный профиль test:probes прошли (8.0s): HTTP/allowlist/cancellation/actual local fake RouterOS POST, parser/observations. SQL test явно skipped локально без own database; предыдущая SQL173 не выдана за приёмку изменённого176. Это не подтверждает полную RouterOS duration grammar или malformed summary loss/count consistency; остальные источники unknown/provenance и legacy rows остаются открыты. Новые Docker build/deploy/remote SQL на этом остатке квоты не запускались.
Следующий177 — owned SQL/HTTP regression Ping8 на изменённом parser, при необходимости добавить compound/raw-garbage producer cases; затем incremental backend build, compiled parity, deploy и read-only browser smoke. Backend удалённого стенда остаётся ux-traffic175 healthy, frontend ux-ping173. Отдельный реальный success replay не заменяет SQL error persistence. Конфигурация/пароли CHR, production DB, отправки сообщений этим блоком не менялись. Все изменения176 сохранены локальным коммитом без push;12.5 не закрыта.