fix(api): сохранять большие идентификаторы серверов без округления

This commit is contained in:
Denozordec committed 2026-10-11 23:39:02 +07:00
1 parent 90e6c7be25
commit d3d8afaa0c
13 files changed
+1086 -19

No files matched your search

+13 -3
View File
@@ -1,8 +1,8 @@
# Оставшаяся внешняя приёмка — 2026-10-11
Это актуальная матрица после 12.5.155. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Это актуальная матрица после 12.5.156. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-ospf154`, frontend `ux-ospf153`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-id156`, frontend `ux-ospf153`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
| Раздел | Подтверждено | Осталось / условие завершения |
| --- | --- | --- |
@@ -18,7 +18,7 @@
| Recursive routes | Production PUT/change/own history restore88, disabled guards, partial/unknown/applied outcomes, live формы/контекст | Автоматический rollback/retry, durable receipts и несколько экземпляров отсутствуют; PUT не является idempotent noop. Полная произвольная legacy catalog миграция не принята |
| Diagnostics/terminal | Allowlist/native reads, Ping/trace/route/MTU/DNS, actual avg-rtt, disabled guards, JWT/live PC/mobile89; real default memory tail/log limits/API/UI133 | DNS использует backend resolver; MTU — ограниченная оценка, не гарантированный максимум. Stop ожидания не доказывает остановку RouterOS команды; arbitrary CLI и physical disconnect не приняты |
| Portal/интеграции | Локальные и isolated JWT guards; UI/API error states в границах журналов | Настоящий Portal issuer/login/отзыв прав; RIPE SDK two-IP/no-fetch passed140, native IPv6 ULA flow pipeline passed145 (IPv4 transport), public IPv6 WAN/local licensed MaxMind/S3/container/certificate jobs и Gitea delivery требуют отдельных тестовых endpoints/аккаунтов. Не отправлять сообщения и не публиковать релиз без соответствующего поручения |
| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | Traffic initial live mock-id gate passed141; IPv6 special ranges/cache passed142; unknown RIPE coordinates passed143; IPv6 synthetic UDP/worker/SQL passed144; native CHR ULA/IPFIX/API/UI passed145; ICMPv6/IPv6 endpoint labels passed146; HTTP DTO validation passed147; scoped flow catalog/serverId guards passed148; strict monthly calendar passed149; Sessions labels passed150; application GRE static IPv6 lifecycle151 passed; WireGuard static IPv6 lifecycle152 и disabled SQL/API gates passed; OSPF/BFD boundary/warning153 passed; OSPFv3 routes154 accepted in recorded bounds; BGP IPv6 basic155 passed; следующий общая UI/context regression156; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию |
| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | Traffic initial live mock-id gate passed141; IPv6 special ranges/cache passed142; unknown RIPE coordinates passed143; IPv6 synthetic UDP/worker/SQL passed144; native CHR ULA/IPFIX/API/UI passed145; ICMPv6/IPv6 endpoint labels passed146; HTTP DTO validation passed147; scoped flow catalog/serverId guards passed148; strict monthly calendar passed149; Sessions labels passed150; application GRE static IPv6 lifecycle151 passed; WireGuard static IPv6 lifecycle152 и disabled SQL/API gates passed; OSPF/BFD boundary/warning153 passed; OSPFv3 routes154 accepted in recorded bounds; BGP IPv6 basic155 passed; bigint ID/SQL guards156 passed; общая UI/context regression157 running; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию |
Доказательства и точные ограничения: [полная история этапа12](ux-ui-stage-12.md), [внешний протокол](ux-ui-external-acceptance.md), [BGP93](ux-ui/acceptance/bgp-failover-2026-10-10.json), [паспорт стенда](ux-ui-test-server.md). Невыполненные пункты не являются все блокерами данного лабораторного сценария: для выпуска необходимо явно определить требуемые конфигурации и принять их либо согласовать ограничение.
@@ -624,3 +624,13 @@ Catalog и selected API подтвердили Established и IPv6 peerIp. Admin
Конфигурация сверена с [официальным BGP connection/AFI](https://manual.mikrotik.com/docs/cli-reference/routing/bgp/connection/) и [IPv6 address lists](https://manual.mikrotik.com/docs/firewall-and-quality-of-service/firewall/address-lists/). Границы: IPv6 BGP transport/NLRI внутри GRE по IPv4 public outer, два собственных peers/single path. Это не IPv6 public WAN/outer, independent WAN, external peer interoperability, BFDv6, continuous packet loss/maximum throughput/scale acceptance. ReUI/Frame/base-nova и runtime backend ux-ospf154/frontend ux-ospf153 сохранены.
Следующий156 — общая UI/context regression после151–154, один проход с сохранением исходных изображений;12.5 открыт.
## 12.5.156 — bigint идентификаторы серверов и начало общей регрессии (2026-10-11)
Audit actual schema обнаружил, что servers.id и references — PG bigint с Drizzle mode:number. В152 ошибочно введён верхний предел2147483647; это не диапазон данной DB схемы. Ограничение удалено, общая parseDbServerId требует positive safe integer и полную decimal строку. IDs2147483648 и Number.MAX_SAFE_INTEGER сохраняются точно;9007199254740992/3 и прочие unsafe/malformed не округляются в другой сервер. Историческая запись152 отражает прежнюю ошибочную границу; этот блок её исправляет.
Permanent server-id.test.ts проверяет25 valid/invalid forms без SQL. Dedicated PG test сохранил33 API checks disabled Home/Jump/Exit с forbidden ROS factory/contacts0, enabled control и2 реальные positive bigint rows. Guards MMAPP_OWN_TEST_DB152/156/current_database выполнены до bootstrap; собственная база удалена. Локальные config-sync/live-maps profiles и production backend build passed;984 emitted files совпали. Backend ux-id156 развёрнут, frontend ux-ospf153 сохранён. Native devices не изменялись этим блоком.
Протоколы: [SQL/33 guards/2 bigint controls](ux-ui/acceptance/network-bigint-sql-2026-10-11.json), [compiled984](ux-ui/acceptance/network-bigint-compiled-2026-10-11.json). ReUI/Frame/base-nova/контракты UI сохранены, frontend build без source delta не повторялся.
Однократная общая UI regression запущена:1260 main cases.348 текущих tracked screen files, включая8 preexisting user-dirty GRE/VXLAN изображений, сохранены с SHA256 в ignored tmp/regression156-originals. На checkpoint774 cases ошибок не наблюдалось; это не завершённая приёмка всего прогона. Source screenshots могут временно меняться тестами и должны быть восстановлены исходными bytes после main/context. В157 дождаться основного процесса, выполнить221 context cases одним sequential server session, восстановить348 файлов, выполнить types/checks и записать точные exits/failures. Не выдавать running/skipped за pass.12.5 открыт.