""" Data models for VocabListGenerator """ from dataclasses import dataclass # Valid CEFR proficiency levels CEFR_LEVELS = ("A1", "A2", "B1", "B2", "C1", "C2") CEFR_DESCRIPTIONS = { "A1": "Beginner — absolute basics, the 100-200 most common words, simple concrete concepts", "A2": "Elementary — basic everyday vocabulary, simple familiar topics", "B1": "Intermediate — practical vocabulary for familiar topics, travel, work", "B2": "Upper-Intermediate — broader vocabulary including abstract and technical topics", "C1": "Advanced — precise vocabulary, idiomatic expressions, nuanced meaning", "C2": "Proficient — near-native vocabulary, highly specialised or literary terms", } @dataclass class VocabRequest: """Represents a single vocabulary generation request""" amount: int # Number of word pairs to generate lang_first_id: int # Polly language ID for the first language lang_second_id: int # Polly language ID for the second language lang_first_name: str # Human-readable name of the first language (sent to LLM) lang_second_name: str # Human-readable name of the second language (sent to LLM) category: str # Topic / category of the vocabulary list instructions: str # Any additional instructions for the LLM level: str = "A2" # CEFR proficiency level (A1, A2, B1, B2, C1, C2)