Групповое удаление бэкапов (docs/changes/013): - страница «Резервные копии»: чекбоксы, «выбрать все», панель «Выбрано: N / Удалить / Снять выбор» вместо фильтров, подтверждение, итог удаления; - backups.delete_many: все ключи проверяются до удаления, удаление параллельное; UI POST /backups/delete-many, API POST /api/v1/backups/delete; - выбор строк в app.js обобщён (data-select) для устройств и бэкапов. Поддержка CHR (docs/changes/014): - у CHR нет /system/routerboard (HTTP 400): устройство больше не считается недоступным, версия FW не показывается, обновление FW пропускается; - «есть обновление ROS» определяется строгим сравнением версий (на канале long-term последняя версия может быть старше установленной); - в таблице указана причина недоступности: авторизация / ошибка ответа / нет соединения. Тесты: 11 из 11. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Итоги: 013 — групповое удаление бэкапов
Сделано
- Макет (версия 6): колонка чекбоксов и новый лист с панелью группового удаления.
- Приложение: выбор строк, панель «Удалить / Снять выбор», подтверждение с числом файлов, итог на странице, сохранение фильтров при возврате; иконка «корзина».
- Сервис
backups.delete_many, маршрут/backups/delete-many, APIPOST /api/v1/backups/delete. - Логика выбора строк в
app.jsобобщена (data-select): работает и на устройствах, и на бэкапах.
Проверено
pytest: 10 из 10 (новый тест: чужой ключ отклоняет всю операцию и ничего не удаляет; допустимые удаляются; редирект с фильтрами и итогом; API).- В браузере на реальном бакете с тремя собственными тестовыми файлами (
backups/qa-bulk/…): выбор двух → панель вместо фильтров, подтверждение «(2)», итог «Удалено файлов: 2», фильтр сохранён; «выбрать все» → «Удалено файлов: 1»; ошибок JS нет. Тестовые файлы удалены, файлыMSK_HomeиOZ_Dachaне тронуты.
Замечания
- Удаление необратимо (версионирование бакета не используется приложением) — поэтому подтверждение и ограничение префиксом
backups/. - Единичное удаление из меню строки «⋯» сохранено.