Ранее при вводе своего сценария AI получал fallback "повседневный разговор" вместо текста пользователя.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Мини-игры (/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>
Теперь во всех промптах для японского языка обязательно добавляется
фуригана к кандзи в формате: 漢字(かんじ)
Обновлены методы:
- generate_mini_story
- generate_thematic_words
- extract_words_from_text
- generate_words_of_day_batch
- generate_level_test
- generate_grammar_exercise
- generate_task_sentences_batch
- start_conversation / continue_conversation (уже было)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Добавлен флаг -f для принудительного удаления контейнера
- docker-bot-rebuild теперь пересобирает образ (--build)
- docker-bot-rebuild-full удаляет старый образ перед сборкой
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Главное меню: настройка модели, генерация слов дня, просмотр слов
- Кнопка "Слова дня (сегодня)" показывает все сгенерированные слова
- Навигация между разделами
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Оптимизирована генерация слов дня: 2 запроса к AI вместо 11
- Добавлена кнопка "Слово дня" в /stats для быстрого доступа
- Локализация для ru/en/ja
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Исправлена ошибка NameError: name 'json' is not defined при генерации слова дня
- Добавлена админ-команда /generate_wod для принудительной генерации слов дня
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Добавлены мини-истории для чтения с выбором жанра и вопросами
- Кнопка показа/скрытия перевода истории
- Количество вопросов берётся из настроек пользователя
- Слово дня генерируется глобально в 00:00 UTC
- Кнопка "Практика" открывает меню выбора режима
- Убран автоматический create_all при запуске (только миграции)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Исправлено: при выполнении задач использовалась глобальная модель
вместо привязанной к пользователю.
Обновлены все handlers и services для передачи user_id в AI методы.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Добавлена поддержка персональных 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>
- Добавлена поддержка нескольких AI провайдеров (OpenAI, Google Gemini)
- Добавлена админ-панель (/admin) для переключения AI моделей
- Добавлен AIModelService для управления моделями в БД
- Добавлен выбор типа заданий (микс, перевод слов, подстановка, перевод предложений)
- Добавлена настройка количества заданий (5-15)
- ai_service динамически выбирает провайдера на основе активной модели
- Обработка ограничений моделей (temperature, response_format)
- Очистка markdown обёртки из ответов Gemini
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add separate translation_language setting (independent from interface language)
- Implement 3-step onboarding for new users:
1. Choose interface language
2. Choose learning language
3. Choose translation language
- Fix localization issues when using callback.message (user_id from state)
- Add UserService.get_user_by_id() method
- Add get_user_translation_lang() helper in i18n
- Update all handlers to use correct translation language
- Add localization keys for onboarding (ru/en/ja)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add WordTranslation model for storing multiple translations per word
- AI generates translations with example sentences and their translations
- Show example usage after answering tasks (learning + interface language)
- Save translations to word_translations table when adding words from tasks
- Improve word exclusion in new_words mode (stronger prompt + client filtering)
- Add migration for word_translations table
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Consolidate "Add word" menu with submenu (Manual, Thematic, Import)
- Add file import support (.txt, .md) with AI batch translation
- Add vocabulary pagination with navigation buttons
- Add "Add word" button in tasks for new words mode
- Fix undefined variables bug in vocabulary confirm handler
- Add localization keys for add_menu in ru/en/ja
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add separate level systems: CEFR (A1-C2) for European languages, JLPT (N5-N1) for Japanese
- Store levels per language in new `levels_by_language` JSON field
- Add custom scenario option in AI practice mode
- Show action buttons after practice ends (new dialogue, tasks, words)
- Fix level display across all handlers to use correct level system
- Add Alembic migration for levels_by_language field
- Update all locale files (ru, en, ja) with new keys
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Изменения:
- Исправлена логика определения нового пользователя (проверка до создания)
- Добавлены все команды в приветственное сообщение (включая /import, /reminder, /level_test)
- Обновлена справка /help с добавлением /level_test
- Улучшено сообщение для существующих пользователей
- Добавлены переменные окружения postgres_* в settings.py для Docker
- Добавлен greenlet==3.1.1 в requirements.txt для работы SQLAlchemy async
Теперь новые пользователи правильно получают предложение пройти тест уровня при первом запуске.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Создано:
- bot/handlers/settings.py - обработчик команды /settings
Реализовано:
✅ /settings - настройки пользователя
- Выбор уровня английского (A1-C2)
- Выбор языка интерфейса (RU/EN)
- Интерактивные inline-кнопки
✅ Новый тип заданий - заполнение пропусков
- AI генерирует предложение с пропуском
- Показывает перевод для контекста
- Проверка ответа через AI
✅ Смешанные задания
- Случайное чередование типов (переводы + fill-in)
- Более разнообразная практика
Изменено:
- services/ai_service.py - метод generate_fill_in_sentence()
- services/task_service.py - метод generate_mixed_tasks()
- services/user_service.py - методы обновления настроек
- bot/handlers/tasks.py - использование смешанных заданий
- main.py - регистрация роутера настроек
Теперь бот предлагает:
- Перевод EN→RU
- Перевод RU→EN
- Заполнение пропусков в предложениях
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Изменено:
- services/ai_service.py - автоматическое использование Cloudflare Gateway
- config/settings.py - настройки CLOUDFLARE_ACCOUNT_ID и CLOUDFLARE_GATEWAY_ID
- .env.example - добавлены переменные Cloudflare
- README.md - секция о Cloudflare AI Gateway
Создано:
- docs/CLOUDFLARE_GATEWAY.md - подробная документация
Преимущества:
🚀 Кэширование запросов - экономия до 99% на повторных запросах
📊 Аналитика - детальная статистика использования AI
💰 Контроль расходов - мониторинг стоимости
🛡️ Безопасность - защита API ключей и rate limiting
Использование:
1. Создать Gateway на dash.cloudflare.com
2. Добавить CLOUDFLARE_ACCOUNT_ID в .env
3. Все запросы автоматически пойдут через Cloudflare
Для отключения оставьте CLOUDFLARE_ACCOUNT_ID пустым.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Создано:
- services/task_service.py - сервис для работы с заданиями
- bot/handlers/tasks.py - обработчики команд /task и /stats
Реализовано:
✅ /task - генерация заданий на перевод слов
- 5 случайных слов из словаря пользователя
- Два направления: EN→RU и RU→EN
- Показ транскрипции
- Проверка ответов через AI
- Детальная обратная связь
- Сохранение результатов в БД
✅ /stats - статистика обучения
- Количество слов в словаре
- Количество изученных слов
- Выполненные задания
- Процент правильных ответов
Функции:
- Умные повторения (слова с меньшим количеством повторений появляются чаще)
- Обновление статистики слов после каждого задания
- Прогресс-бар выполнения заданий
- Эмодзи-реакции на результат
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Создано:
- docker-compose.dev.yml - конфигурация только для PostgreSQL
- make docker-db - команда для запуска только БД на порту 15433
- make docker-db-stop - остановка БД
Изменено:
- Makefile - добавлены команды для работы с БД
- README.md - инструкции по запуску БД
- .env.example - обновлен порт БД на 15433
Использование:
make docker-db - запустить PostgreSQL на localhost:15433
make run - запустить бота локально с подключением к БД
Порт 15433 выбран чтобы избежать конфликтов с другими PostgreSQL.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Создано:
- Makefile - команды для управления проектом
- setup.sh - автоматическая установка и настройка
- Виртуальное окружение .venv
Изменено:
- requirements.txt - исправлена версия pydantic для совместимости
- README.md - добавлены инструкции по установке через venv
Команды Makefile:
- make install - установка зависимостей
- make run - запуск бота
- make docker-up - запуск через Docker
- make clean - очистка venv и кэша
Быстрый старт: ./setup.sh
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Создано:
- Dockerfile для контейнеризации бота
- docker-compose.yml с сервисами bot и db
- .dockerignore для оптимизации образа
- README_DOCKER.md с подробной документацией
Изменено:
- README.md - добавлена секция Docker
- .env.example - добавлены переменные PostgreSQL
Теперь бот можно запустить одной командой:
docker-compose up -d
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Основные компоненты:
- База данных (PostgreSQL) с моделями User, Vocabulary, Task
- Интеграция с OpenAI API для перевода слов
- Команды: /start, /add, /vocabulary, /help
- Сервисы для работы с пользователями, словарем и AI
Реализовано:
✅ Регистрация и приветствие пользователя
✅ Добавление слов в словарь с автоматическим переводом
✅ Просмотр личного словаря
✅ Архитектура проекта с разделением на слои
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Описание основных функций и архитектуры
- 5 способов добавления слов в словарь
- Структура базы данных
- Этапы разработки
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>