Skip to content

DrompiX/eng-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Word learning bot

Idea

Идея проекта – разработать телеграм бота, с помощью которого можно учить незнакомые термины на английском, которые пользователь решил добавить сам.

Терминология в контексте проекта:

термин    – слово или которкая фраза
коллекция - набор терминов конкретного пользователя
задача    - термин из коллекции, который нужно правильно перевести

Схема проста. Пользователь увидел незнакомый термин (например в онлайн игре), отправил в телеграм бота, добавил перевод, потом получает случайные задачи на повторение по заданному таймеру или по запросу.

Possible improvements

  1. Код телеграм бота сделан на скорую руку, желательно переписать
  2. Можно переделать get запрос коллекции на grpc stream (пока оставил unary, чтобы успеть)
  3. Добавить нормальную авторизацию и регистрацию (не через basic authentication)
  4. Вернуть хэширование через bcrypt (сейчас sha512), для basic auth 1+ секунда на проверку хэша через bcrypt слишком критично, нужны сессии/токены/что-то ещё
  5. Распарсить grpc статусы из ошибок на клиенте (боте) и выводить более понятную информацию

Questions

  1. Как лучше прокидывать user id в эндпоинты, чтобы везде не чекать метадату с ошибками

Implementation Concept

Functional Requirements

План максимум

Требования приоритезированы по технике MoSCoW

  1. [M] Хочу добавлять термины на английском языке для последующего изучения
  2. [M] Хочу добавлять перевод вручную
  3. [M] Хочу получать список моих сохраненных терминов
  4. [M] Хочу получать задачу по запросу к системе
  5. [M] Хочу чтобы мой вариант перевода автоматически сверялся с сохраненным значением
  6. [S] Хочу получать задачу по подписке (например, раз в час)
  7. [S] Хочу удалять ненужные термины из коллекции
  8. [S] Хочу иметь определения термина на иностранном языке из стороннего API
  9. [C] Хочу чтобы термины автоматически переводились на мой родной язык
  10. [С] Хочу узнавать, если перевод не был найден и добавлять его вручную
  11. [C] Хочу подтверждать, что перевод соответствует ожидаемому
  12. [W] Хочу помечать термины изученными
  13. [W] Хочу чтобы неизученные термины появлялись в заданиях чаще
  14. [W] Хочу хранить статистику по правильности переводов слов, чтобы определять на каких словах ошибаюсь чаще всего
  15. [W] Хочу обновлять информацию по существующим терминам

MVP

Обязательная функциональность:

  • Хочу сохранять термины на английском языке для последующего изучения
  • Хочу добавлять перевод терминов вручную
  • Хочу получать список моих сохраненных терминов (коллекцию)
  • Хочу получать задачу по запросу к системе
  • Хочу чтобы мой вариант перевода сверялся с сохраненным значением

Если успею:

  • Хочу получать задачу по подписке (например, раз в час)
  • Хочу удалять ненужные термины из коллекции
  • Хочу иметь определения термина на английском языке из стороннего API

Default Constraints

  1. Сервис должен предоставлять gRPC интерфейс
  2. Сервис должен предоставлять HTTP интерфейс как прокси к gRPC интерфейсу
  3. Интерфейс бота, используемый в мессенджере, должен быть продублирован через gRPC/HTTP ручки
  4. Код должен быть покрыт тестами, с использованием моков
  5. Сервис должен использовать миграции при работе с БД
  6. База данных должна быть PostgreSQL
  7. Взаимодействие с сервисом через интерфейс Telegram бота
  8. Сервис должен хранить конфигурацию в yaml файлах
  9. Сервис должен быть завёрнут в докер
  10. Дедлайн – 16 мая 2022

Business Constaints

  1. Ограничение количества терминов на пользователя – 20
  2. Иностранный язык - английский, родной язык - русский
  3. MVP должно работать без вложения средств на сервер/API/итп

Conceptual Diagram

Alt Text

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published