fix(traffic): учитывать состав каждой волны измерений

This commit is contained in:
Denozordec committed 2026-10-13 01:52:50 +07:00
1 parent a8b80d9914
commit 5d19b6a258
17 files changed
+1349 -18

No files matched your search

+21 -3
View File
@@ -1,6 +1,6 @@
# Тестовый сервер UX/UI — 2026-10-10
Актуальное продолжение 2026-10-13: завершён12.5.187 — actual PG18.6 archive restore: legacy schema→0012 bootstrap без guessed identity/flags; native identity/continuity/counters preserved.4cases/real pg_dump+restore helper passed, ownDB/role/container removed; production DB/runtime untouched (backend ux-identity186/frontend ux-warning183). Следующий188 — history wave membership после rename/delete/add interfaces;12.5 открыта.
Актуальное продолжение 2026-10-13: завершён12.5.188 — per-wave declared membership после rename/delete/add, active interfaces latest wave, no false0 для нового baseline; malformed declared identityNULL→unknown. OwnSQL65/38880ms/unit/build/source460+524/1040compiled/API/browser2 passed. Backend ux-membership188 healthy/frontend ux-warning183; ownDB/role/container удалены. Следующий189 — background traffic source guard между native commands и записью;12.5 открыта.
| Параметр | Проверенное состояние |
| --- | --- |
@@ -14,7 +14,7 @@
| 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-identity186 и mmapp-test/frontend:ux-warning183; запущены |
| Образы приложения | mmapp-test/backend:ux-membership188 и mmapp-test/frontend:ux-warning183; запущены |
Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example).
@@ -708,7 +708,7 @@ flowchart LR
## 12.5.77 — основной блок IPsec (2026-10-09)
Актуальное продолжение 2026-10-13: завершён12.5.187 — actual PG18.6 archive restore: legacy schema→0012 bootstrap без guessed identity/flags; native identity/continuity/counters preserved.4cases/real pg_dump+restore helper passed, ownDB/role/container removed; production DB/runtime untouched (backend ux-identity186/frontend ux-warning183). Следующий188 — history wave membership после rename/delete/add interfaces;12.5 открыта.
Актуальное продолжение 2026-10-13: завершён12.5.188 — per-wave declared membership после rename/delete/add, active interfaces latest wave, no false0 для нового baseline; malformed declared identityNULL→unknown. OwnSQL65/38880ms/unit/build/source460+524/1040compiled/API/browser2 passed. Backend ux-membership188 healthy/frontend ux-warning183; ownDB/role/container удалены. Следующий189 — background traffic source guard между native commands и записью;12.5 открыта.
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
@@ -1970,3 +1970,21 @@ Unit identity/config/legacy-marker/pair guards, backend/application TypeScript
PostgreSQL server/client18.6, Node22 from production image; отдельный test-client image на официальном postgres:18 собран с проверкой Node/pg_dump. Docker socket в контейнер не передавался. Script SHA256 совпал с локальными байтами. ESLint passed. OwnDB mm_accept_166_1791829512285/role/container удалены, независимая проверка catalog/container absence passed. Рабочие3 контейнера и их runtime186/183 не менялись, реальных серверных/network writes/messages0; отдельная приёмка PostgreSQL restore в полном API/RBAC/multi-writer сценарии этим коротким тестом не заявляется.
Следующий188 — временный состав измерений: текущая реализация сравнивает количество известной wave с количеством всех series за период. Проверить rename/delete/add interfaces и active sessions, чтобы старый ряд не делал текущий срез навсегда unknown, а новое измерение без baseline не превращалось в measured0. Историю сохранить; причины absent object/optional peer failures и multi-instance остаются явными ограничениями.12.5 открыта. Локальный коммит без push.
## 12.5.188 — состав временных измерений после изменения интерфейсов (2026-10-13)
[Baseline/fixed](ux-ui/acceptance/traffic-wave-baseline-2026-10-13.json): при удалении одного ряда прежний186 builder навсегда оставлял current unknown и sessions2, хотя последний complete native wave содержал1 интерфейс.188 даёт current known/sessions1 с теми же4096 accounted bytes. Теперь expected count определяется для каждой wave, если все её строки имеют declared continuity marker нового producer. Счётчик активных интерфейсов берётся из последней такой wave. Legacy без marker сохраняет консервативный общий count; отсутствие строки не объявляется нулём по догадке.
Новый интерфейс без предыдущего baseline присутствует в expected count, но не в known pair sum: current остаётся unknown до следующей пары. Rename оставляет отдельный baseline нового имени, byte gap не додумывается, обе подтверждённые исторические части сохраняются. Declared confirmed continuity с NULL/empty native identity не доверяется. Поиск latest wave не использует неограниченный spread массива timestamps.
| Сценарий | Результат |
| --- | --- |
| Delete/rename старого series | latest complete wave снова current; stale series не увеличивает current sessions |
| Новый interface с единственным counter | unknown sum, current active count включает интерфейс |
| Следующая confirmed pair с0delta | measured0 допустим |
Unit membership deletion/addition/baseline/zero/history и backend build passed. [Own PG SQL](ux-ui/acceptance/traffic-wave-sql-2026-10-13.json):65 cases9counter+14history+10TCP SSE+13volume+19status/38880ms, без skip.3 новые GET detail cases: deletion и rename возвращают known current/history/correct active count; добавление одного baseline оставляет current unknown. Markers/native-identity strings этих cases — собственные controlled fixtures, не native device mutation. OwnDB mm_accept_166_1791830718064/role/container удалены и отсутствие проверено.
[Source460/524](ux-ui/acceptance/traffic-wave-source-2026-10-13.json)/[compiled1040](ux-ui/acceptance/traffic-wave-compiled-2026-10-13.json) SHA256 parity; [backend ux-membership188](ux-ui/acceptance/traffic-wave-runtime-2026-10-13.json) healthy/imageIds, frontend ux-warning183 unchanged/no rebuild. Only backend.env tag, rollback ux-identity186, migration0/secret env copy0. [Actual API](ux-ui/acceptance/traffic-wave-api-2026-10-13.json)/[browser1440/320](ux-ui/acceptance/traffic-wave-deployed-2026-10-13.json) current/live/receipt/no errors/overflow passed. Реальные interfaces/пароли не менялись, messages0; rename/delete проверены собственным SQL dataset, не выданы за native VPN tunnel test.
Следующий189 — collector после отключения/смены источника между /interface и optional peer request: source.enabled/updatedAt должны проверяться перед каждой следующей командой и перед публикацией успешной записи. Live SSE уже проверяет каждую команду179. Затем проверить temporal peaks/частичные bins отдельно; этот блок не принимает sum-of-individual-peaks за общий одновременный пик.12.5 открыта. Локальный коммит без push.