Обзор
=====
Работа картографов работающих на сдельной основе а также работа отдаваемая на
аутсорс оплачивается в зависимости от объёма выполненной работы. При этом размер
оплаты зависит от типа работы, географии работ и дня недели в который работа
производится (работа в праздничные и выходные дни оплачивается по увеличенному
тарифу).

Таким образом встают вопросы учёта выполненной работы и правильной
тарификации. [Мета-модуль оплаты труда][Tasks Payment] занимается решением
данных вопросов.


Отчёт и дашборды
----------------
В результате работы данного мета-модуля формируется отчёт [Tasks
Payment][report] данные из которого отображаются на следующих дашбордах:
- [Accounting Dashboard][] - содержит размер вознаграждения причитающийся
  сотрудникам работающим на сдельной основе.
- [Piecework Dashboard (Manager)][] - содержит детальную информацию о
  выполненных работах по всем сотрудникам. Данный дашборд предназначен для
  руководителей.
- [Piecework Dashboard (Employee)][] - содержит детальную информацию о
  выполненных работах. Данный дашборд предназначен для сотрудников работающих на
  сдельной основе и отображает информацию только о сотруднике открывшем данный
  дашборд.


### Права доступа
Доступ к первым двум дашбордам выдаётся только членам ABC-сервиса [Пользователи
стенда расчета зарплаты группы поддержки бизнеса][piecework dashboard users].

Кроме этого, каждый такой сотрудник должен быть добавлен в список [_Конструктор
отчёта_ / _Дополнительные свойства_ / _Права доступа_ /
`full_access_group`][report config].


Принцип работы
--------------
На верхнем уровне система работает следующим образом.
1. Для каждого вида работ (модерация, разбор фидбэка, ...) формируется лог работ
   подлежащих оплате. Каждая запись в логе содержит исполнителя, момент
   выполнения работы и её объём, а также географическую привязку. Все логи имеют
   единый [формат][schema].
2. Формируется вспомогательные словари содержащие тарифы, информацию про
   праздничные и выходные дни, связь со [Стаффом][staff].
3. На основе этих данных рассчитывается размер вознаграждения для каждого
   сотрудника. Эта информация загружается в отчёт [Tasks Payment][report].
4. Информация из отчёта используется для отображения дашбордов сделки и
   формирования бухгалтерской ведомости.

Ниже представлены все модули задействованные в расчёте заработной платы.

![Overview](_images/overview.svg)


Запуск расчёта отчёта
---------------------
Процесс запускается средствами Реактора в Нирване с помощью соответствующей
[реакции][reaction].

Реакция запускается:
- каждое утро по расписанию для расчёта заработной платы за предыдущий день; и
- при появлении новой версии артефакта [_Date_][date artifact]. В этом случае
  заработная плата рассчитывается за день записанный в артефакте.

{% note info %}

Больше информации об артефакте [_Date_][date artifact] можно найти в [описании
обработки отсутствующих тарифов][absent tariffs].

{% endnote %}


### Очередь запусков расчёта отчёта
Два параллельных запуска расчёта могут менять одни и теже таблицы (особенно в
случае совпадения рассчитываемой даты), что может приводить к неожиданным
результатам.

Чтобы избежать коллизий все запуски помещаются в [очередь][queue] и выполняются
последовательно.


### Оповещения
[Робот Wikimap][robot wikimap] информирует о ряде событий:

Событие                                                     | Место оповещения | Отправляется из
----------------------------------------------------------- | ---------------- | --------------------------------------
Отсутствие тарифов                                          | Telegram         | Граф расчёта отчёта Tasks Payment
Завершение расчёта отчёта                                   | Telegram         | Граф расчёта отчёта Tasks Payment
Помещение задачи расчёта в очередь после добавления тарифов | Трекер           | [_Issue Id -> Date_][issue id -> date]


[absent tariffs]:                 tariffs.md#obrabotka-otsutstvuyushih-tarifov
[accounting dashboard]:           https://datalens.yandex-team.ru/pap9drrtp1e2j-accounting-dashboard
[date artifact]:                  https://beta.nirvana.yandex-team.ru/browse?selected=9725504
[issue id -> date]:               https://beta.nirvana.yandex-team.ru/browse?selected=9725635
[piecework dashboard (employee)]: https://datalens.yandex-team.ru/k0vdpvk3sue0g-piecework-dashboard-employee
[piecework dashboard (manager)]:  https://datalens.yandex-team.ru/it29j3u4v4d4e-piecework-dashboard-manager
[piecework dashboard users]:      https://abc.yandex-team.ru/services/pieceworkdashboardusers/
[queue]:                          https://nirvana.yandex-team.ru/browse?selected=10363191
[reaction]:                       https://beta.nirvana.yandex-team.ru/browse?selected=8613560
[report config]:                  https://stat.yandex-team.ru/Maps.Wiki/tasks_payment/Tasks_Payment/.config?tab=properties
[report]:                         https://stat.yandex-team.ru/Maps.Wiki/tasks_payment/Tasks_Payment
[robot wikimap]:                  https://staff.yandex-team.ru/robot-wikimap
[schema]:                         https://a.yandex-team.ru/arc/trunk/arcadia/maps/wikimap/stat/tasks_payment/tasks_logging/libs/schema
[staff]:                          https://staff.yandex-team.ru
[tasks payment]:                  https://a.yandex-team.ru/arc/trunk/arcadia/maps/wikimap/stat/tasks_payment
