Методология расчёта стоимости проектов и задач
PanDev Metrics переводит учтённое рабочее время в деньги. Плагины фиксируют активность в IDE, браузере, терминале (CLI), клиентах БД и AI-ассистентах. Время сопоставляется с задачами из вашего трекера (Jira, GitHub, GitLab и др.) и оценивается по ставке сотрудника. Модель называется Daily Share: зарплата делится между днями, в которые сотрудник работал, а каждый день — между задачами этого дня.
Любую цифру на финансовых экранах можно пересчитать вручную по этой странице.
1. Исходные данные
Время на задаче
Единица учёта — факт (сотрудник, день, задача): сколько секунд сотрудник потратил на задачу в этот день. PanDev Metrics считает его по двум источникам и берёт большее значение:
- Время в ветке — написание кода и работа с ИИ в Git-ветке, связанной с задачей (ключ задачи в имени ветки).
- Время в сессиях — работа, привязанная к задаче по другим признакам, например сессия ИИ-агента или промпт, в котором названа задача.
Источники пересекаются, поэтому берётся максимум, а не сумма — так время не учитывается дважды. Работа без ИИ не теряется: время в ветке — нижняя граница.
Оценивается только время, привязанное к задаче. Время без задачи (встречи, ревью, чтение документации) отдельной цены не получает; куда оно уходит, описано в разделе 3.
Ставка, действовавшая в этот день
Каждый день оценивается по ставке, которая действовала в этот день, а не по текущей ставке сотрудника. Повышение в августе не пересчитывает работу, сделанную в марте. У ставки есть дата начала и дата окончания; пустая дата окончания означает «действует до сих пор». Если две ставки пересекаются, берётся созданная позже.
Типы ставок:
| Тип ставки | За что платят | Есть пул дней |
|---|---|---|
MONTHLY | Фиксированная зарплата за месяц | Да |
HOURLY | Отработанные часы | Нет |
2. Формулы
Месячная ставка (MONTHLY)
стоимость дня = месячная ставка на этот день / пул дней месяца
доля задачи = секунды на задаче / секунды всех задач сотрудника за день
стоимость(задача,день) = стоимость дня × доля задачи
- Пул дней — число дней месяца, на которое делится зарплата (раздел 4).
- Секунды на всех задачах сотрудника за день (знаменатель
доли задачи) — по всем департаментам. Если сотрудник в один день работал на два департамента, каждый платит только свою долю дня, и вместе они никогда не платят больше одной стоимости дня.
Стоимость дня полностью распределяется по задачам этого дня. Переработка не делает день дороже: зарплата — фиксированная сумма, и двенадцать часов работы в один день стоят ту же стоимость дня, что и шесть.
Почасовая ставка (HOURLY)
стоимость(задача,день) = секунды на задаче / 3600 × почасовая ставка на этот день
Почасовику платят за время, поэтому оплачивается время, и переработка стоит дороже. Пул дней не используется.
3. Время без задачи
Для сотрудника на окладе время без задачи не входит в знаменатель. Стоимость дня делится только между задачами этого дня. Поэтому день, в котором два часа задач и шесть часов встреч, всё равно относит полную стоимость дня на эти два часа задач.
День, в который сотрудник не сделал ни одной задачи, выпадает из пула дней (раздел 4). Тогда зарплата за месяц делится на меньшее число дней, и каждый день с задачами стоит дороже. Зарплата никогда не относится на задачу, над которой сотрудник не работал.
Для почасовика время без задачи ни на какую задачу не начисляется.
4. Пул дней
Пул дней — число дней, на которое делится месячная зарплата.
- Пока месяц открыт, пул = прошедшие дни, в которые сотрудник отметил хотя бы одну задачу, плюс оставшиеся рабочие дни сотрудника (по календарю компании и сотрудника). По ходу месяца пул может только уменьшаться: каждый рабочий день, прошедший без задачи, выпадает. Поэтому суммы открытого месяца предварительные и могут только расти.
- 8-го числа следующего месяца месяц закрывается: пул фиксируется как число дней хотя бы с одной задачей, и суммы месяца становятся окончательными. Семь дней запаса дают плагинам время доставить активность, накопленную офлайн.
- День с задачей учитывается всегда — даже суббота, праздник или день отпуска.
Когда месяц закрыт и ставка действовала весь месяц, стоимости всех задач сотрудника за этот месяц в сумме дают ровно зарплату, до копейки.
5. От задач к проектам, сотрудникам и командам
- Задача — сумма её стоимостей по (сотрудник, день).
- Сотрудник — сумма стоимостей его задач.
- Команда — сумма стоимостей её участников.
- Проект (Git-репозиторий) — стоимость задачи делится между Git-проектами пропорционально времени в ветках каждого проекта. Задача, привязанная только через сессии, времени в ветках не имеет и ни в какой проект не попадает.
6. Округление
Стоимости не округляются построчно. Для каждого блока (сотрудник, месяц) точный итог округляется до копеек один раз, а оставшиеся копейки получают строки с наибольшей отброшенной дробной частью (метод наибольших остатков). Каждая строка отличается от точного значения не больше чем на копейку, а итог блока совпадает с точным итогом.
7. Предупреждения: что не оценено
PanDev Metrics ничего не додумывает. Если стоимость нельзя отнести, она не входит в итоги, а финансовые экраны называют сотрудника:
- Сотрудники без ставки — у них есть время на задачах в дни, когда ни одна ставка не действовала. Это время ничего не стоит, пока не задана ставка на эти дни.
- Сотрудники без задач — закрытый месяц, в котором сотрудник на окладе не отметил ни одной задачи. Его зарплата за этот месяц не относится ни на одну задачу, проект или команду. Что это значит, решает руководитель: уволенный, которого не деактивировали; менеджер, чья работа идёт вне отслеживаемых инструментов; не установленный плагин.
- Период не закрыт — хотя бы один месяц выбранного периода ещё открыт, его суммы предварительные.
Учитываются только активные членства в департаменте и неудалённые задачи.
8. Пример расчёта
Один сотрудник на окладе, июнь 2026. Месячная ставка — 1 000. Месяц закрыт, задачи были в 21 день, значит, пул — 21.
стоимость дня = 1 000 / 21 = 47,619…
Три дня подробно:
| День | Задачи дня | Доля дня | Стоимость |
|---|---|---|---|
| Среда | TASK-745 — 1 ч | 1 ч / 1 ч = 1 | 47,619… |
| Четверг | TASK-746 — 6 ч | 6 ч / 6 ч = 1 | 47,619… |
| Пятница | TASK-746 — 4 ч, TASK-748 — 8 ч | 4/12 и 8/12 | 15,873… и 31,746… |
Итоги по задачам после округления:
| Задача | Точно | После округления |
|---|---|---|
| TASK-745 | 47,619… | 47,62 |
| TASK-746 | 47,619… + 15,873… = 63,492… | 63,49 |
| TASK-748 | 31,746… | 31,75 |
| Итого | 3 × 47,619… = 142,857… | 142,86 |
Что показывает пример:
- Час в среду стоит столько же, сколько шесть часов в четверг: и то и другое — полный день сотрудника на окладе.
- Двенадцать часов в пятницу стоят одну стоимость дня, разделённую 1:2 между двумя задачами.
- За 21 день месяца стоимости задач в сумме дают ровно 1 000.
Те же числа проверяет модульный тест TaskCostEngineTest#matchesTheProposalExample в коде PanDev Metrics.
Почасовик для сравнения: 2,5 часа на задаче по ставке 25 в час стоят 9 000 с / 3600 × 25 = 62,50.
Два департамента в один день: сотрудник на окладе с пулом 20 и ставкой 1 000 работает 4 часа над задачей департамента A и 4 часа над задачей департамента B. Департаменту A начисляется 1 000 / 20 × 4/8 = 25,00, департаменту B — оставшиеся 25,00.
9. Насколько точен результат
Прямые затраты точны ровно настолько, насколько точно учтено время.
- Для сотрудника на окладе ошибка во времени переносит деньги между задачами. Стоимость дня фиксирована, поэтому если время одной задачи завышено, остальные задачи того же дня получают меньше. Итог месяца не меняется.
- Пропущенный день с задачами меняет цену всех остальных дней. Если день реальной работы не привязан ни к одной задаче (в имени ветки нет ключа задачи, плагин не установлен), он выпадает из пула, и остальные дни дорожают.
- Для почасовика ошибка во времени целиком попадает в стоимость. На десять процентов больше времени — на десять процентов больше стоимость.
- Непривязанное время в стоимость не попадает. Работа в ветке без ключа задачи учитывается как активность, но ни на одну задачу не оценивается.
Найти и закрыть эти пробелы до того, как опираться на цифры, поможет чек-лист точности данных.
Почему это важно
Каждая сумма зависит только от ставки и времени самого сотрудника и не зависит от людей, которые над задачей не работали. Зарплата ложится на задачи, над которыми действительно работали, почасовая ставка оплачивает часы, а всё, что нельзя отнести, называется по имени, а не размазывается. PanDev Metrics — не бухгалтерская система: цель — прозрачная и воспроизводимая аналитика стоимости разработки на основе автоматического сбора данных.