'use client' /** * Education Search Admin Page * * Manages seed URLs, crawl settings, and index statistics for the * edu-search-service (Tavily alternative for German education content) */ import { useState } from 'react' import AdminLayout from '@/components/admin/AdminLayout' import { useEduSearchData } from './useEduSearchData' import SeedsTab from './_components/SeedsTab' import CrawlTab from './_components/CrawlTab' import StatsTab from './_components/StatsTab' import RulesTab from './_components/RulesTab' const tabDefs = [ { id: 'seeds' as const, name: 'Seed-URLs', icon: '🌱' }, { id: 'crawl' as const, name: 'Crawl-Steuerung', icon: '🕷️' }, { id: 'stats' as const, name: 'Statistiken', icon: '📊' }, { id: 'rules' as const, name: 'Tagging-Regeln', icon: '🏷️' }, ] export default function EduSearchAdminPage() { const [activeTab, setActiveTab] = useState<'seeds' | 'crawl' | 'stats' | 'rules'>('seeds') const [searchQuery, setSearchQuery] = useState('') const { seeds, allSeeds, categories, stats, selectedCategory, setSelectedCategory, loading, initialLoading, error, handleStartCrawl, handleDelete, handleToggleEnabled, handleSaved, fetchSeeds, fetchStats, } = useEduSearchData() return ( {initialLoading && (
Seeds werden geladen...
)} {error && !initialLoading && (
⚠️

{error}

Stelle sicher, dass der Backend-Service (http://localhost:8000) erreichbar ist.

)} {!initialLoading && (
{activeTab === 'seeds' && ( )} {activeTab === 'crawl' && ( )} {activeTab === 'stats' && ( )} {activeTab === 'rules' && }
)}
) }