feat(admin): wire instance health panel + settings instance (A9/A10)

AdminInstance shows backing-service health (db/redis/ml), read-only source
status (env-configured), and a library reindex with graceful handling when no
indexable source exists. InstanceSettings shows the active instance and offers
switch/sign-out to /connect. Adds getServices/getSources/reindex endpoints.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Цвылев Александр Вадимович
2026-07-28 20:43:27 +03:00
parent 3eba3701d0
commit 87fac7a5a1
6 changed files with 327 additions and 8 deletions
+34
View File
@@ -391,6 +391,12 @@ const ru: Translations = {
save: 'Сохранить',
saving: 'Сохранение…',
},
instance: {
current: 'Текущий инстанс',
none: 'Инстанс не выбран.',
manage: 'Управление инстансами',
signOut: 'Выйти',
},
playback: {
streamQuality: 'Качество потока',
streamQualityHint:
@@ -473,6 +479,34 @@ const ru: Translations = {
cancel: 'Отмена',
},
},
instance: {
status: {
ok: 'Работает',
down: 'Недоступен',
skipped: 'Не настроен',
},
services: {
title: 'Сервисы',
database: 'База данных',
redis: 'Redis',
ml: 'ML-сервис',
},
sources: {
title: 'Источники',
envNote: 'Источники настраиваются через переменные окружения.',
empty: 'Источники не настроены.',
available: 'Доступен',
unavailable: 'Недоступен',
},
reindex: {
title: 'Переиндексация библиотеки',
description:
'Пересканировать все индексируемые источники. Выполняется в фоне, идемпотентно.',
button: 'Переиндексировать',
enqueued: 'Переиндексация запущена ({{count}} источников).',
noSource: 'Индексируемые источники не настроены.',
},
},
},
notFound: {
title: 'Страница не найдена',