Сервис предоставляет интерфейс взаимодействия с БД postgresql для проведения опроса кандидата на вакансию.
Сервис survey публикует grpc-сервер с функциями:
- Регистрация кандидата в БД (AddCandidate)
- Удаление кандидата из БД (DeleteCandidate)
- Старт опроса (StartSurvey)
- Запись ответа в БД (SetAnswer)
- Завершение опроса (SetFinishCandidate)
- Получение результатов опроса кардидата (GetSurveyForCandidate)
Также, сервис survey публикует rest-сервер для frontend с функциями:
- Старт опроса (StartSurvey)
- Запись ответа в БД (SetAnswer)
Схема БД задана в sql-файлах миграции в директории migrations проекта. Списки вопросов задаются в таблицах в процессе миграции БД. Миграция осуществляется сервисом путем передачи параметра -migration=Up/Dowd.
Вопросы классифицируются в таблицах по темам. Например: linux, network, ...
Список таблиц:
- LINUX_QUESTIONS
- K8S_QUESTIONS
- NETWORK_QUESTIONS
- SECURITY_QUESTIONS
- CONTAINER_QUESTIONS
- DEVELOPER_UESTIONS
Пользователь задается идентификатором (числовое значение) в таблице users. При создании пользователя, задается три класса вопросов: базовый и два второстепенных. Базовый - 50% от общего количества вопросов, второстепенные - по 25%. Общее количестко вопросов задано в коде в глобальной переменной MAX_QUESTIONS. Вопросы берутся из таблиц БД случайным образом и записываются в таблицу survey.
Конфигурация сервиса задается в файле config.json (в директории cmd/survey/ проекта).
При миграции и при запуске сервиса в поле PSQL указываются различные права доступа.
При задании Swagger=true в поле Server запускается WebUI Swagger для тестирования REST API.
Документация по REST API.
Целевой результат сборки - docker-образ.
Параметры сборки описаны Makefile, тег build-img. Dockerfile расположен в директории build. Производится статическая сборка проекта и образ собирается как distroless.