feat: персональные AI модели, оптимизация задач, фильтрация словаря
- Добавлена поддержка персональных AI моделей для каждого пользователя - Оптимизация создания заданий: батч-запрос к AI вместо N запросов - Фильтрация слов по языку изучения (source_lang) в словаре - Удалены неиспользуемые колонки examples и category из vocabulary - Миграции для ai_model_id и удаления колонок 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -72,6 +72,7 @@ class User(Base):
|
||||
last_reminder_sent: Mapped[Optional[datetime]] = mapped_column(DateTime)
|
||||
streak_days: Mapped[int] = mapped_column(Integer, default=0)
|
||||
tasks_count: Mapped[int] = mapped_column(Integer, default=5) # Количество заданий (5-15)
|
||||
ai_model_id: Mapped[Optional[int]] = mapped_column(Integer, default=None) # ID выбранной AI модели (NULL = глобальная)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
last_active: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
@@ -90,8 +91,6 @@ class Vocabulary(Base):
|
||||
source_lang: Mapped[Optional[str]] = mapped_column(String(5)) # ISO2 языка слова (язык изучения)
|
||||
translation_lang: Mapped[Optional[str]] = mapped_column(String(5)) # ISO2 языка перевода (обычно язык интерфейса)
|
||||
transcription: Mapped[Optional[str]] = mapped_column(String(255))
|
||||
examples: Mapped[Optional[dict]] = mapped_column(JSON) # JSON массив примеров
|
||||
category: Mapped[Optional[str]] = mapped_column(String(100))
|
||||
difficulty_level: Mapped[Optional[LanguageLevel]] = mapped_column(SQLEnum(LanguageLevel))
|
||||
source: Mapped[WordSource] = mapped_column(SQLEnum(WordSource), default=WordSource.MANUAL)
|
||||
times_reviewed: Mapped[int] = mapped_column(Integer, default=0)
|
||||
|
||||
Reference in New Issue
Block a user