Загрузка людей по дням
Таблица «люди × дни»: кто свободен на дату мероприятия (ТЗ «Шаблоны, этапы и Гант…», раздел 6). Модуль только читает — как отчёты и дашборд.
Реализовано: этап 4 — модуль
internal/modules/workload, маршрутыGET /workload,/workload/day,/workload/users. Миграций нет.
Как считается
- Норма дня — 8 ч в рабочий день по календарю компании, 4 ч в день с половиной отсутствия, 0 в выходной, праздник и полный день отсутствия. Отсутствие, ещё не согласованное (
pending), показывается значком, но норму не меняет. - План — плановые часы открытых задач (
todo,in_progress,blocked), где сотрудник исполнитель или соисполнитель (соисполнитель получает те же часы — часы задачи считаются оценкой на каждого). С началом — поровну по рабочим дням от начала до срока; без начала — по 8 ч на рабочие дни перед сроком (40 ч → 5 рабочих дней, срок — последний); рабочих дней нет — всё в срок. Задача без часов видна в дне срока, но в процент не входит. - Факт —
time_entriesпо дням (mode=fact). - Процент — часы / норма; нормы нет (выходной, полный день отсутствия) — 0 %, часы видны отдельно.
- Значки: командировка (
trips, кроме отменённых), рейс (logistic_operations, водитель или ответственный), мероприятие — дни от монтажа (или начала) до окончания у проектов «Подтверждён» и «В работе» для участников команды с выездными ролямиlead,engineer,technician,logistician. Значки процент не меняют: время на площадке должно быть задачами. В день полного согласованного отсутствия мероприятие не отмечается.
Кто что видит
| Кто | Что |
|---|---|
| Сотрудник | Себя целиком |
| Руководитель | Целиком — подчинённых (рекурсивно), людей отделов, которыми руководит (с подотделами), и отделов из охвата «свои» чужих табелей |
| Генеральный директор, администратор, охват чужих табелей «все» | Всех целиком |
| Менеджер действующего проекта, руководитель отдела | Остальных — только процент и занятость (details=false): без названий задач и проектов |
GET /workload/day без полного доступа отдаёт только ячейку; к невидимому сотруднику — 403 workload_no_access.
Подсказка при назначении
GET /workload/users?user_ids=…&from&to — пиковый и средний процент по плану на даты задачи, согласованные отсутствия, дни командировок и мероприятий. Форма задачи и одобрение заявки на людей показывают её рядом с именем; невидимые сотрудники пропускаются.