import React from 'react'; import { Settings, Trash2, RefreshCw } from 'lucide-react'; export default function AdminTab({ adminSelectedStreamId, setAdminSelectedStreamId, streams, editTitle, setEditTitle, editCategory, setEditCategory, savingMetadata, setSavingMetadata, deletingStream, setDeletingStream, syncingVods, setSyncingVods, cleaningStreams, setCleaningStreams, loadingAdminStats, adminStats, fetchAdminStats, fetchStreams, API_BASE }) { return (

Панель администратора

{/* Left: Stream management */}

Управление стримами

{(() => { const activeStream = streams.find(s => s.id === parseInt(adminSelectedStreamId)); if (!activeStream) return (
Выберите стрим в выпадающем списке выше для выполнения действий.
); const statusLabel = activeStream.backfill_status === 'completed' ? 'Импортирован полностью' : activeStream.backfill_status === 'pending' ? 'В очереди воркера (ожидание)' : activeStream.backfill_status === 'live' ? 'В эфире (live)' : activeStream.backfill_status; const statusColor = activeStream.backfill_status === 'completed' ? 'var(--color-success, #00f2fe)' : activeStream.backfill_status === 'pending' ? 'var(--color-warning, #f1c40f)' : 'var(--color-primary)'; return (

ID сессии: {activeStream.id}

Статус импорта VOD: {statusLabel}

Twitch VOD ID: {activeStream.twitch_vod_id || 'Отсутствует'}

Начало: {new Date(activeStream.start_time).toLocaleString('ru-RU')}

{/* Edit Metadata */}

Редактирование названия / категории

setEditTitle(e.target.value)} />
setEditCategory(e.target.value)} />
{/* VOD Actions (Only if VOD is present) */} {activeStream.twitch_vod_id && (

Действия импорта VOD:

)} {/* Delete Button */}
); })()}
{/* Right: Global actions and Stats */}
{/* Global Actions Panel */}

Глобальные действия

{/* Twitch VOD Sync */}

Синхронизация Twitch VOD

Запросить последние 20 архивов из Twitch API.

{/* Database Cleanup */}

Очистить пустые стримы

Удалить сессии с 0 сообщениями и 0 слов.

{/* System Statistics Panel */}

Системная статистика

{loadingAdminStats || !adminStats ? (
Загрузка статистики...
) : (
Режим базы данных: {adminStats.dbMode.toUpperCase()}
{adminStats.dbMode === 'sqlite' && (
Размер файла SQLite: {adminStats.dbSizeMb} МБ
)}
Всего стримов в базе: {adminStats.totalStreams}
Всего сообщений чата: {adminStats.totalMessages.toLocaleString()}
Всего голосовых слов: {adminStats.totalVoiceWords.toLocaleString()}
)}
); }