Найм: авто-задача IT на доступи з чек-листом + сповіщення постановника

При створенні HR-заявки з обраними базами/доступами тепер одразу ставиться
задача IT-відділу (замість тікета на затвердженні):

- TaskChecklistItem: чек-лист задачі, виконавець відмічає зроблене
  (task-detail: чекбокси, лічильник виконаного, хто/коли відмітив)
- create_hiring_request → _create_access_task: задача з чек-листом по базах,
  creator = HR (постановник), co_executors = IT-група (тригерить сповіщення
  ботом Ричард), priority=high, due_date рахується за робочим часом
- add_working_hours (visit_manager/services): дедлайн за робочим вікном
  09:00–18:00 з урахуванням вихідних і свят (Holiday)
- Постановнику (HR) бот пише, що заявку взято в роботу, строк — 24 год
  робочого часу (до розрахованої дати)
- approve більше не створює дублюючий IT-тікет (доступи вже задачею)
- HiringRequest.access_task; чек-лист в адмінці задач (inline)
- Тести: hiring (задача+чек-лист, approve без тікета), робочі години
  (вихідні/свята), відмітка чек-листа через в'ю

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 01:01:30 +03:00
parent a17e982d8c
commit 5a274f7f90
12 changed files with 366 additions and 41 deletions
+5
View File
@@ -93,6 +93,11 @@ class HiringRequest(BaseModel):
null=True, blank=True,
related_name='hiring_requests', verbose_name=_('Заявка в IT'),
)
access_task = models.ForeignKey(
'tasks.Task', on_delete=models.SET_NULL,
null=True, blank=True,
related_name='+', verbose_name=_('Задача на видачу доступів'),
)
class Meta:
verbose_name = _('Заявка на найм')