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:
72
versions/v1.5.0.md
Normal file
72
versions/v1.5.0.md
Normal 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 режима
|
||||
- Результаты и список ответов
|
||||
Reference in New Issue
Block a user