fix(backups): читать экспорт RouterOS порциями без потери данных

This commit is contained in:
Denozordec committed 2026-10-14 10:38:49 +07:00
1 parent c3fb66dcbf
commit 41a76f1163
12 files changed
+1205 -18

No files matched your search

+12 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-14: блок230 — исправлена подмена нативного экспорта частичным синтетическим скриптом. Реальные конфигурации обоих CHR выгружены в Selectel S3 и скачаны; ограниченный restore собственного bridge подтверждён RouterOS. Исходные файлы/bridge сохранены, собственные DB/roles/объекты удалены;6 versions+6 delete markers очищены. Live UI1440/390 с real Portal/API принят без изменения storage settings. Backend ux-backup230/frontend ux-routing218. Далее231 — чтение файлов>=61439 байт; S3 retention/смена bucket и расширенная приёмка открыты. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блоки230–231 — реальные native backup обоих CHR в S3 и ограниченный restore собственного bridge приняты, fixture/versions очищены. Частичный synthetic fallback удалён; native exports читаются /file/read порциями<=32768 bytes с общим deadline120s и пределом8 МиБ. HTTP13 (включая70КБ/UTF-8 boundary/partial/change/size cap) и native small exports обоих CHR прошли. Backend ux-backup231/frontend ux-routing218 healthy. Далее232 — live UI сохранение/проверка S3; смена bucket/endpoint, retention и расширенная приёмка открыты. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -36,7 +36,17 @@
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–230 завершены в записанных scopes, этап открыт. Runtime backend ux-backup230/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–231 завершены в записанных scopes, этап открыт. Runtime backend ux-backup231/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
## 12.5.231 — чтение нативного экспорта порциями и контроль целостности (2026-10-14)
Для native exports введён единый /file/read file/offset/chunk-size, максимум32768 bytes в порции. Байт-offset не зависит от количества символов. Существующий raw-byte parser получил отдельное поле data; части объединяются до UTF-8 decode. Нестроковое/отсутствующее data, неполная порция, изменившийся ID/name/size/timestamp приводят к ошибке. Общий deadline120s, request timeout<=30s, максимум8 МиБ; cleanup из230 сохраняется. Существующий binary/certificate downloadFile не меняет лимит /file/get.
13 HTTP export-сценариев passed: исходные8,70КБ теперь успешно читается, short/missing/change отклонены, UTF-8 разрезан между байтами символа на32768 и восстановлен точно,>8 МиБ отклонён до чтения. test:backups и test:ros-file passed; contracts/backend build и scoped ESLint passed. Это13 unique exporter cases, не сумма повторных запусков.
Production image ux-backup231:500 исходников/1060 compiled outputs совпали; отдельный контейнер выполнил native /export file→/file/read→cleanup на обоих CHR (917/782 bytes), SHA256 и точный files baseline readback подтверждены. Реальные конфигурации небольшие: большой native экспорт не получен,70КБ принят HTTP fixture. [Native](ux-ui/acceptance/native-export231.json), [deploy](ux-ui/acceptance/backup231-deployment.json). Main backend healthy/image ID matched, frontend ux-routing218 сохранён; rollback image230 оставлен. Приватный CHR env удалён локально/на Debian, пароли не менялись.
S3 uploads/restore230 и live UI230 повторно не запускались; семантика restore не менялась. Metadata before/after не является атомарной блокировкой файла от внешнего writer. [Документация file/read](https://help.mikrotik.com/docs/spaces/ROS/pages/2555971/Files). Далее232 — live UI save/test S3 с возвратом исходных storage settings, затем адресация backup при смене bucket/endpoint и version retention. Этап12.5 открыт.
## 12.5.230 — нативные резервные копии CHR в S3 и ограниченное восстановление (2026-10-14)