platform: modularize api/gui, add docs-tests-web foundation, and refresh root config

This commit is contained in:
beckline
2026-03-26 22:40:54 +03:00
parent 0e2d7f61ea
commit 6a56d734c2
562 changed files with 70151 additions and 16423 deletions

View File

@@ -0,0 +1,75 @@
# E5.2 SingBox Desktop Dashboard Spec
Дата: 2026-03-07
Статус: in-progress (foundation implemented)
Владелец: Engineering
## 1) Цель
- Зафиксировать дизайн вкладки `SingBox` для desktop, чтобы не смешивать runtime-управление и конфигурацию профилей.
- Подготовить структуру, которую позже можно переиспользовать в web/mobile.
## 2) Структура вкладки (fixed)
- Визуальная модель: `card-based dashboard` (верхние metric cards + grid profile cards + control panels).
### A. Connection card (runtime)
- Показывает только текущее состояние подключения:
- runtime status,
- active profile,
- protocol/transport,
- routing/dns/kill-switch effective state,
- last update timestamp.
- Быстрые действия:
- `Prepare`,
- `Connect/Switch`,
- `Disconnect`,
- `Restart`,
- `Rollback policy`.
### B. Profile settings (per profile)
- Настройки конкретного профиля:
- `Routing mode`,
- `DNS mode`,
- `Kill-switch`.
- Для каждого блока поддерживается `Use global ...` (наследование).
- Действия профиля:
- `Save draft`,
- `Validate profile`,
- `Apply profile`.
Примечание этапа:
- `Validate/Apply profile` через `/api/v1/transport/singbox/profiles/*` будут полноценно подключены на шагах `E5.2/E5.3`.
- На foundation-этапе эти кнопки логируют намерение и не ломают runtime-flow.
### C. Global defaults
- Общие дефолты для всех профилей:
- default routing mode,
- default DNS mode,
- default kill-switch.
- Сохранение настроек и применение в effective-резолюции профиля.
## 3) Правило приоритета (обязательное)
- `Profile override` > `Global default`.
- Если в профиле включено `Use global ...`, используется глобальное значение.
- Runtime card всегда показывает итоговое effective состояние.
## 4) Границы ответственности
- Вкладка `SingBox` управляет только `SingBox` профилями/engine.
- `DNSTT/Phoenix` в этом этапе не добавляются во вкладку (backend-ready трек отдельно).
- `Routing policy` ownership/anti-conflict остаётся в Go API pipeline `validate -> confirm -> apply`.
## 5) Что уже реализовано в GUI foundation
- Перестроена вкладка на 3 секции: runtime card, profile settings, global defaults.
- Добавлен card-based UI слой:
- верхний ряд compact metric cards,
- кликабельный grid connection profile cards (выбор карточки синхронизирован с active engine selector).
- Реализован compact-mode для настроек:
- `Runtime details`, `Profile settings`, `Global defaults`, `Activity log` открываются кнопками, по умолчанию скрыты.
- Добавлены `Use global` переключатели и effective summary.
- Добавлено локальное сохранение настроек (`QSettings`) для global/profile режимов.
- Сохранены рабочие runtime-кнопки `Prepare/Connect-Switch/Disconnect/Restart/Rollback`.
## 6) Следующий технический шаг
- Подключить профильные кнопки `Validate/Apply` к реальному Go API:
- `POST /api/v1/transport/singbox/profiles/{id}/validate`,
- `POST /api/v1/transport/singbox/profiles/{id}/apply`,
- с обработкой `base_revision`, ошибок и rollback-подсказок в UI.