From c24ad7810cc060b6484952d082604783a21d6f7a Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 7 Oct 2026 23:20:12 +0700 Subject: [PATCH] =?UTF-8?q?chore(test):=20=D0=B2=D1=8B=D1=8F=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=B2?= =?UTF-8?q?=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=20PostgreSQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-external-acceptance.md | 4 + docs/ux-ui-plan.md | 2 +- docs/ux-ui-progress.md | 14 ++- docs/ux-ui-stage-12.md | 14 ++- docs/ux-ui-test-server.md | 4 + .../acceptance/real-restore-2026-10-07.json | 107 ++++++++++++++++++ 6 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 docs/ux-ui/acceptance/real-restore-2026-10-07.json diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 8ac2743e..17b57521 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -89,3 +89,7 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove | ROS-1 | Заполнить при запуске | Очищенные native rows + GET истории + снимок UI | Не выполнен | Проверить transmit/receive/both | 12.5 закрывается после выполнения обязательных сценариев и разбора отказов на согласованном стенде. Подготовленный протокол, успешные browser/DI tests и автоматический axe-аудит не заменяют внешние результаты или ручную работу со screen reader. + +## Обнаруженный блокер restore — 2026-10-07 + +12.5.14 realAPI/sourcef1aac49 навыделеннойPG18.6 подтвердилadmission/drain,ноrestore400 из-заinheritedpartitionPRIMARY KEY при--clean. [Evidence/rollback controls](ux-ui/acceptance/real-restore-2026-10-07.json). PG-4 подтверждёнвграницахнастоящейSQLошибкииконтрольныхстрок/sequence/constraint; PG-3успех/последующийID иполныйPG-6 непроверены. Следующий12.5.15 исправляеттранзакционнуюочистку. Основнойruntime673e5ba сохранён. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index c1fc775a..bb0492d0 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,6 +1,6 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-07:12.5.13 завершён локально в части cache invalidation после подтверждённогоrestore. Проверен порядокbackground drain→restore→cache reset→consumer restart;22lifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild passed. Runtime673e5ba не обновлён. Следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment; PG-6/PG-3/4 ещёоткрыты. +Актуальное продолжение 2026-10-07:12.5.14 выполненкакреальнаяприёмка isolated API/sourcef1aac49. ОбнаружендефектPG-3:pg_restore --clean падаетнаinherited partition PRIMARY KEY. HTTP admission409/ожиданиеwrite иrollback контрольныхданныхподтверждены. Основнойruntime673e5ba сохранён. Следующий12.5.15 — исправитьтранзакционнуюочисткуразделов иповторитьrestore; PG-3/полныйPG-6 открыты. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-07. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index e7ce15d7..d5d31f06 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-07:12.5.13 завершён локально в части cache invalidation после подтверждённогоrestore. Проверен порядокbackground drain→restore→cache reset→consumer restart;22lifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild passed. Runtime673e5ba не обновлён. Следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment; PG-6/PG-3/4 ещёоткрыты. +Актуальное продолжение 2026-10-07:12.5.14 выполненкакреальнаяприёмка isolated API/sourcef1aac49. ОбнаружендефектPG-3:pg_restore --clean падаетнаinherited partition PRIMARY KEY. HTTP admission409/ожиданиеwrite иrollback контрольныхданныхподтверждены. Основнойruntime673e5ba сохранён. Следующий12.5.15 — исправитьтранзакционнуюочисткуразделов иповторитьrestore; PG-3/полныйPG-6 открыты. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -34,6 +34,18 @@ | 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.14 — реальный API restore: дефект очистки разделов и контроль rollback (2026-10-07) + +Временный docker compose run --rm --no-deps backend использовалcompiled dist sourcef1aac49, mount/app/backend/acceptance, DATABASE_URL толькоmmapp_acceptance_20261007, HTTP127.0.0.1:8014 внутриконтейнера. Основнойbackend/frontend не обновлялись. [Очищенный отчёт](ux-ui/acceptance/real-restore-2026-10-07.json); SHA256 переданногоcompiled archive совпалслокальным. РеальныйbuildApp иAPI routes работалибезHTTP mocks; startScheduler=false приinitial build, стандартныеdatabase operation restarts выполнялиреальныйrefreshScheduler/consumer lifecycle. + +GETbackup200/478810bytes/PGDMP полученвпамять безкопированиядампавGit. Отдельный тестовыйHTTP write handler менялretention14→16 подудерживаемымSQLlock. Concurrent POSTrestore не завершилсяраньшеwrite; новыйGETservers получил409. ПослеROLLBACKlock write завершился200; restore дождалсяего ивернул400 изнастоящегоpg_restore. Ошибка:cannot drop inherited constraint uptime_resource_samples_w_20261019_pkey of relation uptime_resource_samples_w_20261019. Существующий--single-transaction --clean --if-exists пытаетсяудалитьinheritedPK дочернегораздела. Сходныйконфликтописанв[pgsql-hackers](https://www.postgresql.org/message-id/1228964.1610480929%40sss.pgh.pa.us); текущийотказнепосредственновоспроизведённасервере/client18.6. + +Первые2попыткиожидалиrestore200,ноостановилисьassert400; приватнаядиагностикаосталасьтольконасервере. Третийзапускпроверилизвестнуюошибкуиrollback: HTTP400/no ok,обаserverID/IP/enabled сохранены,5speed rows,9migration IDs,servers_id_seq last_value2/is_called=true иretention16 (последняяподтверждённаяHTTPwrite) совпалисожидаемымсостояниемдоrestore. Inheritedconstraint сохранился,count1. ЭтоPG-4 вграницеошибкиреальногоSQLпроцесса/контрольныхданных/sequence/constraint,неполныйchecksum всехтаблиц иневсе возможныеSQLотказы. УспешныйPG-3/новыйID послеуспешногоrestore не проверены. + +Изолированныйконтейнерудалён--rm,егоscheduler/background/worker остановлены,соединениязакрыты. ПроверочнаяБД теперьretention16; основнойстендпо-прежнемуretention14,обаCHRзаписи сохранены,healthok/version1.0.0-test.673e5ba. Nativegre/BGP collector можетвыполнятьчтениеприштатномrestart,ноRouterOS apply/конфигурациянеизменялись. РеальныйPortal/browser restore UI иintegrated UDP+detached jobs втомжекритическоминтервалеэтимнепроверены. + +Обнаруженныйдефектблокируетуспешнуюприёмкуrestore; коднеразвёрнутвосновномприложении. Следующий12.5.15 — исправитьочисткуpartition constraints внутриоднойтранзакции, безпредварительногонеобратимогоDROP ибезавтоматическогоповторапосленеизвестногоcommit, затемповторитьPG-3/4/полныйPG-6. Локальныйкоммитбезpush. + ## 12.5.13 — сброс кэшей после подтверждённого восстановления БД (2026-10-07) Добавлен invalidateSystemDatabaseCaches, вызываемый послеуспешногоpg_restore внутриrestore execution, доcleanup иперезапускаconsumers. Очищаются settingsRowCache, server/topology catalog, RIPE/index/ASN cache, интерфейсы, classification catalog, analytics/map hops, engine pending/recent/rings/minute accumulators иfact/engine ensured partition sets. Последнее исключаетповторноеиспользованиепамяткиосозданныхразделах, которыхуже можетнебытьввосстановленнойБД. Engine data epoch обновлён, runtime pending cap сохранён. GeoIP readers/file state не изменены: MMDB лежатвнеPostgreSQL dump. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 81df9aab..2f620c6e 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-07:12.5.13 завершён локально в части cache invalidation после подтверждённогоrestore. Проверен порядокbackground drain→restore→cache reset→consumer restart;22lifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild passed. Runtime673e5ba не обновлён. Следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment; PG-6/PG-3/4 ещёоткрыты. +Актуальное продолжение 2026-10-07:12.5.14 выполненкакреальнаяприёмка isolated API/sourcef1aac49. ОбнаружендефектPG-3:pg_restore --clean падаетнаinherited partition PRIMARY KEY. HTTP admission409/ожиданиеwrite иrollback контрольныхданныхподтверждены. Основнойruntime673e5ba сохранён. Следующий12.5.15 — исправитьтранзакционнуюочисткуразделов иповторитьrestore; PG-3/полныйPG-6 открыты. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -1076,3 +1076,15 @@ Production invalidate/reset функции отделеныотForTests API; с Проверки: полныйtest:system-database21tests иHTTP/JWT scripts passed, затемновыйсовместныйcache/drain testpassed (всего22различныхtests). ПровереныудалениестарыхRIPE/interface/live данных безоткрытияRIPE, успешныйrestore→invalidate иотсутствиеinvalidate приошибкепроцесса. Совместныйfixtureснастоящимиoperation/restore helpers иbackground registry доказалпорядокstop listener→background drain→restore→invalidate→restart listener/scheduler; restart увиделочищенныйinterfacecache. Командаpg_restore вэтомfixture подмененаDI, это не реальныйPG-3. RIPE/ifindex/classify regression scripts иcontracts/backend build прошли; diff-check passed. БД/RouterOS влокальныхтестахнеизменялись. Коднеразвёрнут: основнойruntime673e5ba сохраняется. PG-6 целикомоткрыт, чтение/rollback реальногоAPIrestore ещёнеподтверждено. PostgreSQL dump не содержитGeoIP/backup/certificate files; ихдоступностьнужноучитыватьвприёмке. Другиепроцессы/хосты gate/registry неостанавливает. Следующий12.5.14 — integrated real-PG HTTP/scheduler/background/UDP quiescence ввыделеннойпроверочнойБД, успешныйAPIrestore/ошибкапроцесса/sequence, затемdeploymentпроверенногообраза. Локальныйкоммитбезpush. + +## 12.5.14 — реальный API restore: дефект очистки разделов и контроль rollback (2026-10-07) + +Временный docker compose run --rm --no-deps backend использовалcompiled dist sourcef1aac49, mount/app/backend/acceptance, DATABASE_URL толькоmmapp_acceptance_20261007, HTTP127.0.0.1:8014 внутриконтейнера. Основнойbackend/frontend не обновлялись. [Очищенный отчёт](ux-ui/acceptance/real-restore-2026-10-07.json); SHA256 переданногоcompiled archive совпалслокальным. РеальныйbuildApp иAPI routes работалибезHTTP mocks; startScheduler=false приinitial build, стандартныеdatabase operation restarts выполнялиреальныйrefreshScheduler/consumer lifecycle. + +GETbackup200/478810bytes/PGDMP полученвпамять безкопированиядампавGit. Отдельный тестовыйHTTP write handler менялretention14→16 подудерживаемымSQLlock. Concurrent POSTrestore не завершилсяраньшеwrite; новыйGETservers получил409. ПослеROLLBACKlock write завершился200; restore дождалсяего ивернул400 изнастоящегоpg_restore. Ошибка:cannot drop inherited constraint uptime_resource_samples_w_20261019_pkey of relation uptime_resource_samples_w_20261019. Существующий--single-transaction --clean --if-exists пытаетсяудалитьinheritedPK дочернегораздела. Сходныйконфликтописанв[pgsql-hackers](https://www.postgresql.org/message-id/1228964.1610480929%40sss.pgh.pa.us); текущийотказнепосредственновоспроизведённасервере/client18.6. + +Первые2попыткиожидалиrestore200,ноостановилисьassert400; приватнаядиагностикаосталасьтольконасервере. Третийзапускпроверилизвестнуюошибкуиrollback: HTTP400/no ok,обаserverID/IP/enabled сохранены,5speed rows,9migration IDs,servers_id_seq last_value2/is_called=true иretention16 (последняяподтверждённаяHTTPwrite) совпалисожидаемымсостояниемдоrestore. Inheritedconstraint сохранился,count1. ЭтоPG-4 вграницеошибкиреальногоSQLпроцесса/контрольныхданных/sequence/constraint,неполныйchecksum всехтаблиц иневсе возможныеSQLотказы. УспешныйPG-3/новыйID послеуспешногоrestore не проверены. + +Изолированныйконтейнерудалён--rm,егоscheduler/background/worker остановлены,соединениязакрыты. ПроверочнаяБД теперьretention16; основнойстендпо-прежнемуretention14,обаCHRзаписи сохранены,healthok/version1.0.0-test.673e5ba. Nativegre/BGP collector можетвыполнятьчтениеприштатномrestart,ноRouterOS apply/конфигурациянеизменялись. РеальныйPortal/browser restore UI иintegrated UDP+detached jobs втомжекритическоминтервалеэтимнепроверены. + +Обнаруженныйдефектблокируетуспешнуюприёмкуrestore; коднеразвёрнутвосновномприложении. Следующий12.5.15 — исправитьочисткуpartition constraints внутриоднойтранзакции, безпредварительногонеобратимогоDROP ибезавтоматическогоповторапосленеизвестногоcommit, затемповторитьPG-3/4/полныйPG-6. Локальныйкоммитбезpush. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index b52ec61d..6991109d 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -97,3 +97,7 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222 ## Локальный cache invalidation patch — 2026-10-07 12.5.13 сбрасываетDB-зависимыеNetFlow caches/live buffers/partition memo послеуспешногоrestore доconsumer restart, сохраняяRIPE pause.22различныхlifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild прошли. Runtime673e5ba не обновлён; следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment. PG-6/3/4 остаютсяоткрытыми. Dump не включаетвнешниеbackup/certificate/MMDB files. + +## Реальный API restore failure — 2026-10-07 + +[12.5.14 evidence](ux-ui/acceptance/real-restore-2026-10-07.json): isolatedsourcef1aac49/API againstmmapp_acceptance_20261007, backup200, activewrite drain/GET409. Restore400:inheritedpartitionPK нельзяудалитьсуществующим--clean. Контрольrollback прошёл (servers/speed/migrations/sequence/retention16/constraint). ПроверочнаяБДretention16,основнаяretention14/source673e5ba/healthok сохранены. Runtimeнеобновлён,PG-3 иполныйPG-6 открыты. Следующий12.5.15 — транзакционноеисправлениеclean иповторнаяприёмка. diff --git a/docs/ux-ui/acceptance/real-restore-2026-10-07.json b/docs/ux-ui/acceptance/real-restore-2026-10-07.json new file mode 100644 index 00000000..c01f147b --- /dev/null +++ b/docs/ux-ui/acceptance/real-restore-2026-10-07.json @@ -0,0 +1,107 @@ +{ + "date": "2026-10-07", + "source": "f1aac49", + "database": "mmapp_acceptance_20261007", + "mode": "real HTTP API against isolated PostgreSQL", + "mainDatabaseTouched": false, + "backup": { + "status": 200, + "bytes": 478810 + }, + "admission": { + "blockedGet": 409, + "waitedForActiveWrite": true + }, + "restore": { + "status": 400, + "reason": "cannot drop inherited partition constraint", + "reportedSuccess": false + }, + "rollbackControlsMatch": true, + "controlsAfterFailure": { + "servers": [ + { + "id": 1, + "host": "194.226.121.150", + "enabled": true + }, + { + "id": 2, + "host": "104.165.244.7", + "enabled": true + } + ], + "uptime": [ + { + "id": 1, + "retention_days": 16 + } + ], + "speed": [ + { + "count": 5 + } + ], + "sequence": [ + { + "last_value": 2, + "is_called": true + } + ], + "migrations": [ + { + "id": "0000_postgresql" + }, + { + "id": "0002_compact_schema" + }, + { + "id": "0003_backup_s3" + }, + { + "id": "0004_geoip_settings" + }, + { + "id": "0005_flow_facts" + }, + { + "id": "0006_config_revisions" + }, + { + "id": "0007_flow_buckets_nat" + }, + { + "id": "0008_alert_outbox_outcomes" + }, + { + "id": "0009_alert_outbox_resolution" + } + ] + }, + "failedConstraintStillPresent": 1, + "limits": [ + "Single isolated backend instance; no cross-host quiescence proof", + "Real API handler admission and rollback controls tested on genuine pg_restore SQL failure; PG-3 success and sequence insertion NOT tested", + "No Portal SSO or browser restore UI tested", + "Main runtime remains673e5ba; isolated staged codef1aac49 only" + ], + "compiledArchiveSha256": "7c8936f7959f356ae236a09257220100af70c4b0408535d75d88f8b275226561", + "attempts": [ + "Two initial attempts expected restore200 but observed400; private diagnostic identified inherited constraint drop error", + "Third attempt asserted real SQL failure400 and independent rollback controls" + ], + "healthMainAfter": { + "status": "ok", + "timestamp": "2026-10-07T16:18:38.474Z", + "version": "1.0.0-test.673e5ba", + "eventLoopDelayMs": 20, + "flowWorker": { + "alive": false, + "bound": false, + "pendingSize": 0, + "dropped": 0, + "packetsReceived": 0 + } + }, + "reference": "https://www.postgresql.org/message-id/1228964.1610480929%40sss.pgh.pa.us" +} \ No newline at end of file