Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save VasiliyRusin/983e79d86df7892835bd9b11a1a19722 to your computer and use it in GitHub Desktop.
Save VasiliyRusin/983e79d86df7892835bd9b11a1a19722 to your computer and use it in GitHub Desktop.
Тестовое задание на позицию Node.js Backend Developer

Тестовое задание Node.js Backend Developer

Необходимо реализовать сервис API для записи человека на прием к врачу, с напоминанием за 2 часа до приема.

Стек

  • Koa, Express, NestJS
  • TypeORM, Sequelize, Prisma
  • PostgreSQL, MongoDB, Redis
  • RabbitMQ

Сущности

Users

У пользователя должны быть поля: Телефон и имя. Имя произвольная строка может содержать как имя, так и ФИО полностью.

Doctors

У доктора должно быть имя, фамилия, отчество (опционально), специализация врача, а так же массив свободных слотов для записи с интервалом 30 минут. С 10 до 20.

API

Авторизация

Авторизация по номеру телефона. Если введный номер не существует в базе, нужно создать нового пользователя. Код приходящий пользователю — эмулируем. Это всегда — 0000.

Получение списка докторов

Получаем доктора (ФИО и специализация) и свободные слоты для записи.

Запись на прием

Передаем ID Доктора и доступный слот для записи. Требования:

  • На один слот может записаться только один человек
  • Если время занято будет возвращаться ошибка
  • Если пользователь не авторизован будет возвращаться ошибка

Получение списка записей текущего пользователя

Получаем доктора (ФИО и специализация) и время записи. Требования:

  • Если пользователь не авторизован будет возвращаться ошибка

Оповещения

Также нужен сервис который будет оповещать пользователя:

  • за 1 день до приема
  • за 2 часа до приема

Сам сервис эмулирует отправку письма пользователю.

Здравствуйте, {{ имя }}! Напоминаем что вы записаны к {{ имя доктора }} ({{ специализация доктора }}) завтра в {{ время записи }}!
Здравствуйте, {{ имя }}! Запись к {{ имя доктора }} ({{ специализация доктора }}) через два часа!

Требования

  • Фикстуры. Для работы сервиса, надо предзаполнить БД, можно сделать отдельную команду npm run fixtures
  • Для сборки проекта достаточно выполнить npm i && npm run dev, сборка должна работать из коробки.

Будет плюсом

  • Система логирования
  • Docker

Если будет чтото не тривиальное описать в README.md в корне проекта.

Любые уточняющие вопросы приветствуются. Результатом выполнения задания должен быть репозиторий. Структура репозитория остается на усмотрения разработчика.

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