feat: мини-игры, premium подписка, улучшенные контексты

Мини-игры (/games):
- Speed Round: 10 раундов, 10 секунд на ответ, очки за скорость
- Match Pairs: 5 слов + 5 переводов, соединить пары

Premium-функции:
- Поля is_premium и premium_until для пользователей
- AI режим проверки ответов (учитывает синонимы)
- Batch проверка всех ответов одним запросом

Улучшения:
- Примеры использования для всех добавляемых слов
- Разбиение переводов по запятой на отдельные записи
- Полные предложения в контекстах (без ___)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-10 19:42:10 +03:00
parent b74ea2170c
commit adc8a6bf8e
18 changed files with 1819 additions and 34 deletions

72
versions/v1.5.0.md Normal file
View File

@@ -0,0 +1,72 @@
# Версия 1.5.0
**Дата:** 2025-12-10
## Новые функции
### Мини-игры
- Добавлен раздел мини-игр (`/games`)
- **Быстрый перевод (Speed Round)**
- 10 раундов, 10 секунд на ответ
- Очки за скорость ответа
- Прогресс-бар таймера в реальном времени
- Фильтрация слов по изучаемому языку
- Список ответов с результатами в конце игры
- **Найди пару (Match Pairs)**
- 5 слов и 5 переводов вперемешку
- Нужно соединить правильные пары (формат: 1A, 2B, 3C...)
- Учёт времени прохождения
- Подсчёт очков за правильные пары
- Кнопка "Мини-игры" в главном меню
### Система подписки (Premium)
- Добавлено поле `is_premium` для пользователей
- Добавлено поле `premium_until` для даты окончания подписки
- Премиум-пользователи могут выбирать режим проверки в играх:
- **AI режим** - проверка с учётом синонимов и вариаций ответа
- **Простой режим** - точное сравнение с переводами из словаря
### Улучшенная проверка ответов
- В простом режиме теперь учитываются все переводы слова из таблицы `word_translations`
- Добавлен метод `check_translations_batch` в AI сервис для пакетной проверки всех ответов одним запросом
- AI проверка выполняется в конце игры (оптимизация количества запросов)
- Предупреждение о работе AI режима перед началом игры
### Унификация добавления слов
- Все способы добавления слов теперь сохраняют перевод в таблицу `word_translations`
- Это обеспечивает корректную работу проверки в мини-играх для всех слов
- Добавлен метод `add_translation_split` - автоматическое разбиение переводов по запятой/точке с запятой на отдельные записи
## Изменения в базе данных
### Новые поля в таблице `users`
- `is_premium` (Boolean) - флаг подписки
- `premium_until` (DateTime) - дата окончания подписки
### Миграция
- `20251210_add_is_premium.py`
## Новые файлы
- `bot/handlers/minigames.py` - обработчики мини-игр
- `versions/v1.5.0.md` - файл обновления
## Изменённые файлы
- `database/models.py` - добавлены поля подписки
- `services/ai_service.py` - метод `check_translations_batch` для пакетной проверки
- `services/vocabulary_service.py` - методы `get_random_words_with_translations`, `add_translation_split`
- `bot/handlers/start.py` - кнопка мини-игр в меню
- `bot/handlers/words.py` - добавление в word_translations при добавлении тематических слов
- `bot/handlers/import_text.py` - добавление в word_translations при импорте из текста
- `bot/handlers/stories.py` - добавление в word_translations при добавлении слов из историй
- `bot/handlers/wordofday.py` - добавление в word_translations при добавлении слова дня
- `main.py` - регистрация роутера мини-игр
- `locales/ru.json`, `locales/en.json`, `locales/ja.json` - локализация мини-игр
## Локализация
Добавлены ключи для мини-игр на всех языках (ru/en/ja):
- Меню мини-игр
- Правила Speed Round
- Правила Match Pairs
- Режимы проверки (AI/простой)
- Предупреждение о работе AI режима
- Результаты и список ответов