Необходимо реализовать сервис API для записи человека на прием к врачу, с напоминанием за 2 часа до приема.
- Koa, Express, NestJS
- TypeORM, Sequelize, Prisma
- PostgreSQL, MongoDB, Redis
- RabbitMQ
У пользователя должны быть поля: Телефон и имя. Имя произвольная строка может содержать как имя, так и ФИО полностью.
У доктора должно быть имя, фамилия, отчество (опционально), специализация врача, а так же массив свободных слотов для записи с интервалом 30 минут. С 10 до 20.
Авторизация по номеру телефона. Если введный номер не существует в базе, нужно создать нового пользователя.
Код приходящий пользователю — эмулируем. Это всегда — 0000
.
Получаем доктора (ФИО и специализация) и свободные слоты для записи.
Передаем ID Доктора и доступный слот для записи. Требования:
- На один слот может записаться только один человек
- Если время занято будет возвращаться ошибка
- Если пользователь не авторизован будет возвращаться ошибка
Получаем доктора (ФИО и специализация) и время записи. Требования:
- Если пользователь не авторизован будет возвращаться ошибка
Также нужен сервис который будет оповещать пользователя:
- за 1 день до приема
- за 2 часа до приема
Сам сервис эмулирует отправку письма пользователю.
Здравствуйте, {{ имя }}! Напоминаем что вы записаны к {{ имя доктора }} ({{ специализация доктора }}) завтра в {{ время записи }}!
Здравствуйте, {{ имя }}! Запись к {{ имя доктора }} ({{ специализация доктора }}) через два часа!
- Фикстуры. Для работы сервиса, надо предзаполнить БД, можно сделать отдельную команду
npm run fixtures
- Для сборки проекта достаточно выполнить
npm i && npm run dev
, сборка должна работать из коробки.
- Система логирования
- Docker
Если будет чтото не тривиальное описать в README.md
в корне проекта.
Любые уточняющие вопросы приветствуются. Результатом выполнения задания должен быть репозиторий. Структура репозитория остается на усмотрения разработчика.