feat(appstore): автосборка золотого LXC-шаблона из UI (Workstream B)
Автоматизирует ручную процедуру docs/golden-template.md: pveam download
базового Debian → pct create временного CT → установка Docker/Compose →
каталоги/сеть/logrotate → (опц.) проверка nginx → vzdump в vztmpl → удаление
временного CT. При сбое недособранный CT очищается.
- backend/app/appstore/golden_template.py — сборщик поверх SSH-инфраструктуры
пайплайна (pct/pvesm/pveam/vzdump); идемпотентность по существующему vztmpl,
версия базового шаблона берётся из pveam (не хардкодится)
- appstore_engine: prepare_golden_template/_run_golden_template (фон, журнал
AppOperation + WS), golden_template_status; собранный volid сохраняется в
PanelSettings и предпочитается env при установке (_resolve_golden_template)
- API: POST /api/appstore/golden-template, GET .../golden-template/status
(app:manage / app:view)
- Frontend: GoldenTemplateDialog (выбор сервера/ноды/хранилищ, force, живой
прогресс опросом статуса) + admin-кнопка «Золотой шаблон» на странице App
Store; хуки useGoldenTemplateStatus/useBuildGoldenTemplate; локали RU/EN
Проверено: роуты зарегистрированы, golden_template_status и приоритет
_resolve_golden_template (override→saved→env) корректны, tsc 0 ошибок.
Полный e2e-прогон сборки на реальной ноде — по запросу.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>