/**
 * TypeScript types for Abitur Documents (NiBiS, etc.)
 */

export interface AbiturDokument {
  id: string
  dateiname: string
  original_dateiname: string
  bundesland: string
  fach: string
  jahr: number
  niveau: 'eA' | 'gA'  // erhöhtes/grundlegendes Anforderungsniveau
  typ: 'aufgabe' | 'erwartungshorizont'
  aufgaben_nummer: string  // I, II, III
  status: 'pending' | 'indexed' | 'error'
  confidence: number
  file_path: string
  file_size: number
  indexed: boolean
  vector_ids: string[]
  created_at: string
  updated_at: string
}

export interface AbiturDocsResponse {
  documents: AbiturDokument[]
  total: number
  page: number
  limit: number
  total_pages: number
}

export interface AbiturDocsFilter {
  fach?: string
  jahr?: number
  bundesland?: string
  niveau?: 'eA' | 'gA'
  typ?: 'aufgabe' | 'erwartungshorizont'
  page?: number
  limit?: number
}

// Available filter options
export const FAECHER = [
  { id: 'deutsch', label: 'Deutsch' },
  { id: 'mathematik', label: 'Mathematik' },
  { id: 'englisch', label: 'Englisch' },
  { id: 'biologie', label: 'Biologie' },
  { id: 'physik', label: 'Physik' },
  { id: 'chemie', label: 'Chemie' },
  { id: 'geschichte', label: 'Geschichte' },
] as const

export const JAHRE = [2025, 2024, 2023, 2022, 2021, 2020] as const

export const BUNDESLAENDER = [
  { id: 'niedersachsen', label: 'Niedersachsen' },
  { id: 'bayern', label: 'Bayern' },
  { id: 'nrw', label: 'Nordrhein-Westfalen' },
  { id: 'bw', label: 'Baden-Württemberg' },
] as const

export const NIVEAUS = [
  { id: 'eA', label: 'Erhöhtes Anforderungsniveau (eA)' },
  { id: 'gA', label: 'Grundlegendes Anforderungsniveau (gA)' },
] as const

export const TYPEN = [
  { id: 'aufgabe', label: 'Aufgabe' },
  { id: 'erwartungshorizont', label: 'Erwartungshorizont' },
] as const

// Helper functions
export function formatFileSize(bytes: number): string {
  if (bytes < 1024) return bytes + ' B'
  if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB'
  return (bytes / (1024 * 1024)).toFixed(1) + ' MB'
}

export function formatDocumentTitle(doc: AbiturDokument): string {
  const fachLabel = FAECHER.find(f => f.id === doc.fach)?.label || doc.fach
  const typLabel = doc.typ === 'erwartungshorizont' ? 'EWH' : 'Aufgabe'
  return `${fachLabel} ${doc.jahr} - ${doc.niveau} ${doc.aufgaben_nummer} (${typLabel})`
}
