Skip to content

misterOlrox/SpringChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TouchsoftChat

Задание №1. Консольный чат.

Необходимый функционал:

  • Два типа пользователей: “клиент” и “агент”, которые могут общаться друг с другом.
  • Поддерживаются только личные сообщения клиента с агентом (клиент не может писать другому клиенту, а агент - другому агенту).
  • Когда клиент начинает писать сообщение, он ещё не знает, с каким агентом он будет общаться.
  • При получении первого сообщения клиента сервер должен выбрать свободного агента в качестве собеседника.
  • Агент может вести беседу одновременно только с одним клиентом.
  • Должны поддерживаться консольные команды для регистрации в системе, завершения чата и выходы из системы.
  • Сообщения, отправленные клиентом в отсутствии соединения с агентом не должны теряться.

Технические требования:

  • Автоматическая сборка проекта посредством Apache Maven
  • Покрытие кода unit-тестами
  • Логирование основных событий с указанием времени:
    • Появления агента и клиента в системе
    • Начало и завершение чата

Пример варианта использования:

  • Запускаем сервер
  • Запускаем клиентское приложение
  • Вводим “/register agent Cooper”
  • Сервер регистрирует нас как агента
  • Запускаем ещё один экземпляр клиентского приложения
  • Вводим “/register client Alice”
  • Сервер регистрирует нового клиента
  • Клиент вводит “Hello, I need help”
  • Агент получает сообщение и может ему ответить “How can I help you?”
  • Клиент может продолжить переписку или завершить чат: “/leave”
  • После завершения чата клиент может снова написать сообщение и, возможно, попасть на другого агента
  • Клиент или агент может выйти из системы, введя “/exit”, в этом случае приложение закрывается.

Задание №2. Веб-интерфейс.

  • Необходимо добавить веб-интерфейс для вашего агентского/клиентского приложения. Он должен быть представлен в виде веб-страницы со следующими элементами:
    • поле для ввода сообщений
    • поле для вывода сообщений
    • кнопка для отправки сообщений.
  • При этом, должна сохраняться обратная совместимость с вашим консольным приложением таким образом, чтобы консольный агент мог общаться с веб-клиентами и консольные клиенты могли общаться с веб-агентами.

Задание №3. Code Review.

Задание №4. REST API.

В рамках текущего задания надо добавить REST-сервисы, реализующие следующий функционал:

  • Получить всех зарегистрированных агентов
  • Получить всех свободных агентов
  • Получить детальную информацию об одном указанном агенте
  • Получить количество свободных агентов
  • Получить текущие открытые чаты
  • Получить детальную информацию об одном указанном чате
  • Получить всех клиентов, находящихся в очереди
  • Получить детальную информацию об одном указанном клиенте
  • Зарегистрировать агента
  • Зарегистрировать клиента
  • Послать сообщение агенту
  • Послать сообщение клиенту
  • Получить новые сообщения
  • Покинуть чат
  • Транспортный протокол: HTTP
  • Формат запросов: JSON
  • Сервисы, позволяющие получить списки, должны поддерживать пагинацию - передаём входные параметры “номер страницы” и “размер страницы”. Например: GET http://localhost:8080/app/agents?pageNumber=0&pageSize=5 - вернёт первые 5 агентов в списке.
  • Также необходимо сгенерировать документацию сервисов.
  • Рекомендации:
    • Использовать один из REST Frameworks: RESTEasy, Jersey, средства Spring (RestController)
    • Тестировать сервисы с помощью сторонних REST-клиентов (e.g. YARC, Postman)
    • Генерировать документацию с помощью таких инструментов, как Swagger или SpringRestDoc
  • Действия, произведённые через REST клиент, должны быть интегрированы с действиями из консольного и веб-клиента (т.е. можно отправить сообщение из REST-клиента агенту, использующему веб-интерфейс или клиенту, использующему консольный интерфейс, и т. д.)

    Задание №5. Security.

    • В рамках данного задания необходимо добавить в своё приложение аутентификацию и авторизацию.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages