Files
MikrotikManager/docs/ux-ui-test-server.md
T

116 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Тестовый сервер UX/UI — 2026-10-07
Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активныйbackendsource4c12c55c9d4ca1fda2b901193a4969ba0e33e797/version1.0.0-test.4c12c55;frontendsource673e5ba остаётся прежним.
| Параметр | Проверенное состояние |
| --- | --- |
| ОС / архитектура | Debian13 trixie13.7 / x86_64 |
| Ресурсы | 1CPU,1973MiB RAM,4GiB swap; исходно23GiB свободного диска |
| Docker Engine | 29.8.2;systemd enabled/active;hello-world passed |
| Compose / Buildx | v5.6.0 / v0.37.1 |
| Каталог | /opt/mmapp-test;0700 |
| Конфигурация | /opt/mmapp-test/compose.yaml;0600;docker compose config --quiet passed |
| Секреты | Сгенерированы только на сервере в /opt/mmapp-test/.env;0600;в Git не сохранены |
| PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed |
| Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data |
| Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска |
| Образы приложения | mmapp-test/backend:ux-4c12c55 и mmapp-test/frontend:ux-673e5ba;запущены |
Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example).
## Развёртывание приложения
Чистые frontend/backend build contexts подготовлены по .gitea/workflows/docker.yml из закреплённого Git HEAD;образы собраны на сервере без push. Локально docker CLI сейчас отсутствует, на сервере доступен Docker. В корневом .dockerignore исключён backend, поэтому обычный backend build из корня не повторяет CI: использовать отдельный backend context, как main workflow. Не передавать .env.local,backend/.env,ключи и локальные node_modules/.next.
После сборки/загрузки образов выполнить на сервере:
~~~bash
cd /opt/mmapp-test
docker compose config --quiet
docker compose up -d --wait --wait-timeout 300 postgres backend frontend
docker compose ps
curl -fsS http://127.0.0.1:8000/health
curl -fsS http://127.0.0.1:3000/health
~~~
Для браузера на рабочем ПК открыть SSH-туннель в отдельном терминале:
~~~powershell
ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222
~~~
После запуска frontend открыть http://localhost:3000. AUTH_REQUIRED=false допустим для этого доступа через loopback/SSH; при приёмке прав включить AUTH_REQUIRED и согласованный тестовый issuer/Portal, используя серверный JWT secret. Конфигурация фиксирует конкретный image tag; автообновление main:latest не используется.
## Границы результата
Выполнены подготовка12.5.1,сборка/запуск12.5.2 и исправление обнаруженной live ошибки12.5.3. На реальном PG применились9миграций0000–0009 (без0001),проверены0008/0009 и CHECK статусов/resolution_version;restart сохранил контрольную настройкуuptime_settings(id1/retention14) и список миграций. Пустые API каталоги прочитаны успешно. Это PG-1 в границе bootstrap/restart/schema/control-row,не проверка backup/restore или транзакционных отказов.
[Первый smoke](ux-ui/acceptance/test-server-smoke-2026-10-07.json) обнаружил PostgreSQL timestamp в outer sampledAt Internet path. Исправлено producer ISO преобразование,без ослабленияfrontend. [Итоговый smoke](ux-ui/acceptance/test-server-smoke-fixed-2026-10-07.json):3экрана200,54чтенияAPI200,безJSerrors,320px fits,Internet path подтверждён. HTTP-моков нет. Первое повторное ожидание подписи свежести исправлено раскрытием штатного блока;ошибка данных послеpatch отсутствует. [Дашборд320px](ux-ui/screens/test-server-dashboard-320-2026-10-07.png) просмотрен.
Активные image IDs:
- backend: sha256:57878e320b7272edcc6efe1f6f5c140295510c85cb79b8ca12a900f7654cd917
- frontend: sha256:bfba2785b33a72965a029a3692178ba69c80eca75a12934c1dcc04c7970db53f
После пересборки контрольныйid1/retention14 и9миграций сохранились. Подробные build logs и контрольные файлы расположены в /opt/mmapp-test/artifacts. Секреты остаются только в серверном.env0600. Временный SSH-туннель3000/8000 открыт в этой задаче;если процесс остановится,повторить команду выше.
Продолжение PG проверок записано в блоке 12.5.7 ниже. Следующий 12.5.8 — lifecycle jobs/flush/worker перед API restore по [протоколу](ux-ui-external-acceptance.md). Для Telegram/Portal и других интеграций нужны тестовые endpoints/учётные записи. 1CPU/2GiB не представляют production performance.
## Первый тестовый CHR — 2026-10-07
194.226.121.150 добавлен в приложение,serverId1,имяCHR,typehome-router(default). По явному выбору пользователя используетсяHTTP REST80,useSsl=false;HTTPS443 отключён наCHR. RouterOS7.24.5 stable;identityCHR,модельCHR OpenStack Foundation OpenStack Nova. Test-connection/poll/GET200,statusonline,строка видна вUI. КонфигурацияRouterOS не изменялась. [Очищенный результат](ux-ui/acceptance/chr-connection-2026-10-07.json). Пароль в паспорт/отчёт/Git не включён. Дляspeed-test нужно второе отдельное устройство;VPN/маршрутизация/изменениясети пока не проверены.
## Второй тестовый CHR — 2026-10-07
104.165.244.7,serverId2,HTTPREST80,имяCHR,typehome-router(default),RouterOS7.24.5 stable;test-connection/poll/GET200,statusonline. [Паспорт пары без учётных данных](ux-ui/acceptance/chr-pair-2026-10-07.json). Пароль не включён в документы/Git. Следующий12.5.6 — короткиеTCP bandwidth-test по3сек,transmit/receive/both. Имена одинаковые;использоватьIP/id для выбора устройства.
## Native TCP speed — 2026-10-07
НаобоихCHR поразрешениюпользователя включёнbandwidth-server(enabled=true,authenticate=true,max-sessions100),независимымGET подтверждено;служба остаётся активной для последующих тестов. ВзаимныйPing3/3,0%loss. Триad-hocTCP runs id1→id2 по3s/transmit/receive/both завершеныdone testing,HTTP200,история/GUI подтверждены. [Настройки](ux-ui/acceptance/chr-bandwidth-server-2026-10-07.json),[результаты](ux-ui/acceptance/chr-native-speed-enabled-2026-10-07.json),[предыдущий отказ при выключенной службе](ux-ui/acceptance/chr-native-speed-2026-10-07.json). Это функциональная проверка,неbenchmark;UDP/WANbinding/probe-races/остальнойROS иPG-протокол не закрыты.
## PostgreSQL backup/RBAC/concurrency — 2026-10-07
[Отчёт 12.5.7](ux-ui/acceptance/pg-backup-auth-2026-10-07.json): admin backup200/475225bytes, pg_restore18.6 прочитал907TOC entries и восстановил отдельную mmapp_acceptance_20261007. Контрольные записи/9миграций/5speed rows/servers sequence совпали с исходной БД. Приложение не подключено к проверочной БД; она сохранена для дальнейшей приёмки. Дамп только в /opt/mmapp-test/data/acceptance-private (0700), файл0600, содержит приватные учётные данные и не копируется в Git.
При AUTH_REQUIRED=true подтверждены401/403 на backup/restore; JWT сформированы в памяти, реальный Portal SSO не проверен. Конкурирующий restore409 при наблюдаемом активном pg_dump, первый backup200 после снятия контрольного SQL lock. AUTH_REQUIRED=false восстановлен, API auth/config и health подтвердили состояние. PG-3/4/6 остаются открытыми: ожидание завершения текущих scheduler jobs/flush/worker пока не обеспечено.
## Локальный lifecycle patch — 2026-10-07
Блок12.5.8 исправляет ожидание scheduler jobs и запрещает новые запуски во время database operation;17scheduler tests,7pure database tests,HTTP/JWT scripts и build прошли. На этом стенде patch пока не развёрнут: активный source673e5ba сохраняется. Следующий12.5.9 — graceful NetFlow worker stop/flush; только после этого перейти к сборке/развёртыванию и внешней проверкеPG-6. Восстановление основной тестовой БД ещё не выполнялось.
## Локальный NetFlow shutdown patch — 2026-10-07
В12.5.9 добавлена командаshutdown с подтверждением послеflush/pool.end и ожиданиемexit0;4pure/protocol tests, database HTTP/JWT и build passed. На стенд ещё не развёрнуто, source673e5ba остаётся активным. Реальный collector/UDP/длительный SQL и прочие writers требуют отдельной проверки12.5.10 в mmapp_acceptance_20261007. Подтверждение завершения flush не гарантирует сохранение всех пакетов при прежних best-effort ошибках engine; PG-6/restore не приняты.
## Настоящий isolated collector — 2026-10-07
[12.5.10 evidence](ux-ui/acceptance/netflow-worker-2026-10-07.json): актуальныйworker изf8da3e0 в отдельном временном контейнере, выделеннаяmmapp_acceptance_20261007, UDP4749 только внутриконтейнера. Shutdown дождался blocked SQL/освободилsocket, ack+exit0, delta1500bytes,0worker connections. Контейнер удалён--rm. ПроверочнаяБД теперь содержит синтетические flow rows/counters; архив12.5.7 остаётся исходным snapshot. Основной runtime673e5ba/healthok/serverID1–2/retention14 сохранён. App-wide PG-6/ручные API writers/restore ещё открыты; следующий12.5.11 — аудит и admission остальных писателей.
## Локальный HTTP drain patch — 2026-10-07
12.5.11 добавляет instance-local gate для всех API handlers/GET, exclusive backup/restore иabort/drain traffic live streams.4gate tests,15lifecycle/database tests,HTTP/JWT scripts иbuild passed. Основнойruntime673e5ba остаётсяактивным. Detached backup jobs/audit иRIPE persistence ещёнеохвачены; следующий12.5.12 закрываетэтотпробел. PG-6/restore не приняты.
## Локальный detached work drain — 2026-10-07
12.5.12 добавляетучётbackground backup/audit/certificate/partition maintenance/cache work иpause RIPE enqueue сdrain текущихresolver/writes.19lifecycle/database tests,HTTP/JWT,backup/RIPE,10certificate tests иbuild прошли. На стенднеразвёрнуто; source673e5ba сохраняется. Следующий12.5.13 — integrated quiescence иcache invalidation передrestore/deployment. PG-6/3/4 остаютсяоткрытыми.
## Локальный 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 иповторнаяприёмка.
## Partition-safe API restore — 2026-10-07
12.5.15:isolatedf1aac49+compiledpatch, [realAPIrestore200/новыйID3/injectedSQL400/rollback1587constraints](ux-ui/acceptance/real-restore-fixed-2026-10-07.json). ПроверочнаяБДmmapp_acceptance_20261007 содержитserver3 disabled192.0.2.250/retention19. ОсновнаяБДserver1–2/retention14/source673e5ba/healthok сохранена.25localtests,HTTP/JWT иbuild passed. Patchещёнеразвёрнут; следующий12.5.16 — disabled-server collector defect, integratedPG-6/deployment.
## Enabled-only мониторинг — 2026-10-07
По явномувыборупользователя12.5.16 исключаетdisabledвсетипыизuptime/RESTping/scheduledspeed, manualspeedпроверяетобасерверадосети. [Realматрица3типов/0новыхdisabledсэмплов](ux-ui/acceptance/monitoring-enabled-2026-10-07.json) прошла. ВпроверочнойБДserver3 сноваhome-router/enabledfalse, temporaryspeedprobesудалены. Основнойruntime673e5ba не обновлён,healthok. Следующий12.5.17 — integratedPG-6/deployment.
## Обновление 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приёмкаещёоткрыты.