Задачи¶
Раздел «Задачи» в администрировании отвечает за иерархии (деревья) задач, шаблоны создания задач и часть поведения задач в жизненном цикле. Большинство настроек поведения задаётся на уровне категории (см. Категории); здесь — собственные настройки домена задач: ключевые параметры, CustomSettings, чипы планирования и типичные ошибки.
Механизмы администрирования задач¶
Настройки домена задач доступны через несколько механизмов: формы автоадминки, EntityEditor и Admin API.
Автоадминка (dbadmin)
Часть настроек задаётся через формы автоадминки по их alias:
| Alias формы | Название | Таблица БД | Полей | Секций | Папка |
|---|---|---|---|---|---|
task-hierarchies |
Иерархии задач | dbo.TaskHierarchy | 14 | 1 | Пользовательский интерфейс |
task-templates |
Шаблоны задач | dbo.TaskUniversalTemplates | 15 | 1 | (корень) |
EntityEditor
Расширенные настройки шаблонов задач задаются через EntityEditor:
| Схема JSON | Таблица | Назначение |
|---|---|---|
taskuniversaltemplate |
dbo.TaskUniversalTemplates | Расширенная настройка шаблона задачи |
templates |
dbo.Templates | Основные шаблоны |
templatesDetails |
(связанная) | Детали шаблона |
templateList |
(связанная) | Список шаблонов |
templateColor |
(связанная) | Цвет шаблона |
templateIcon |
(связанная) | Иконка шаблона |
Admin API
Программно домен задач настраивается через Admin API:
| Маршрут | Методы | Назначение |
|---|---|---|
/api/admin/tasks/hierarchy |
GET, POST, PUT, DELETE | Управление иерархиями, их полями и динамическими узлами |
/api/admin/tasks/{taskId}/access |
GET | Аудит доступа к конкретной задаче |
Ключевые настройки домена задач¶
Иерархии задач (TaskHierarchy)¶
Где настраивается: автоадминка → форма task-hierarchies или Admin API (/api/admin/tasks/hierarchy)
Таблица БД: dbo.TaskHierarchy
14 полей, определяющих структуру дерева задач в интерфейсе:
| Группа полей | Что контролирует |
|---|---|
| Имя, описание | Идентификация иерархии |
| Поля иерархии | Какие данные отображаются на каждом уровне |
| Динамические узлы | Узлы, вычисляемые при отображении |
| Привязка к категориям | Какие категории используют иерархию |
Эффект: иерархия строится платформой и отображается в левой панели/дереве.
Шаблоны, поведение в категории и денормализация¶
Шаблоны задач (TaskUniversalTemplates)
Где настраивается: автоадминка → форма task-templates или EntityEditor (taskuniversaltemplate)
Таблица БД: dbo.TaskUniversalTemplates
15 полей: предзаполненные значения для создания задач (категория, исполнитель, срок, ДП).
Эффект: при создании задачи из шаблона поля автозаполняются из TaskUniversalTemplates.
Поведение задач в категории (смежный домен)
Где настраивается: форма настроек категории subcategories → секции задач, сроков, исполнителей
Таблица БД: dbo.Subcategories
Большая часть поведения задач задаётся флагами категории:
- Подтверждение переноса срока через подпись
- Ограничения на смену исполнителей для просроченных задач
- Делегирование и права
- Автоматические действия при переходах
Связь с категориями: см. Категории.
Денормализация
Таблицы БД: dbo.TasksInSubcat*Denormalized
Скорость и корректность списков задач (гридов) зависят от актуальности денормализованных данных. Рассинхрон приводит к отображению устаревших данных при корректной таблице Tasks.
CustomSettings — прочие ключи задач¶
Дополнительное поведение задач задаётся ключами CustomSettings:
| Ключ | Тип / по умолчанию | Назначение |
|---|---|---|
UseOldSurveys |
0 / 1 |
Выбор редактора опросов: 0 — SurveyJS (рекомендуется), 1 — SurveyProject (устаревший). Меняется только при наличии причин для возврата к старому редактору |
SearchEncryptedTasks |
bool | Включает поиск по зашифрованным задачам (если в категории включено шифрование). См. бизнес-логику задач, раздел «Шифрование задач» |
personalDynSignaturesOnly |
array (SubcatID) | Список ID категорий, в которых отключаются динамические подписи (только статические на маршруте) |
SmartActionMaxPerformers |
int, по умолчанию 20 |
Лимит числа исполнителей при назначении через смарт-действия «Добавить исполнителя»/«Добавить группу исполнителей»; 0 отключает проверку. Подробнее: Кастомные настройки → SmartActionMaxPerformers |
Чипы быстрого планирования — ограничения¶
Набор чипов быстрого планирования срока («В течение часа», «Сегодня к вечеру», «Завтра к вечеру», «В конце недели», «На следующей неделе», «В конце месяца», «В течение месяца») и блоки времени календаря (Утро / День / Вечер) не настраиваются ни администратором категории, ни через системные настройки. Их состав, временные интервалы и поведение жёстко заданы в интерфейсе. Границы блоков и расчёт чипов вычисляются от производственного календаря (рабочие дни, рабочее время) и общих настроек дня — это влияет только на конкретные даты/часы, но не на сам набор опций. Изменение поведения требует доработки кода фронтенда.
Описание поведения каждого чипа и блока — см. business.md, раздел «Изменить срок задачи».
Типичные ошибки настройки и связанные документы¶
Частые проблемы настройки задач и где их проверять:
| Симптом | Причина | Где проверить | SQL-диагностика |
|---|---|---|---|
| Не удаётся изменить срок задачи | Включён режим подтверждения через подпись | Настройки категории | select * from dbo.StatesRoutesSignatures where StepID in (select StepID from dbo.StatesRoutesInSubcat where SubcatID = {subcatId}) |
| Не удаётся сменить исполнителя | Ограничения категории для просроченных задач | Настройки категории | Проверить флаги делегирования в dbo.Subcategories |
| Иерархия задач пустая/неверная | Некорректные поля или динамические узлы | Форма task-hierarchies |
select * from dbo.TaskHierarchy where Id = {hierarchyId} |
| Список задач показывает устаревшие данные | Рассинхрон денормализации | TasksInSubcat*Denormalized |
Сравнить Tasks и TasksInSubcat*Denormalized для задачи |
| Шаблон не заполняет поля | Неверные ссылки на категорию/ДП в шаблоне | Форма task-templates |
select * from dbo.TaskUniversalTemplates where Id = {templateId} |
Связи таблиц задач (модель данных)¶
Центральная таблица — Tasks: каждая задача ссылается на заказчика (UserID → Users), статус (StateID → States), категорию (SubcatID → Subcategories) и, для подзадач, на родительскую задачу (ParentTaskID → Tasks). Исполнители хранятся в TaskHelpers. Категории группируются в разделы (Subcategories.CategoryID → Categories), разделы образуют дерево через само-ссылку Categories.ParentCategoryID.
graph LR
T["Tasks — задачи"]
TH["TaskHelpers — исполнители"]
U["Users — пользователи"]
ST["States — статусы"]
SC["Subcategories — категории"]
C["Categories — разделы"]
T -- "UserID (заказчик)" --> U
T -- "StateID" --> ST
T -- "SubcatID" --> SC
T -- "ParentTaskID" --> T
TH -- "TaskID" --> T
TH -- "UserID" --> U
SC -- "CategoryID" --> C
C -- "ParentCategoryID" --> C
Завершённой считается задача при
IsClosed = 1иStates.FinishWork = 1; у отклонённойCloseTask = 1, ноFinishWork = 0.EndTimeпри восстановлении задачи не очищается.
Полная версия с колонками и схемы связей других подсистем БД — в system/db-er-diagrams.md.
См. также:
- Настройка категорий — поведенческие флаги задач
- Работа с задачами — бизнес-логика и жизненный цикл задач