chore(test): проверить права и восстановление базы в браузере

This commit is contained in:
Denozordec committed 2026-10-08 00:03:13 +07:00
1 parent 1adb82c9a2
commit c337fddac9
7 files changed
+209 -4

No files matched your search

+5 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5
Статус на2026-10-07: основнойbackend4c12c55/frontend673e5ba развёрнуты,healthy иrealbrowser smoke passed. PG-1/2/5 иPG-3/4 принятывописанныхконтрольныхграницах; integratedPG-6 принятдляодногоisolatedbackend в12.5.17 (HTTP/UDP/scheduler/backgroundSQL/restore/restart),безкоординациидругихпроцессов. PG-7 ранееHTTP-RBAC,Portal/browserrestore ещёнеприняты. NativeTCPspeed ипервыйотказподключенияпройдены;остальнойROS/Q/интеграции открыты. [Паспорт](ux-ui-test-server.md),[журнал](ux-ui-progress.md).
Статус на2026-10-08: backend4c12c55/frontend673e5ba healthy; PG-1/2/3/4/5 принятывописанныхграницах,PG-6 integratedдляодногоisolatedinstance,PG-7 realJWT/processcounts иbrowserrestore200/errorguard12.5.18 passed. PortalSSO/мультиэкземпляры/PG-8/остальныеROS/Q/интеграции остаютсяоткрытыми. [Паспорт](ux-ui-test-server.md),[журнал](ux-ui-progress.md).
## Паспорт стенда
@@ -105,3 +105,7 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove
## IntegratedPG-6 иdeployment — 2026-10-07
[12.5.17](ux-ui/acceptance/integrated-pg6-2026-10-07.json) подтвердилsingle-instanceadmission/drainHTTP/UDP/scheduler/backgroundwrite,restore200 ивозобновлениеUDP. [Deployment](ux-ui/acceptance/deployed-4c12c55-2026-10-07.json) основнойbackend4c12c55healthy/контрольБДpassed,frontend673e5ba прежний. Multi-instance/Portal/browserrestore/остальныеинтеграции требуютпродолжения12.5.18.
## RBAC иbrowser restore — 2026-10-08
12.5.18 [realJWT/processPG-7](ux-ui/acceptance/rbac-4c12c55-2026-10-08.json) и[browserrestore200/400/guard/reload](ux-ui/acceptance/browser-restore-2026-10-08.json) прошли. ИзоляцияfrontendпроверяласьмаркеромБД:runtimeURLoverride не менялbakedNextrewrites,поэтомуиспользованавременнаяотдельнаяDocker network/backendalias. Основнойстенднеизменён,temporarycontainers/network/tunnelудалены. PortalSSO/commit-loss/PG-8/остальныеинтеграции ещёнеприняты.
+1 -1
View File
@@ -1,6 +1,6 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-07:12.5.17 завершён — integratedPG-6 принятдляодногоisolatedbackend (HTTP/UDP/SQL/scheduler/background drain→restore→restart). Backend4c12c55 собран/развёрнутнаосновномтестовомстенде,healthy/контрольБД/3API200/browser3screens320px passed. Frontend673e5ba сохранён. Следующий12.5.18 — browser/RBAC restore иоставшиесясценариипротокола;12.5 остаётсяоткрытой.
Актуальное продолжение 2026-10-08:12.5.18 завершён — PG-7 realJWT401/403/нулевыеchildprocesses,adminbackup200; realbrowserrestore200/архивныйконтроль и400/файлсохранён/unknownguard/reload/явныйreset passed наотдельнойБД. Backend4c12c55/frontend673e5ba сохраняются,основнаяБДнеизменена. Следующий12.5.19 — PG-8 commit acknowledgement/speed persistence иоставшиесяnative/integration сценарии;12.5 открыта.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-07. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
+11 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-07:12.5.17 завершён — integratedPG-6 принятдляодногоisolatedbackend (HTTP/UDP/SQL/scheduler/background drain→restore→restart). Backend4c12c55 собран/развёрнутнаосновномтестовомстенде,healthy/контрольБД/3API200/browser3screens320px passed. Frontend673e5ba сохранён. Следующий12.5.18 — browser/RBAC restore иоставшиесясценариипротокола;12.5 остаётсяоткрытой.
Актуальное продолжение 2026-10-08:12.5.18 завершён — PG-7 realJWT401/403/нулевыеchildprocesses,adminbackup200; realbrowserrestore200/архивныйконтроль и400/файлсохранён/unknownguard/reload/явныйreset passed наотдельнойБД. Backend4c12c55/frontend673e5ba сохраняются,основнаяБДнеизменена. Следующий12.5.19 — PG-8 commit acknowledgement/speed persistence иоставшиесяnative/integration сценарии;12.5 открыта.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -34,6 +34,16 @@
| 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.18 — реальные права backup/restore и сценарии восстановления в браузере (2026-10-08)
Блокначат7октября,завершён8октября поAsia/Novosibirsk; отчётыдатированыподатеокончания. [PG-7 evidence](ux-ui/acceptance/rbac-4c12c55-2026-10-08.json): temporarycontainerсреальнымimageux-4c12c55, AUTH_REQUIRED=true,mmapp_acceptance_20261007. JWTтестовогоissuerсозданытольковпамяти, безPortalSSO. 16GETbackup/POSTrestore:anonymous/wrongissuer/expired/invalidsignature401;settingsreader/writer/trafficadmin/missingapp403. Instrumentation productionchild_process.spawn (безподменывыполнениякоманд) подтвердилаpg_dump0/pg_restore0/psql0длявсехотказов; контрольныеservers/retention/sequence/speed послеотказовсовпали. Adminmm:settings:adminbackup200/478183bytes/PGDMP запустилровноодиннастоящийpg_dump. ЭтоусиливаетпрежниеHTTP-onlyPG-7 проверкинаблюдениемпроцессов.
[Real browser restore](ux-ui/acceptance/browser-restore-2026-10-08.json): temporaryfrontend673e5ba/backend4c12c55,localhost3018черезотдельныйSSHтуннель, AUTHfalseдляbrowserсценария,выделеннаяБД. Передлюбойwriteмаркерserver3/192.0.2.250/disabled проверен. Перваяпроверкаотказала:Next.jsrewrites bakedприbuildигнорировалruntimeBACKEND_INTERNAL_URL ивременныйfrontendчиталосновнуюБД. Guard остановилсценарийдополученияархива/изменениянастроек/restore. Временныйfrontendотсоединёнотmmapp-test_default иподключёнкmmapp-browser-only,гдеaliasbackendуказывалтольковременныйbackend; повторныймаркерподтвердилвыделеннуюБД. Основнойfrontend/router configurationне менялись.
Backup478920bytesиспользовантольковпамятиNode/browser input,локальный.dumpнесохранён. Контрольretention14→19 сделанAPIввыделеннойБД. ЧерезнастоящийsettingsUI:выборфайла→Продолжить→подтверждение→restore200→подпись «База приложения восстановлена»; GETuptimesettings независимоподтвердилretention14. ЗатемPGDMP-invalid-fixture получил400:controlretention14сохранён,filenameвдиалогесохранён,unknowncaptionвиден,restoreкнопказаблокирована. Guardпережилreload, «Выбрать файл»disabled; послефактическойпроверкиcontrolнажато «Я проверил состояние — разрешить новый запрос»,кнопкавновьenabled. POSTstatusesровно[200,400],автоповторанет;0JSerrors,320px dialogfits. HTTP-моковнет. ЭтоbrowserPG-3/errorUX,неPortalSSO иневсеfailure/commit-lossварианты.
Temporaryfrontend/backend/самостоятельныйRBACcontainerудалены--rm, privateDocker networkудалена, временныйтуннель3018закрыт. Основнойтуннель3000/8000/стендсохранены;backend4c12c55healthy,основнаяБДserver1–2/retention14безизменений,AUTHfalseкакдоэтогоблока. Продуктовыйкодне менялся. PG-7 иbrowserrestoreпринятывуказанныхграницах; полный12.5 ещёоткрыт. Следующий12.5.19 — PG-8 speedpersistence/потеряcommitacknowledgement иостальныеROS/Q/integrationсценарии. Локальныйкоммитбезpush.
## 12.5.17 — общая проверка PG-6 и обновление backend тестового стенда (2026-10-07)
[Integrated PG-6 evidence](ux-ui/acceptance/integrated-pg6-2026-10-07.json): source4c12c55, настоящееbuildApp/API/worker/PG18.6, temporarycontainer иmmapp_acceptance_20261007. SQLsettings temporarilyвключилиUDP4749 внутриконтейнера иlocalhostexporter map; CHR traffic-flow конфигурациянеизменялась. ArchiveполученреальнымGETbackup. ВодноминтервалезадержаныHTTPhandler, workerSQLчерезACCESS EXCLUSIVE lock settingstable иbackground SQLtask черезproductionregistry.
+11 -1
View File
@@ -1,6 +1,6 @@
# Этап 12: итоговая приёмка UX/UI
Актуальное продолжение 2026-10-07:12.5.17 завершён — integratedPG-6 принятдляодногоisolatedbackend (HTTP/UDP/SQL/scheduler/background drain→restore→restart). Backend4c12c55 собран/развёрнутнаосновномтестовомстенде,healthy/контрольБД/3API200/browser3screens320px passed. Frontend673e5ba сохранён. Следующий12.5.18 — browser/RBAC restore иоставшиесясценариипротокола;12.5 остаётсяоткрытой.
Актуальное продолжение 2026-10-08:12.5.18 завершён — PG-7 realJWT401/403/нулевыеchildprocesses,adminbackup200; realbrowserrestore200/архивныйконтроль и400/файлсохранён/unknownguard/reload/явныйreset passed наотдельнойБД. Backend4c12c55/frontend673e5ba сохраняются,основнаяБДнеизменена. Следующий12.5.19 — PG-8 commit acknowledgement/speed persistence иоставшиесяnative/integration сценарии;12.5 открыта.
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
@@ -1124,3 +1124,13 @@ Restore ждалHTTPhandler,новыеAPIGET409. ПослеHTTPcleanup UDPsocket
ComposeдобавленoptionalBACKEND_IMAGE_TAG, которыйпереопределяеттолькоbackend; default сохраняетMMAPP_IMAGE_TAG. На стендеMMAPP_IMAGE_TAG=ux-673e5ba/BACKEND_IMAGE_TAG=ux-4c12c55: frontendнепересобирался,егоimage/revision673e5ba прежние. ComposeSHA3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f совпаллокально/насервере,config--quiet passed. AUTH_REQUIREDfalse/SSH-only ports сохранены. Backendhealthy,health/APIauthconfig/servers/speed-test-runs200. Первыйsmoke ошибочноиспользовал/uptime/speed/history404; correctedcanonical/uptime/speed-test/runs200,продуктовогодефектаздесьнет.
[Real browser smoke](ux-ui/acceptance/deploy-browser-4c12c55-2026-10-07.json): dashboard/servers/filters200,320px fits,0JSerrors/0API>=400,HTTP-моковнет. RestoreосновнойБД не выполнялся;разрушающиесценарииоставалисьввыделеннойБД. Полныйпротоколещёоткрыт:Portal/browserrestore flow,остальныеnative/network/integrations иmulti-instanceконтрольнеприняты. Следующий12.5.18 — browser/RBACrestore иоставшиесясценарии. Локальныйкоммитбезpush.
## 12.5.18 — реальные права backup/restore и сценарии восстановления в браузере (2026-10-08)
Блокначат7октября,завершён8октября поAsia/Novosibirsk; отчётыдатированыподатеокончания. [PG-7 evidence](ux-ui/acceptance/rbac-4c12c55-2026-10-08.json): temporarycontainerсреальнымimageux-4c12c55, AUTH_REQUIRED=true,mmapp_acceptance_20261007. JWTтестовогоissuerсозданытольковпамяти, безPortalSSO. 16GETbackup/POSTrestore:anonymous/wrongissuer/expired/invalidsignature401;settingsreader/writer/trafficadmin/missingapp403. Instrumentation productionchild_process.spawn (безподменывыполнениякоманд) подтвердилаpg_dump0/pg_restore0/psql0длявсехотказов; контрольныеservers/retention/sequence/speed послеотказовсовпали. Adminmm:settings:adminbackup200/478183bytes/PGDMP запустилровноодиннастоящийpg_dump. ЭтоусиливаетпрежниеHTTP-onlyPG-7 проверкинаблюдениемпроцессов.
[Real browser restore](ux-ui/acceptance/browser-restore-2026-10-08.json): temporaryfrontend673e5ba/backend4c12c55,localhost3018черезотдельныйSSHтуннель, AUTHfalseдляbrowserсценария,выделеннаяБД. Передлюбойwriteмаркерserver3/192.0.2.250/disabled проверен. Перваяпроверкаотказала:Next.jsrewrites bakedприbuildигнорировалruntimeBACKEND_INTERNAL_URL ивременныйfrontendчиталосновнуюБД. Guard остановилсценарийдополученияархива/изменениянастроек/restore. Временныйfrontendотсоединёнотmmapp-test_default иподключёнкmmapp-browser-only,гдеaliasbackendуказывалтольковременныйbackend; повторныймаркерподтвердилвыделеннуюБД. Основнойfrontend/router configurationне менялись.
Backup478920bytesиспользовантольковпамятиNode/browser input,локальный.dumpнесохранён. Контрольretention14→19 сделанAPIввыделеннойБД. ЧерезнастоящийsettingsUI:выборфайла→Продолжить→подтверждение→restore200→подпись «База приложения восстановлена»; GETuptimesettings независимоподтвердилretention14. ЗатемPGDMP-invalid-fixture получил400:controlretention14сохранён,filenameвдиалогесохранён,unknowncaptionвиден,restoreкнопказаблокирована. Guardпережилreload, «Выбрать файл»disabled; послефактическойпроверкиcontrolнажато «Я проверил состояние — разрешить новый запрос»,кнопкавновьenabled. POSTstatusesровно[200,400],автоповторанет;0JSerrors,320px dialogfits. HTTP-моковнет. ЭтоbrowserPG-3/errorUX,неPortalSSO иневсеfailure/commit-lossварианты.
Temporaryfrontend/backend/самостоятельныйRBACcontainerудалены--rm, privateDocker networkудалена, временныйтуннель3018закрыт. Основнойтуннель3000/8000/стендсохранены;backend4c12c55healthy,основнаяБДserver1–2/retention14безизменений,AUTHfalseкакдоэтогоблока. Продуктовыйкодне менялся. PG-7 иbrowserrestoreпринятывуказанныхграницах; полный12.5 ещёоткрыт. Следующий12.5.19 — PG-8 speedpersistence/потеряcommitacknowledgement иостальныеROS/Q/integrationсценарии. Локальныйкоммитбезpush.
+4
View File
@@ -113,3 +113,7 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222
## Обновление backend иPG-6 — 2026-10-07
12.5.17 [integratedquiescence/restore/restart](ux-ui/acceptance/integrated-pg6-2026-10-07.json) passedдляодногоisolatedbackend. [Основнойbackend4c12c55](ux-ui/acceptance/deployed-4c12c55-2026-10-07.json) собран/развёрнут,healthy/sourcefullrevision/version1.0.0-test.4c12c55. Frontend673e5ba прежний. BACKEND_IMAGE_TAG=ux-4c12c55,MMAPP_IMAGE_TAG=ux-673e5ba. Приватныйpre-updatebackup вdata/acceptance-private,контрольосновнойБДserver1–2/retention14/9миграций совпал. [3realbrowser screens](ux-ui/acceptance/deploy-browser-4c12c55-2026-10-07.json) 200/320fits/безJS/APIerrors. Полный12.5 иmulti-instanceприёмкаещёоткрыты.
## RealRBAC иbrowserrestore — 2026-10-08
12.5.18 [RBAC16denials/childprocess0/adminbackup200](ux-ui/acceptance/rbac-4c12c55-2026-10-08.json),[browserrestore200/архивныйcontrol/400guardreload](ux-ui/acceptance/browser-restore-2026-10-08.json) passedнавыделеннойБД. Временныеfrontend/backend использовалиизолированнуюDocker network,посколькуNextrewritesфиксированыприbuild; guardпредотвратилwritesприошибкемаршрутизации. Temporarycontainers/network/3018tunnelудалены,основнойbackend4c12c55/frontend673e5ba/server1–2/retention14/AUTHfalse сохранены. PortalSSO иполный12.5 ещёоткрыты.
@@ -0,0 +1,37 @@
{
"date": "2026-10-08",
"backendSource": "4c12c55",
"frontendSource": "673e5ba",
"database": "mmapp_acceptance_20261007",
"base": "http://localhost:3018",
"mocks": false,
"archiveBytes": 478920,
"success": {
"status": 200,
"retentionRestored": 14,
"confirmedCaption": true
},
"failure": {
"status": 400,
"retentionUnchanged": 14,
"filePreserved": true,
"unknownCaption": true,
"restoreDisabled": true,
"guardSurvivedReload": true,
"explicitResetEnabled": true,
"noAutomaticRetry": true,
"mobileFits": true
},
"restoreStatuses": [
200,
400
],
"pageErrors": [],
"limits": [
"Auth false for isolated browser stand; JWT RBAC tested separately",
"Archive used only in memory, no local dump file saved",
"Main database not restored; real Portal SSO not tested"
],
"startedClientDate": "2026-10-07",
"isolationCorrection": "Initial DB marker guard stopped before archive/download/mutation/restore; build-time Next.js rewrites ignored runtime URL override. Temporary frontend moved to private Docker network with backend alias, marker verified, tests then passed."
}
@@ -0,0 +1,140 @@
{
"date": "2026-10-08",
"source": "4c12c55",
"database": "mmapp_acceptance_20261007",
"authRequired": true,
"realChildProcesses": true,
"denials": [
{
"label": "anonymous",
"method": "GET",
"path": "backup",
"status": 401
},
{
"label": "anonymous",
"method": "POST",
"path": "restore",
"status": 401
},
{
"label": "settings-reader",
"method": "GET",
"path": "backup",
"status": 403
},
{
"label": "settings-reader",
"method": "POST",
"path": "restore",
"status": 403
},
{
"label": "settings-writer",
"method": "GET",
"path": "backup",
"status": 403
},
{
"label": "settings-writer",
"method": "POST",
"path": "restore",
"status": 403
},
{
"label": "traffic-admin",
"method": "GET",
"path": "backup",
"status": 403
},
{
"label": "traffic-admin",
"method": "POST",
"path": "restore",
"status": 403
},
{
"label": "missing-app",
"method": "GET",
"path": "backup",
"status": 403
},
{
"label": "missing-app",
"method": "POST",
"path": "restore",
"status": 403
},
{
"label": "wrong-issuer",
"method": "GET",
"path": "backup",
"status": 401
},
{
"label": "wrong-issuer",
"method": "POST",
"path": "restore",
"status": 401
},
{
"label": "expired",
"method": "GET",
"path": "backup",
"status": 401
},
{
"label": "expired",
"method": "POST",
"path": "restore",
"status": 401
},
{
"label": "invalid-signature",
"method": "GET",
"path": "backup",
"status": 401
},
{
"label": "invalid-signature",
"method": "POST",
"path": "restore",
"status": 401
}
],
"mainDatabaseTouched": false,
"deniedChildProcessCounts": {
"pg_dump": 0,
"pg_restore": 0,
"psql": 0
},
"deniedControlsUnchanged": true,
"adminBackup": {
"status": 200,
"bytes": 478183,
"childProcessCounts": {
"pg_dump": 1,
"pg_restore": 0,
"psql": 0
}
},
"limits": [
"JWT generated only in memory with configured test issuer; real Portal SSO not tested",
"No browser restore UI and no successful admin restore in this RBAC block",
"Instrumentation observes production child_process.spawn without replacing command execution"
],
"healthMainAfter": {
"status": "ok",
"timestamp": "2026-10-07T17:00:26.577Z",
"version": "1.0.0-test.4c12c55",
"eventLoopDelayMs": 20,
"flowWorker": {
"alive": false,
"bound": false,
"pendingSize": 0,
"dropped": 0,
"packetsReceived": 0
}
},
"startedClientDate": "2026-10-07"
}