feat(admin-ui): Phase B frontend — notifications preferences route + UI

This commit is contained in:
Александр Зимин
2026-05-15 14:56:48 +00:00
parent 300fd12d6c
commit e2fc3bcbe0
7 changed files with 332 additions and 4 deletions
+38
View File
@@ -617,6 +617,25 @@ i18n
'reviews.mine.anonTitle': 'Войдите чтобы видеть свои черновики',
'reviews.mine.anonDescription':
'Собственные drafts видны только после авторизации — backend фильтрует по вашему JWT sub claim. Войдите через Keycloak чтобы открыть Мои.',
// === /me/notifications/preferences (Phase B) ===
'prefs.title': 'Уведомления',
'prefs.description':
'Per-channel настройки доставки. Применяется только к вашим уведомлениям (reviewer pool inbox остаётся ON).',
'prefs.anonTitle': 'Войдите чтобы управлять подписками',
'prefs.anonDescription':
'Настройки уведомлений хранятся per-user (по JWT sub claim). Войдите через Keycloak чтобы открыть страницу.',
'prefs.email.label': 'Email',
'prefs.email.description':
'SMTP доставка через сконфигурированный mail.host. На staging это mailpit catcher; на prod — реальный relay.',
'prefs.express.label': 'Express',
'prefs.express.description':
'Корпоративный мессенджер. Канал ещё не подключён — toggle сохраняется на будущее.',
'prefs.telegram.label': 'Telegram',
'prefs.telegram.description':
'Telegram бот. Канал ещё не подключён — toggle сохраняется на будущее.',
'prefs.comingSoon': 'Скоро',
'prefs.saveError': 'Не удалось сохранить настройки. Попробуйте ещё раз.',
'notifications.preferencesLink': 'Настроить каналы →',
'reviews.mine.filter.all': 'Все',
'reviews.mine.filter.pending': 'На ревью',
'reviews.mine.filter.wip': 'В работе',
@@ -1377,6 +1396,25 @@ i18n
'reviews.mine.anonTitle': 'Sign in to see your drafts',
'reviews.mine.anonDescription':
'Your own drafts are visible only after sign-in — backend filters by your JWT sub claim. Sign in via Keycloak to open Mine.',
// === /me/notifications/preferences (Phase B) ===
'prefs.title': 'Notifications',
'prefs.description':
'Per-channel delivery preferences. Applies only to your notifications (reviewer pool inbox stays ON).',
'prefs.anonTitle': 'Sign in to manage your subscriptions',
'prefs.anonDescription':
'Notification preferences are stored per-user (by JWT sub claim). Sign in via Keycloak to open this page.',
'prefs.email.label': 'Email',
'prefs.email.description':
'SMTP delivery via configured mail.host. On staging it is the mailpit catcher; on prod — real relay.',
'prefs.express.label': 'Express',
'prefs.express.description':
'Corporate messenger. Channel not wired yet — toggle is stored for later.',
'prefs.telegram.label': 'Telegram',
'prefs.telegram.description':
'Telegram bot. Channel not wired yet — toggle is stored for later.',
'prefs.comingSoon': 'Soon',
'prefs.saveError': 'Failed to save preferences. Please try again.',
'notifications.preferencesLink': 'Manage channels →',
'reviews.mine.emptyFilter': 'No drafts in this category',
'reviews.mine.filter.all': 'All',
'reviews.mine.filter.pending': 'Under review',