Skip to content

Instantly share code, notes, and snippets.

@rgordeev
Last active October 23, 2019 06:49
Show Gist options
  • Save rgordeev/709f96d6c51c1b35748ed5029eb155c2 to your computer and use it in GitHub Desktop.
Save rgordeev/709f96d6c51c1b35748ed5029eb155c2 to your computer and use it in GitHub Desktop.
Тестовое задание

ТЗ на записную книжку

Phonebook - записная книжка

Действия:

  • Добавить персону.
  • Удалить персону.
  • Найти персону по любому из атрибутов (атрибуты персоны: ФИО, дата рождения; полнотекстовый поиск).
  • Создать контакт у персоны необходимого типа: e-mail, телефон, адрес, skype.
  • Поиск персоны по контактным данным.
  • Поиск дублей персон/контактов. Возможность объединения контактов двух персон в одну.
  • Выгрузка записной книжки в текстовый файл csv. Для каждого типа контактов предопределен набор действий (позвонить, отправить sms, позвонить по skype, отправить письмо по e-mail)

Варианты использования:

Желательно иметь интерфейсы разного типа: командная строка, web.

Данные записной книги должны храниться в СУБД (например, postgresql).

Архитектура

Требуется подумать над архитектурой проекта, а именно подумать, какие варианты использования могут быть у этого приложения, какие действия и в какой последовательности будут выполняться в каждом из вариантов использования, как эти действия могут быть отражены в объектной модели нашего приложения.

Обязательно требуется реализовать сервис на основе eventsourcing и cqrs.

Для лучшего понимания проектирования рекомендую ознакомиться с кратким обзором паттернов проектирования и книгой для более детального изучения.

Git

Кроме того, необходимо ознакомиться с этими двумя статьями: статья 1 и статья 2, а также с интерактивной обучалкой по git.

Менеджер сборки и зависимостей

Задание должно быть оформлено в виде проекта Gradle или Maven

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment