feat(portal): export workforce index evidence
This commit is contained in:
@@ -68,14 +68,30 @@ JSON отчета содержит объяснение расчета:
|
||||
|
||||
- активная роль;
|
||||
- доступные роли;
|
||||
- формула `index = weighted_seconds / planned_seconds × 100`;
|
||||
- плановое время;
|
||||
- фактическое app time;
|
||||
- взвешенное время;
|
||||
- matched rule по каждому приложению из top breakdown.
|
||||
- audit-блок policy: какие приложения попали под `default_weight`;
|
||||
- drill-down по сотрудникам: формула, active/plan seconds, индекс и причина.
|
||||
|
||||
В портале это раскрывается в экране `Почему такой индекс?`: собственник видит
|
||||
роль, итоговый weighted KPI, план/app/weighted time и top-12 приложений с весом
|
||||
и вкладом каждого приложения.
|
||||
и вкладом каждого приложения. Та же секция добавляется в Markdown export
|
||||
оперативного отчета, чтобы расчет можно было приложить к письму, PDF или
|
||||
коммерческому отчету без ручного пересказа GUI.
|
||||
|
||||
PDF-экспорт выполняется штатной печатью браузера из вкладки `Отчеты`
|
||||
(`Печать / PDF`). Печатный CSS скрывает навигацию и оставляет отчетные секции,
|
||||
включая `Почему такой индекс?`, audit `default_weight` и drill-down по
|
||||
сотрудникам.
|
||||
|
||||
Ограничение текущего contract: per-user индекс объясняется по персональному
|
||||
`active_seconds / planned_seconds`; per-user app-weight breakdown пока не
|
||||
доступен в worktime payload. Поэтому веса приложений и аудит `default_weight`
|
||||
являются portfolio-level объяснением, а не персональной раскладкой приложений.
|
||||
Это честнее, чем выводить ложную детализацию.
|
||||
|
||||
Для быстрой загрузки вкладки руководителя explainability-блок доступен отдельным
|
||||
легким endpoint:
|
||||
@@ -85,6 +101,12 @@ JSON отчета содержит объяснение расчета:
|
||||
Полный `/api/reports` продолжает включать тот же `workforce_policy`, но вкладка
|
||||
`Руководитель` не обязана грузить весь отчет ради одного KPI.
|
||||
|
||||
Минимальный JSON contract этого endpoint закреплен unit-тестом
|
||||
`workforce_policy_explain_is_lightweight_payload`: портал не должен потерять
|
||||
`formula`, `app_details[].matched_rule`, `app_details[].weight`,
|
||||
`policy_audit`, `employee_details[].formula` и `employee_details[].reason`, а
|
||||
легкий endpoint не должен случайно начать отдавать тяжелые поля полного отчета.
|
||||
|
||||
После изменения runtime-файла нужно перезапустить портал:
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user