website (17 pages + 3 components): - multiplayer/wizard, middleware/wizard+test-wizard, communication - builds/wizard, staff-search, voice, sbom/wizard - foerderantrag, mail/tasks, tools/communication, sbom - compliance/evidence, uni-crawler, brandbook (already done) - CollectionsTab, IngestionTab, RiskHeatmap backend-lehrer (5 files): - letters_api (641 → 2), certificates_api (636 → 2) - alerts_agent/db/models (636 → 3) - llm_gateway/communication_service (614 → 2) - game/database already done in prior batch klausur-service (2 files): - hybrid_vocab_extractor (664 → 2) - klausur-service/frontend: api.ts (620 → 3), EHUploadWizard (591 → 2) voice-service (3 files): - bqas/rag_judge (618 → 3), runner (529 → 2) - enhanced_task_orchestrator (519 → 2) studio-v2 (6 files): - korrektur/[klausurId] (578 → 4), fairness (569 → 2) - AlertsWizard (552 → 2), OnboardingWizard (513 → 2) - korrektur/api.ts (506 → 3), geo-lernwelt (501 → 2) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
RAG Admin Page Refactoring
Status: Partially Refactored
The large page.tsx (2,964 lines) has been partially split into smaller components.
Structure
website/app/admin/rag/
├── page.tsx # Main page (needs update to import components)
├── types.ts # Shared type definitions (150 lines)
├── components/
│ ├── index.ts # Component exports
│ ├── CollectionsTab.tsx # Collections management (593 lines)
│ ├── UploadTab.tsx # File upload (327 lines)
│ ├── IngestionTab.tsx # Ingestion control (512 lines)
│ └── DocumentsTab.tsx # Document browser (425 lines)
└── wizard/ # Existing wizard subdirectory
Extracted Components
| Component | Lines | Description |
|---|---|---|
| CollectionsTab | 593 | Collection CRUD, CollectionCard |
| UploadTab | 327 | File upload with drag & drop |
| IngestionTab | 512 | Ingestion control, progress, history |
| DocumentsTab | 425 | Document list, filtering, preview |
Remaining in page.tsx
- SearchTab (~230 lines)
- MetricsTab (~110 lines)
- SystemInfoTab (~350 lines)
- Main component and tab navigation (~290 lines)
TODO
- Update
page.tsxto import extracted components - Extract remaining tabs (SearchTab, MetricsTab, SystemInfoTab)
- Add comprehensive tests
Types
All shared types are in types.ts:
- Collection, CreateCollectionData
- IngestionStatus, SearchResult
- UploadResult, LiveProgress
- IndexedStats, PendingFile
- IndexedDocument, DocumentContent
- SystemInfo, TabId
Usage
import { CollectionsTab, UploadTab, IngestionTab, DocumentsTab } from './components'
import type { Collection, IngestionStatus } from './types'