Из чего строится дерево
Организационная структура в Quevell не отдельная сущность, которую нужно вести параллельно с жизнью. Дерево строится из одного факта в профиле: кто чей руководитель.
Компания отмечает одно из своих полей профиля типа «пользователь» как поле руководителя. Каждый, у кого оно заполнено, встает под названного человека; у кого не заполнено, стоит в корне дерева. Отдельной структуры, которую можно забыть обновить, не существует: кадровая система, которая пишет это поле через API, двигает дерево сама.
Поле руководителя
- Полем руководителя может быть только поле типа «пользователь», и только одно на компанию. Выбор нового снимает отметку со старого.
- Выбирает и снимает его тот, у кого есть право редактировать структуру. Это отдельное право, а не часть настройки полей: один факт, одна дверь.
- Никто не подчиняется сам себе: такое значение отклоняется при вводе.
- Руководитель, покинувший компанию, перестает быть руководителем: его люди поднимаются в корень дерева, а не висят под тем, кого нет.
Кто видит
Дерево называет каждого человека компании и линии между ними, а это другой уровень знания, чем «мои коллеги по проекту». Поэтому просмотр структуры это право, которое выдают; администраторы компании держат его по должности.
Под именем человека дерево показывает значения полей профиля, у которых включен показ на структуре: например, должность. Показывается только заполненное.
Циклы
Компания, где А подчиняется Б, а Б подчиняется А, находится в одном небрежном вечере от любой компании. Такие люди называются по именам рядом с деревом, а не пропадают из него молча: дерево, тихо забывшее четверых, это дерево, которому нельзя верить, а дерево, называющее четверых, можно починить. Люди в цикле не стоят в дереве, пока цикл не разорван.
Структура в поиске
Дерево отвечает на запросы QQL через две функции:
assignee in (myReports()): задачи моих прямых подчиненных;assignee in (myVertical()): задачи всех, кто подо мной, на любую глубину.
Обе функции разрешаются для того, кто выполняет запрос: фильтр, сохраненный одним руководителем, показывает другому руководителю его собственных людей. Люди в цикле для этих функций ни под кем не стоят и никого не держат.
Это сделано намеренно вместо рассылок «вашему подчиненному назначили задачу»: руководитель смотрит на работу своих людей, когда сам решает посмотреть, и ничей ящик не наполняется сам.
Команды это не структура
Команды в Quevell живут отдельно от дерева подчинения: команду люди собирают сами, и она не обязана совпадать с линией руководства. Функция myTeammates() отвечает по командам, а не по дереву: все люди из всех команд, где вы состоите. Права на проекты тоже не следуют из дерева: они выдаются ролями в проекте, человеку или группе.
Офбординг
Когда человек уходит, администратор видит, что за ним числится, и передает все одним действием названному преемнику. Передача выполняется целиком или не выполняется вовсе.
Преемнику переходят открытые назначения, открытые задачи, где уходящий значится автором, роли в проектах, правила автоматизации, личные страницы и сохраненные фильтры. Роли именно переходят, а не копируются: личной роли в этих проектах у прежнего человека не остается. Доступ через группу это отдельная нить, и передача ее не трогает: если человек состоит в группе, которой выдана роль в проекте, он продолжит видеть проект через нее. Там, где у преемника своя роль в проекте была, она и остается: передача расширяет доступ и никогда его не понижает.
Авторство не передается никогда. Задачи, комментарии и вложения остаются подписаны тем, кто их сделал, и назначение на завершенной задаче тоже остается: это запись о том, кто ее закончил.
С деревом при этом происходит то, что описано выше: деактивированный руководитель перестает быть руководителем, его люди поднимаются в корень. Поле руководителя у них при этом не стирается: если человек вернется, линии восстановятся.