10 KiB
10 KiB
Отчет: Hermes Hub — UX/UI Refinement v2 + Unified Health + Account Workflow
Дата: 2026-08-20
Исполнитель: Antigravity Orchestrator & Coder
1. Что было изменено
-
Разработан и внедрён презентационный слой и Unified Health:
- Создан сервис
UnifiedHealthService(src/antigravity_provider/router/unified_health.py), являющийся единым источником истины для всех экранов (TeamView,AccountsView,ProvidersView,RoutingView,HealthView,StatusBar). - Исключены любые противоречивые статусы: отсутствие credentials теперь однозначно дает нормализованный статус
AUTH_REQUIRED(«Требуется вход» / «Авторизация истекла»), и никогда не показываетHEALTHY. - Введена модель
ProfileViewModelс полным набором презентационных полей:display_name,account_identity,provider_display_name,model_states(по семействам моделей),assigned_roles,is_main_account,is_main_orchestrator,health_state,health_label_ru,cooldown_remaining_sec,last_checked_at.
- Создан сервис
-
Вычисление агрегированного состояния системы (System Readiness):
- Внедрен агрегатор
SystemReadiness:HEALTHY: Все обязательные роли имеют рабочий Primary и необходимый резерв.LIMITED: Основные роли доступны, часть резервов ожидает входа/квоты.DEGRADED: Одна или несколько ролей работают через резервный fallback.CRITICAL: Есть обязательная роль без единого рабочего маршрута.
- В Dashboard (TeamView) верхние KPI-карточки показывают реальное состояние (
6/6 готовы,X/16 подключено,3/3 доступны,Ограниченная готовность).
- Внедрен агрегатор
-
Строгое концептуальное разделение:
- ACCOUNT: Физическая учетная запись (
vict***@gmail.com, Google / OpenAI / OpenCode). - AGENT: Логическая роль Hermes (Главный оркестратор, Кодер 1, Кодер 2, Ревьюер, Исследователь, Быстрый агент, Резерв).
- ROUTE: Цепочка исполнения (
Primary➔Fallback 1➔Fallback 2). - MAIN Account (дефолтный профиль для Hermes CLI/Desktop) ≠ Main Orchestrator (ведущая роль роутера).
- ACCOUNT: Физическая учетная запись (
-
Мастер подключения аккаунта (Add Account Wizard):
- Создан 4-шаговый интерактивный модальный визард (
AddAccountWizard):- Шаг 1: Выбор платформы (Google Antigravity, OpenAI Codex, OpenCode Go).
- Шаг 2: Авторизация (OAuth для Antigravity с кнопками открытия браузера и копирования ссылки; ввод API Key для Codex / OpenCode).
- Шаг 3: Валидация + Детектирование дубликатов (
AutoAssigner.check_duplicate_identity) + список обнаруженных моделей. - Шаг 4: Интеллектуальное автоназначение (
AutoAssigner.recommend_assignment) с пояснением причины (например: «У роли orchestrator отсутствует активный резервный аккаунт»).
- Создан 4-шаговый интерактивный модальный визард (
-
Компактная адаптивная сетка Accounts View:
- Разделение по вкладкам провайдеров (Google Antigravity, OpenAI Codex, OpenCode Go).
- Сетка 2–3 карточки в ряд.
- Подключенные аккаунты: маскированный email, бейдж провайдера, статус по семействам моделей (Gemini ● Работает, Claude ● Квота), роль, бейдж
★ MAIN, кнопки[Тест],[Назначить],[...]. - Неподключенные слоты: карточки «Свободный слот / Аккаунт не подключён» с кнопкой
[+ Подключить аккаунт]. - Холодные резервы: карточки «Холодный резерв / Не используется автоматически».
-
Провайдеры и Модели (Providers View):
- Реальные счетчики: Подключено, В строю, Требуют входа, Холодный резерв.
- Список обнаруженных моделей и кнопка «Обновить модели».
-
Визуализация цепочек маршрутизации (Routing View):
- Визуальный пайплайн с точками статусов каждого узла:
[Primary ●] ➔ [Fallback 1 ○] ➔ [Fallback 2 ●]. - Указание активного текущего маршрута.
- Визуальный пайплайн с точками статусов каждого узла:
-
Диагностический Health Tracker (Health View):
- Диагностический дашборд с группировкой по провайдерам и табличным отображением: Слот/Аккаунт, Авторизация, Семейства моделей, Статус здоровья, Время последней проверки.
-
Интерактивные Настройки (Settings View):
- Переключатели Session Affinity, Auto Failover, Auto-return после восстановления квоты, мониторинг.
- Меню выбора числа попыток failover.
- Сворачиваемая секция «Дополнительно»: пути к файлам конфигурации, кнопки «Открыть папку данных» и «Открыть журнал логов».
-
Журнал событий (Logs View):
- Структурированный
EventLogServiceс фильтрацией по категориям (Все, Аккаунты, Квоты, Маршрутизация, Система).
- Структурированный
-
Безопасность кнопки «Тест»:
- Тестирует только сохраненные credentials через прямое выполнение минимального промпта. Никогда не запускает OAuth и не открывает браузер.
-
Штатное завершение и отсутствие зомби-процессов:
- Корректная остановка фоновых воркеров при
WM_DELETE_WINDOW. - Пройдено 10 циклов стресс-теста запуска/закрытия без единого зомби-процесса.
- Корректная остановка фоновых воркеров при
2. Измененные и созданные файлы
src/antigravity_provider/router/unified_health.py— презентационный слойProfileViewModel,SystemReadiness,EventLogService.src/antigravity_provider/router/auto_assigner.py— интеллектуальные рекомендации ролейrecommend_assignment, проверка дубликатовcheck_duplicate_identity.src/antigravity_provider/router/ui/components.py— полная система статусовHubStatusBadge,HubMetricCard,HubModal.src/antigravity_provider/router/ui/add_account_wizard.py— 4-шаговый мастер подключения аккаунта.src/antigravity_provider/router/ui/views/team_view.py— главный Dashboard с реальными метриками готовности и карточками агентов.src/antigravity_provider/router/ui/views/accounts_view.py— компактная сетка аккаунтов со слотами «Свободный слот» и «Холодный резерв».src/antigravity_provider/router/ui/views/providers_view.py— реальная сводка по провайдерам и списки моделей.src/antigravity_provider/router/ui/views/routing_view.py— визуальные цепочки отказоустойчивости.src/antigravity_provider/router/ui/views/health_view.py— диагностический табличный дашборд.src/antigravity_provider/router/ui/views/settings_view.py— интерактивные параметры управления и доступ к системным путям.src/antigravity_provider/router/ui/views/logs_view.py— таймлайн событий и аудит.src/antigravity_provider/router/ui/views/about_view.py— нормализованное описание и версия.src/antigravity_provider/router/hermes_hub_app.py— неблокирующий UI, поддержка кэша экранов и безопасный shutdown.tests/test_unified_health.py— набор тестов презентационного слоя и готовности системы.tests/test_ui_refinement.py— тесты безопасности кнопки «Тест» и назначения ролей.
3. Результаты тестов и верификации
- Pytest (25/25 PASSED):
tests/test_unified_health.py(8 тестов) — PASSEDtests/test_ui_refinement.py(4 теста) — PASSEDtests/test_multi_provider_router.py(13 тестов) — PASSED
- Router Verification Suite (
scripts/verify_multi_provider_router.py):- 10/10 CHECKS PASSED (16 profiles, 6 roles, health tracker, affinity, leases, failover).
- Рендеринг всех 9 экранов (
test_all_views.py):- 9/9 ЭКРАНОВ УСПЕШНО ОТРИСОВАНЫ.
- Стресс-тест запуска и чистого завершения (
stress_test_10_cycles.py):- 10/10 циклов пройдены без ошибок (0 зомби-процессов).