Сервис позволяет управлять переговорками, просматривать доступные временные слоты на выбранную дату и бронировать их.
Для запуска всего окружения выполните в корне проекта:
docker-compose up --buildИли запуск через Makefile:
make up
make seed #заполнение тестовыми даннымиgo test ./internal/... -coverpkg=./internal/... -coverprofile=cover.out
go tool cover -func=cover.out #процент покрытия
go test -tags=integration ./tests/... #интеграционные тестыВ соответствии с ТЗ, админ создает неизменяемое расписание (время начала, окончания и дни недели), а система сама делит его на фиксированные 30-минутные интервалы. Был выбран подход предварительной генерации на скользящее окно дат.
При создании расписания система автоматически рассчитывает и сохраняет в базу данных все доступные слоты на 30 дней вперед. Клиенту не нужно ждать, пока сервер посчитает слоты в памяти и сопоставит их с бронями.
golangci-lint runВ проекте настроен сценарий нагрузочного тестирования, эмулирующий плавный разгон до 100 одновременных виртуальных пользователей для проверки эндпоинта получения слотов.
Запуск теста (предварительно будет установлена утилита k6):
go install go.k6.io/k6@latest
k6 run load_tests/slots_test.js-
RPS (Запросов в секунду): ~490/s
-
Медианное время ответа: < 1ms
-
95-й процентиль времени ответа (p95): ~1.76ms
-
Процент ошибок (http_req_failed): 0.00% (все запросы выполнены успешно)