Как мы автоматизировали рекрутинг: HR начал быстрее находить крутых специалистов
Крутые специалисты — главный ресурс компании. Но какой ценой они достаются (особенно если в штате не
Чтобы уверенно растить бизнес, необходимо ставить цели для роста и следить за их достижением. Чтобы следить было проще, хорошо иметь перед глазами и цель, и свой прогресс на пути к ней. Александр Македонский возил с собой карту мира, который желал захватить. Мы сделаем себе экран, который будет в реальном времени показывать текущее состояние расчетных счетов, выручку за месяц, график выручки по месяцам и прогресс выполнения целей на год.
Уровень сложности: поднять сервер на Линукс, разбираться в Python для web и nginx. Или показать статью такому человеку, чтобы он все сделал.
Нужно показывать актуальные данные о финансах нескольких бизнесов на умных часах LaMetric. Учет финансов происходит в сервисе Финолог.
Финолог — это сервис управления деньгами в бизнесе. Он предоставляет публичный REST API с api-token авторизацией. Документация очень подробная, АПИ очень гибкий. На каждом endpoint по реквест параметрам доступны широкие возможности для фильтрации, чем мы в дальнейшем воспользуемся.
LaMetric — позиционируются как умные часы. На самом деле, это интерактивная панель вывода информации, куда можно транслировать не только время, но и погоду, количество подписчиков в инстаграме, курс валют и что угодно еще. Есть библиотека с готовыми решениями, а есть приложение для трансляции собственных данных. Чтобы наши данные отобразить на часах, нужно повесить их в формате JSON на статичном URL. Часы подключены к интернету и регулярно опрашивают URL. Полученные оттуда данные отображаются на дисплее.
Цель — визуализировать данные управленческого учета из Финолога на LaMetric для двух бизнесов: студии аутсорс-разработки и магазина разливного пива.
Мы показываем:
Нам для этого требуется:
Для реализации на серверной стороне я использовал python3. Хотелось выбрать что-то максимально простое, желательно без СУБД и чтобы можно было встроить на действующий VPS без сложной маршрутизации.
В качестве веб сервера работает стандартный wsgiref.simple_server. Под него написано простое WSGI приложение. Каждый раз, когда на сервер поступает запрос от LaMetric, сервер создает экземпляр FramesCatalog. Этот FramesCatalog опрашивает API Финолог и создает ответ в формате JSON и понятный LaMetric. Ответ сервер возвращает вместе с нужными заголовками и статусом.
server.py:
from wsgiref.simple_server import make_server
import settings
from puller import FramesCatalog
def my_app(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'application/json; charset=utf-8')]
start_response(status, headers)
response = FramesCatalog().get_frames_json()
return [response.encode()]
if __name__ == '__main__':
with make_server(settings.HOST, settings.PORT, my_app) as srv:
srv.serve_forever()
FramesCatalog — это класс-каталог, который в зависимости от настроек в settings.py создает классы представления бизнесов Финолога. В эти классы встроены возможность опрашивать API Финолога и формировать нужные фреймы.
Авторизация на api.finolog.ru выполняется по API токену. Скрипт берет токен из соответствующей переменной окружения.
settings.py:
FINOLOG_API_KEY = os.environ.get('API_KEY')
Весь скрипт помещен в контейнер Docker. Dockrfile максимально простой, через директивы ARG и ENV реализована передача API токена в переменную окружения.
Dockerfile:
FROM python:3.8
WORKDIR /home
RUN pip install -U pip requests
COPY *.py ./
ARG api_key
ENV API_KEY $api_key
ENTRYPOINT ["python", "server.py"]
Запускается контейнер в режиме демонизации с пробросом внутреннего TCP-порта 8088 на внешний 8123.
Вся описанная конструкция работает под обратным прокси nginx. В nginx используется отдельная директива location. В простейшем случае:
location /secret-path-to-lametric-frames {
proxy_pass http//0.0.0.0:8123;
}
Это позволяет выполнить маршрутизацию для www.domain.ru/secret-path-to-lametric-frames существующими средствами и не использовать, например, flask. Кроме того, все внешние запросы будут передаваться до nginx по https, что важно при передаче API токена в заголовке HTTP запроса.
В проекте не используется база данных. Все ответы сервера формируются на лету по факту поступления запроса.
Весь код можно посмотреть на GitHub.
Подобный экран — отличный инструмент для визуализации целей.
Кирилл, руководитель WB—Tech, уже рассказывал, как борется с прокрастинацией. Трансляция актуальных финансовых показателей — это еще один способ мотивации себя и команды.
Посмотрите разные автоматизации бизнес-процессов и выберите решение, которое подходит для вашей компании.
Никакого спама, только анонсы новых статей!