From 01061b44062d0c3c8fd7ce039df6c80c3e3a5a57 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Thu, 8 Oct 2026 09:19:43 +0700 Subject: [PATCH] =?UTF-8?q?chore(test):=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D1=82=D1=8C=20=D0=BA=D0=BE=D0=BD=D1=84=D0=BB=D0=B8?= =?UTF-8?q?=D0=BA=D1=82=D1=8B=20speed=20=D0=B8=20=D0=B1=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B8=20PostgreSQL=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=81=D1=82=D0=B5=D0=BD=D0=B4=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-external-acceptance.md | 6 +- docs/ux-ui-plan.md | 4 +- docs/ux-ui-progress.md | 16 +- docs/ux-ui-stage-12.md | 16 +- docs/ux-ui-test-server.md | 4 + .../acceptance/speed-context-2026-10-08.json | 155 ++++++++++++++++++ 6 files changed, 196 insertions(+), 5 deletions(-) create mode 100644 docs/ux-ui/acceptance/speed-context-2026-10-08.json diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 30b19af7..38df7c39 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -1,6 +1,6 @@ # UX/UI: протокол внешней приёмки 12.5 -Статус на2026-10-08: backend/frontend8782054, backend healthy. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md). +Статус на2026-10-08: backend/frontend8782054, backend healthy. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser race открыт. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md). ## Паспорт стенда @@ -129,3 +129,7 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove ## Real browser unknown и deployment — 2026-10-08 12.5.22: [real browser speed unknown](ux-ui/acceptance/browser-speed-unknown-2026-10-08.json) подтвердил snapshot42, видимый unknown/runId, reconciliation к SQL history done, снятие предупреждения, native1/POST1/JS0/320fits. HTTP/RouterOS-моков нет; COMMIT acknowledgement fault введён на node-pg boundary, физический network disconnect не проверен. [Оба образа8782054 развёрнуты](ux-ui/acceptance/deployed-8782054-2026-10-08.json), [пять экранов](ux-ui/acceptance/deploy-browser-8782054-2026-10-08.json) прошли. Основная БД не восстанавливалась, контроль сохранён. Следующий12.5.23 — ROS-8/9: preflight/late-context changes на реальном PG/native. Полный12.5 открыт. + +## Real speed context — 2026-10-08 + +12.5.23 [ROS-8/9 API/SQL/native evidence](ux-ui/acceptance/speed-context-2026-10-08.json): семь preflight409/bandwidth0, enable/reorder сохраняют fixture0; три TCPtransmit3s теста при late change/delete/row lock. Фактическая history done сохранена без stale probe association, новый snapshot null. Scheduler admission закрыт в isolated process до fixture setup; основной backend8782054healthy/история5 сохранены, testprobes0/containerудалён. Browser race и multi-instance открыты. Следующий12.5.24 — browser-смена контекста вторым клиентом. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 54991a1a..a362e172 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-08: 12.5.22 завершён — backend и frontend source8782054 собраны и развёрнуты, backend healthy/version1.0.0-test.8782054. Real browser speed unknown→history done прошёл на выделенной БД без HTTP/RouterOS-моков; пять основных экранов проверены на ПК/320px. Следующий 12.5.23 — ROS-8/9: preflight конфликт и изменение параметров пробы во время native-теста в выделенной БД. Полный этап12.5 открыт. +Актуальное продолжение 2026-10-08: 12.5.23 завершён — ROS-8/9 проверены на реальном PG/native в выделенной БД: семь preflight409 без bandwidth-команды, zero/enable/reorder, поздняя смена и удаление пробы, два писателя под row lock. История фактического запуска сохранена без stale probe association; новый snapshot неизвестен. Runtime8782054 healthy. Следующий12.5.24 — browser-сценарий изменения speed-контекста вторым клиентом во время теста. Полный12.5 открыт. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-08 -Этапы0–11 завершены в описанных локальных границах. Этап12 остаётся открытым. На161.104.46.222 развёрнуты backend/frontend8782054; два CHR подключены. PG backup/restore/rollback, single-instance quiescence, JWT/RBAC и browser restore приняты в границах журнала. PG-8 проверен с настоящими PG/native и введённой после COMMIT ошибкой подтверждения; новый browser UI сохраняет snapshot и сверяет историю. Следующий12.5.23 — ROS-8/9: конфликты и изменения speed-контекста. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) сохраняют точные доказательства и ограничения. +Этапы0–11 завершены в описанных локальных границах. Этап12 остаётся открытым. На161.104.46.222 развёрнуты backend/frontend8782054; два CHR подключены. PG backup/restore/rollback, single-instance quiescence, JWT/RBAC и browser restore приняты в границах журнала. PG-8 проверен с настоящими PG/native и введённой после COMMIT ошибкой подтверждения; новый browser UI сохраняет snapshot и сверяет историю. ROS-8/9 API/SQL/native приняты в описанных границах. Следующий12.5.24 — browser-смена контекста вторым клиентом во время native-теста. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) сохраняют точные доказательства и ограничения. Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 49eaa0ea..71cf74c2 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-08: 12.5.22 завершён — backend и frontend source8782054 собраны и развёрнуты, backend healthy/version1.0.0-test.8782054. Real browser speed unknown→history done прошёл на выделенной БД без HTTP/RouterOS-моков; пять основных экранов проверены на ПК/320px. Следующий 12.5.23 — ROS-8/9: preflight конфликт и изменение параметров пробы во время native-теста в выделенной БД. Полный этап12.5 открыт. +Актуальное продолжение 2026-10-08: 12.5.23 завершён — ROS-8/9 проверены на реальном PG/native в выделенной БД: семь preflight409 без bandwidth-команды, zero/enable/reorder, поздняя смена и удаление пробы, два писателя под row lock. История фактического запуска сохранена без stale probe association; новый snapshot неизвестен. Runtime8782054 healthy. Следующий12.5.24 — browser-сценарий изменения speed-контекста вторым клиентом во время теста. Полный12.5 открыт. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -34,6 +34,20 @@ | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в описанных границах:12.3.83,main1186/1186,context221/221. Этап остаётся в работе: стенд12.5.1–3 развёрнут,bootstrap/smoke проверены;остальные сценарии12.5 не выполнены. | +## 12.5.23 — реальный конфликт speed-контекста и конкурентные записи (2026-10-08) + +[Evidence ROS-8/9](ux-ui/acceptance/speed-context-2026-10-08.json): актуальный backend image/source8782054, PostgreSQL18.6/mmapp_acceptance_20261007, реальные HTTP PUT/POST и CHR1→CHR2. HTTP/RouterOS ответы не подменялись; wrapper только считал bandwidth-команды и отмечал их начало/окончание. Перед fixture setup проверены имя выделенной БД и отсутствие проб. + +Семь preflight конфликтов: смена пары, srcInterface, dstInterface, протокола, направления, длительности и удалённая до запуска проба. Каждый POST409, bandwidthCalls0; существующий snapshot не изменён. История содержит error для отклонённого запроса с probeIdnull, без привязки к новому контексту. PUT enable/reorder сохранил lastStatusdone и измеренный0; нулевой baseline был явно подготовлен как DB fixture, не выдан за результат RouterOS. + +Три реальных коротких TCP transmit3s команды (по одной на case): объединённая смена пары/интерфейсов/протокола/направления/длительности; удаление пробы; конкуренция записи конфигурации и результата при внешнем SELECT FOR UPDATE. В первых двух изменение конфигурации через HTTP завершилось до получения native response. В третьем отдельный observer увидел двух writers с wait_event_type Lock до освобождения строки. Все POST200; одна history done с фактическими src1/dst2/TCP/transmit3 и probeIdnull. Новый snapshot остался lastStatus/lastTx/lastRunAtnull, удалённая проба не создана заново. TX2815.169992/2841.242408/3247.053056, RXnull — функциональные результаты, не benchmark. + +Первый пробный прогон обнаружил помеху harness: PUT refreshScheduler запускает немедленный speed job, который изменил fixture snapshot. В принятой матрице production scheduler admission закрыт до fixture setup только внутри isolated test process; таймеры не подменялись, основной scheduler не трогали. Этот подготовительный прогон не объявлен passed. Длинный terminal input отклонён инструментом; сценарий передан отдельным файлом, без изменения разрешений. + +После принятой матрицы удалены временные пробы, count0; контейнер завершён и удалён --rm, locks освобождены, scheduler/listener/background/pool штатно закрыты. Исторические результаты остались только в выделенной БД. Основной backend8782054healthy/version1.0.0-test.8782054 и пять записей основной speed-истории сохранены. Продуктовый код не менялся; повторная сборка не требовалась. + +ROS-8/9 приняты в перечисленных API/SQL/native границах: отдельные поля проверены preflight, поздняя смена объединяет параметры, row lock — один backend. Browser race, каждый поздний параметр по отдельности и multi-instance не проверены. Следующий12.5.24 — browser-сценарий смены speed-контекста вторым клиентом во время теста. Полный12.5 открыт; план/паспорт/протокол обновлены, локальный коммит без push. + ## 12.5.22 — новые Docker-образы и real browser speed unknown (2026-10-08) Из зафиксированного source8782054078304f36cc611876af2d17f87b857f60 подготовлены отдельные frontend/backend contexts и последовательно собраны production-образы на Debian-стенде. Frontend production build и проверка TypeScript внутри Docker прошли; backend contracts/TypeScript build прошёл. Незакоммиченные изменения, .env, ключи и локальные node_modules в сборку не передавались. Образы не публиковались. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 6aa693dd..c3907736 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-08: 12.5.22 завершён — backend и frontend source8782054 собраны и развёрнуты, backend healthy/version1.0.0-test.8782054. Real browser speed unknown→history done прошёл на выделенной БД без HTTP/RouterOS-моков; пять основных экранов проверены на ПК/320px. Следующий 12.5.23 — ROS-8/9: preflight конфликт и изменение параметров пробы во время native-теста в выделенной БД. Полный этап12.5 открыт. +Актуальное продолжение 2026-10-08: 12.5.23 завершён — ROS-8/9 проверены на реальном PG/native в выделенной БД: семь preflight409 без bandwidth-команды, zero/enable/reorder, поздняя смена и удаление пробы, два писателя под row lock. История фактического запуска сохранена без stale probe association; новый snapshot неизвестен. Runtime8782054 healthy. Следующий12.5.24 — browser-сценарий изменения speed-контекста вторым клиентом во время теста. Полный12.5 открыт. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -1182,3 +1182,17 @@ SchedulerSnapshotError раньшеигнорировалruns[].okfalse уuptime [После развёртывания](ux-ui/acceptance/deploy-browser-8782054-2026-10-08.json) dashboard/servers/uptime-speed/settings/filters200, ПК и320px,0JSerrors/0API>=400, HTTP-моков нет. Первая попытка чтения локального URL отказала из-за завершившегося прежнего SSH-туннеля; туннель3000/8000 восстановлен, повторная проверка прошла. Временные frontend/backend/network/3018-tunnel удалены; тестовая probe acceptance-browser-speed удалена, исторический результат остался только в выделенной БД. Основной туннель и тестовый сервер оставлены для продолжения. PG-8 browser unknown/reconciliation принят в этих границах. PortalSSO, физический TCP fault, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. Следующий 12.5.23 — ROS-8/9: preflight409 и конкурентное изменение контекста speed-пробы на реальном PG/native. План, паспорт и протокол обновлены. Локальный коммит без push. + +## 12.5.23 — реальный конфликт speed-контекста и конкурентные записи (2026-10-08) + +[Evidence ROS-8/9](ux-ui/acceptance/speed-context-2026-10-08.json): актуальный backend image/source8782054, PostgreSQL18.6/mmapp_acceptance_20261007, реальные HTTP PUT/POST и CHR1→CHR2. HTTP/RouterOS ответы не подменялись; wrapper только считал bandwidth-команды и отмечал их начало/окончание. Перед fixture setup проверены имя выделенной БД и отсутствие проб. + +Семь preflight конфликтов: смена пары, srcInterface, dstInterface, протокола, направления, длительности и удалённая до запуска проба. Каждый POST409, bandwidthCalls0; существующий snapshot не изменён. История содержит error для отклонённого запроса с probeIdnull, без привязки к новому контексту. PUT enable/reorder сохранил lastStatusdone и измеренный0; нулевой baseline был явно подготовлен как DB fixture, не выдан за результат RouterOS. + +Три реальных коротких TCP transmit3s команды (по одной на case): объединённая смена пары/интерфейсов/протокола/направления/длительности; удаление пробы; конкуренция записи конфигурации и результата при внешнем SELECT FOR UPDATE. В первых двух изменение конфигурации через HTTP завершилось до получения native response. В третьем отдельный observer увидел двух writers с wait_event_type Lock до освобождения строки. Все POST200; одна history done с фактическими src1/dst2/TCP/transmit3 и probeIdnull. Новый snapshot остался lastStatus/lastTx/lastRunAtnull, удалённая проба не создана заново. TX2815.169992/2841.242408/3247.053056, RXnull — функциональные результаты, не benchmark. + +Первый пробный прогон обнаружил помеху harness: PUT refreshScheduler запускает немедленный speed job, который изменил fixture snapshot. В принятой матрице production scheduler admission закрыт до fixture setup только внутри isolated test process; таймеры не подменялись, основной scheduler не трогали. Этот подготовительный прогон не объявлен passed. Длинный terminal input отклонён инструментом; сценарий передан отдельным файлом, без изменения разрешений. + +После принятой матрицы удалены временные пробы, count0; контейнер завершён и удалён --rm, locks освобождены, scheduler/listener/background/pool штатно закрыты. Исторические результаты остались только в выделенной БД. Основной backend8782054healthy/version1.0.0-test.8782054 и пять записей основной speed-истории сохранены. Продуктовый код не менялся; повторная сборка не требовалась. + +ROS-8/9 приняты в перечисленных API/SQL/native границах: отдельные поля проверены preflight, поздняя смена объединяет параметры, row lock — один backend. Browser race, каждый поздний параметр по отдельности и multi-instance не проверены. Следующий12.5.24 — browser-сценарий смены speed-контекста вторым клиентом во время теста. Полный12.5 открыт; план/паспорт/протокол обновлены, локальный коммит без push. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index a9cd9295..bf0f0911 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -137,3 +137,7 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222 ## Обновление обоих образов — 2026-10-08 12.5.22: [deployment](ux-ui/acceptance/deployed-8782054-2026-10-08.json), [real browser speed unknown](ux-ui/acceptance/browser-speed-unknown-2026-10-08.json), [пять экранов](ux-ui/acceptance/deploy-browser-8782054-2026-10-08.json). Backend/frontend8782054, backend healthy. MMAPP_IMAGE_TAG и BACKEND_IMAGE_TAG равны ux-8782054. Приватный pre-update backup и конфигурация сохранены только на сервере; основная БД не восстанавливалась, контроль совпал. Temporarycontainers/network/3018 закрыты; основной SSH-туннель3000/8000 восстановлен. AUTHfalse/loopback ports сохранены. Следующий12.5.23 — ROS-8/9 на выделенной БД. + +## Real speed context — 2026-10-08 + +12.5.23 [ROS-8/9 API/SQL/native evidence](ux-ui/acceptance/speed-context-2026-10-08.json): семь preflight409/bandwidth0, enable/reorder сохраняют fixture0; три TCPtransmit3s теста при late change/delete/row lock. Фактическая history done сохранена без stale probe association, новый snapshot null. Scheduler admission закрыт в isolated process до fixture setup; основной backend8782054healthy/история5 сохранены, testprobes0/containerудалён. Browser race и multi-instance открыты. Следующий12.5.24 — browser-смена контекста вторым клиентом. diff --git a/docs/ux-ui/acceptance/speed-context-2026-10-08.json b/docs/ux-ui/acceptance/speed-context-2026-10-08.json new file mode 100644 index 00000000..a334777d --- /dev/null +++ b/docs/ux-ui/acceptance/speed-context-2026-10-08.json @@ -0,0 +1,155 @@ +{ + "date": "2026-10-08", + "source": "8782054078304f36cc611876af2d17f87b857f60", + "database": "mmapp_acceptance_20261007", + "httpMocks": false, + "routerOsMocks": false, + "preflight": [ + { + "case": "pair", + "status": 409, + "nativeCalls": 0, + "snapshotUnchanged": true, + "historyStatus": "error", + "probeAssociation": null + }, + { + "case": "src-interface", + "status": 409, + "nativeCalls": 0, + "snapshotUnchanged": true, + "historyStatus": "error", + "probeAssociation": null + }, + { + "case": "dst-interface", + "status": 409, + "nativeCalls": 0, + "snapshotUnchanged": true, + "historyStatus": "error", + "probeAssociation": null + }, + { + "case": "protocol", + "status": 409, + "nativeCalls": 0, + "snapshotUnchanged": true, + "historyStatus": "error", + "probeAssociation": null + }, + { + "case": "direction", + "status": 409, + "nativeCalls": 0, + "snapshotUnchanged": true, + "historyStatus": "error", + "probeAssociation": null + }, + { + "case": "duration", + "status": 409, + "nativeCalls": 0, + "snapshotUnchanged": true, + "historyStatus": "error", + "probeAssociation": null + }, + { + "case": "deleted-before-command", + "status": 409, + "nativeCalls": 0, + "probeAbsent": true, + "historyStatus": "error", + "probeAssociation": null + } + ], + "cases": [ + { + "case": "enable-reorder", + "measuredZeroPreserved": true, + "nativeCalls": 0 + }, + { + "case": "change", + "status": 200, + "nativeCalls": 1, + "mutationBeforeNativeResponse": true, + "rowLocksObserved": false, + "newSnapshotUnchanged": true, + "history": { + "id": "acceptance-live-change-1791425767822", + "probe_id": null, + "src_server_id": 1, + "dst_server_id": 2, + "src_interface": "", + "dst_interface": "", + "protocol": "tcp", + "direction": "transmit", + "duration_sec": 3, + "status": "done", + "tx_avg_mbps": 2815.169992, + "rx_avg_mbps": null + } + }, + { + "case": "delete", + "status": 200, + "nativeCalls": 1, + "mutationBeforeNativeResponse": true, + "rowLocksObserved": false, + "newSnapshotUnchanged": true, + "history": { + "id": "acceptance-live-delete-1791425777959", + "probe_id": null, + "src_server_id": 1, + "dst_server_id": 2, + "src_interface": "", + "dst_interface": "", + "protocol": "tcp", + "direction": "transmit", + "duration_sec": 3, + "status": "done", + "tx_avg_mbps": 2841.242408, + "rx_avg_mbps": null + } + }, + { + "case": "row-lock", + "status": 200, + "nativeCalls": 1, + "mutationBeforeNativeResponse": null, + "rowLocksObserved": true, + "newSnapshotUnchanged": true, + "history": { + "id": "acceptance-live-row-lock-1791425788084", + "probe_id": null, + "src_server_id": 1, + "dst_server_id": 2, + "src_interface": "", + "dst_interface": "", + "protocol": "tcp", + "direction": "transmit", + "duration_sec": 3, + "status": "done", + "tx_avg_mbps": 3247.0530559999997, + "rx_avg_mbps": null + } + } + ], + "nativeCalls": 3, + "limits": [ + "Three short real TCP transmit3s commands; not throughput benchmark", + "Preflight individual fields; late change combines pair/interfaces/protocol/direction/duration", + "Externally held row released after observing two blocked writers; single backend process", + "Zero baseline seeded as a database fixture; native results not fabricated", + "Scheduler admission paused before fixture setup to prevent refresh-triggered native jobs", + "No browser context-race or multi-instance acceptance" + ], + "cleanup": { + "testProbesRemaining": 0, + "temporaryContainerRemoved": true, + "mainHistoryCountUnchanged": 5, + "mainBackendVersion": "1.0.0-test.8782054", + "mainBackendHealth": "healthy" + }, + "exploration": "Initial fixture run failed because PUT refresh started a scheduler speed job and changed baseline. Production scheduler admission was paused in isolated process before setup for accepted matrix." +}