В рамках работы предстоит создать сервис, целью которого является агрегация вакансий ИТ направления, которые нужно получать от стороннего сервиса hh.ru, а так же формирование рест апи для личного кабинета, с помощью которого можно оперативно отсматривать предложения по работе.
Предполагается разработка состоящая из двух этапов:
1. Разработка скелета сервиса, интеграция с hh.ru.
Используемые технологии: Play, slick, postgresql (см. build.sbt).
Для успешного выполнения пункта необходимо создать функционал для загрузки вакансий из hh.ru.
Нужно создать рест, пройдя по которому можно осуществить загрузку данных.
Предусмотреть загрузку по нужным тегам и городу.
Вакансия должна будет содержать следующие данные: заголовок, требования, предложение, зарплата(при наличии в вакансии), ссылка на вакансию.
Реализовать шедуллер.
1.1. Создание необходимых структур в БД (базовый пример model.db.JobTable).
Отталкиваясь от требований хранения данных (заголовок, требования, предложение, зарплата(при наличии в вакансии), ссылка на вакансию),
необходимо реализовать структуру таблиц в БД (посредством play-slick-evolutions https://www.playframework.com/documentation/2.8.x/Evolutions) и соответствующие DTO в коде, связать таблицы и сущности.
1.2. Интеграция с существующим сервисом по хранению вакансий hh.ru с целью агрегации данных от стороннего сервиса на стороне нашего приложения.
API сервиса hh.ru описан тут https://github.com/hhru/api. Необходимо использовать только ту часть, которая не требует авторизации.
Простое и понятное руководство можно посмотреть на хабре https://habr.com/ru/company/hh/blog/303168/.
Пример запроса, который нам может быть полезен https://api.hh.ru/vacancies?text=java&area=1 .
Необходимо реализовать контроллер, который отправляет http-запросы, содержащие ключевое слово вакансии (text=java например) и код локации (area=1 например) в hh.ru и получает http-ответ, из которого извлекает структуры необходимых данных по вакансиям, которые сохраняются в БД нашего сервиса.
Необходимая структура данных (из примера https://api.hh.ru/vacancies?text=java&area=1):
[1] заголовок=name (например, "Java developer (команда API)"),
[2] требования=requirement (например, "Знание основных алгоритмов и структур данных"),
[3] предложение=responsibility (например, "Развитие и поддержка известного сервиса"),
[4] зарплата=salary (например, {"from": 40000, "to": null, "currency": "RUR", "gross": false}),
[5] ссылка на вакансию=alternate_url (например, https://ekaterinburg.hh.ru/vacancy/52082133).
Результаты необходимо хранить в БД в разрезе "города" и "ключевого слова" (например, "scala" или "java"), для сопоставления названий городов с кодами необходимо использовать справочник https://github.com/hhru/api/blob/master/docs/areas.md , который также должен быть запрошен в нашем контроллере.
1.3. Предусмотреть исключение дублирования вакансий при записи в БД.
1.4. Реализовать шедулер, который в соответствии с параметрами конфига приложения будет запускаться в указанное время.
В конфиге приложения необходимо добавить параметры для шедуллера тех регионов и ключевых слов, которые он должен обработать.
Шедуллер должен запрашивать вакансии для всех регионов по всем ключевым словам, которые указаны в конфиге приложения.
2. Информация будет доступна с 5-го мая