From 53535e418071210c1d9d153632849e55a42eb45c Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Wed, 14 Oct 2026 14:24:33 +0500 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=87=D0=B0=D1=82=20=D0=B2=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D1=91=D0=BD=20=D0=B2=20=D0=B7=D0=B0=D1=8F=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=D1=85=20=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B1?= =?UTF-8?q?=D0=BE=D1=80,=20=D0=BD=D0=B0=20=D0=BF=D1=80=D0=B8=D1=91=D0=BC?= =?UTF-8?q?=20=D0=B8=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=201=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .../features/approve/ApproveFeature.tsx | 2 +- .../requestPortal/features/edit/EditFeature.tsx | 2 +- .../requestPortal/shared/chat/chatEnabled.test.ts | 8 +++++--- .../requestPortal/shared/chat/chatEnabled.ts | 13 +++++++++---- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/webparts/requestPortal/features/approve/ApproveFeature.tsx b/src/webparts/requestPortal/features/approve/ApproveFeature.tsx index dbfbd08..8a82cc9 100644 --- a/src/webparts/requestPortal/features/approve/ApproveFeature.tsx +++ b/src/webparts/requestPortal/features/approve/ApproveFeature.tsx @@ -53,7 +53,7 @@ const ApproveFeature: React.FC = ({ context, formKey, item {/* Доступно всем, кто может открыть заявку: автору, всем согласующим (и уже решившим, и ещё ждущим своей очереди) и исполнителям — в отличие от панели решения, которая видна только текущему шагу. - Пока включено только для «Обходного листа» — см. isChatEnabledFor. */} + Включено не для всех типов заявок — см. isChatEnabledFor. */} {isChatEnabledFor(formKey) && ( )} diff --git a/src/webparts/requestPortal/features/edit/EditFeature.tsx b/src/webparts/requestPortal/features/edit/EditFeature.tsx index f2b20a9..bec5f1e 100644 --- a/src/webparts/requestPortal/features/edit/EditFeature.tsx +++ b/src/webparts/requestPortal/features/edit/EditFeature.tsx @@ -73,7 +73,7 @@ const EditFeature: React.FC = ({ context, formKey, itemId, li {/* Обсуждение — то же самое, что видят согласующие (комментарии к строке заявки). Здесь оно особенно нужно: заявку правят как раз после возврата на доработку, и уточнить причину логично не уходя с формы. - Пока включено только для «Обходного листа» — см. isChatEnabledFor. */} + Включено не для всех типов заявок — см. isChatEnabledFor. */} {isChatEnabledFor(formKey) && ( )} diff --git a/src/webparts/requestPortal/shared/chat/chatEnabled.test.ts b/src/webparts/requestPortal/shared/chat/chatEnabled.test.ts index 15088d1..ca6c555 100644 --- a/src/webparts/requestPortal/shared/chat/chatEnabled.test.ts +++ b/src/webparts/requestPortal/shared/chat/chatEnabled.test.ts @@ -1,14 +1,16 @@ import { isChatEnabledFor } from './chatEnabled'; describe('isChatEnabledFor', () => { - it('включён для «Обходного листа»', () => { + it('включён для Обходного листа, подбора, приёма и заявки в 1С', () => { expect(isChatEnabledFor('clearance-form')).toBe(true); + expect(isChatEnabledFor('recruiting-selection')).toBe(true); + expect(isChatEnabledFor('recruiting-hire')).toBe(true); + expect(isChatEnabledFor('it-1c-ticket')).toBe(true); }); it('выключен для остальных типов заявок', () => { expect(isChatEnabledFor('hr-vacation')).toBe(false); - expect(isChatEnabledFor('it-1c-ticket')).toBe(false); - expect(isChatEnabledFor('recruiting-hire')).toBe(false); + expect(isChatEnabledFor('recruiting-referral')).toBe(false); }); it('незнакомый ключ — тоже выключен, а не бросает', () => { diff --git a/src/webparts/requestPortal/shared/chat/chatEnabled.ts b/src/webparts/requestPortal/shared/chat/chatEnabled.ts index b3e6b6a..ef5cf19 100644 --- a/src/webparts/requestPortal/shared/chat/chatEnabled.ts +++ b/src/webparts/requestPortal/shared/chat/chatEnabled.ts @@ -3,9 +3,9 @@ import { RequestTypeId } from '../../models/types'; /** * Типы заявок, для которых показывается чат (shared/chat). * - * Пилот: только «Обходной лист» (forms/Clearance, FORM_ID = 'clearance-form'). - * Остальным формам чат пока не нужен — решение сузить область до одного типа, - * а не включать сразу на все девять. + * Включаем по одному типу, а не сразу на все: «Обходной лист» — первый пилот, + * с 2026-10-14 добавлены «Заявка на подбор», «Заявка на приём» и «Заявка в + * отдел 1С». * * Ключ — строковый литерал, а не импорт FORM_ID из forms/Clearance/model: * shared/* не должен зависеть от forms/* (зависимость идёт в обратную сторону @@ -13,7 +13,12 @@ import { RequestTypeId } from '../../models/types'; * так что литерал здесь не менее надёжен, чем в LIST_TITLE_BASE * (shared/listTitles.ts), где тем же приёмом перечислены все типы заявок. */ -const CHAT_ENABLED_FORM_IDS: ReadonlySet = new Set(['clearance-form']); +const CHAT_ENABLED_FORM_IDS: ReadonlySet = new Set([ + 'clearance-form', + 'recruiting-selection', + 'recruiting-hire', + 'it-1c-ticket' +]); /** Показывать ли чат по заявке для этого типа. Проверяется ДО монтирования * RequestChat — иначе хук useRequestChat опрашивал бы SharePoint (загрузка +