From 3513816af2cf1f20c3ec7a74f0272a220c335841 Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Mon, 10 Aug 2026 10:26:06 +0500 Subject: [PATCH 1/2] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=BE=D1=82=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/Tnsu.ApprovalRoute.Api/appsettings.json | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json b/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json index f974e4b..12fe82b 100644 --- a/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json +++ b/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json @@ -9,7 +9,6 @@ "Postgres": "Host=db-master.tnsu.kz;Database=tnsu_approval_route;Username=dbuser;Password=p}{6{Pa]{JQwP1H" }, "Entra": { - "TenantId": "b4c2af35-bfd6-4cff-9af9-556efb53e65a", "Audience": "9232d9e2-9807-4753-808f-07250e5474b0" }, -- 2.34.1 From 5e5242942e4470607f6af6c521a4245148313e85 Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Mon, 10 Aug 2026 11:06:11 +0500 Subject: [PATCH 2/2] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B5=D0=B7=D0=B4?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TnsuPortal/HttpTnsuPortalClient.cs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs b/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs index 0c46637..5805898 100644 --- a/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs +++ b/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs @@ -56,15 +56,18 @@ public sealed class HttpTnsuPortalClient( return executors; } - // STUB(department-head): в api.tnsu.kz пока нет эндпоинта «руководитель отдела - // по Id отдела» — до его появления просто возвращаем захардкоженный email, - // чтобы можно было отладить всю остальную логику HeadType.DepartmentHead - // (resolve, warning-и, UI) не дожидаясь портала. Когда эндпоинт появится — - // заменить тело этого метода на реальный вызов через GetAsync (по - // образцу остальных методов этого класса); сигнатуру и вызывающий код - // (TemplateRouteService.ResolveStepAsync) менять не придётся. - public Task GetDepartmentHeadEmailAsync(Guid departmentId, CancellationToken cancellationToken) => - Task.FromResult("gorbenko.pavel@tnsu.kz"); + // Ответ — {"managerEmail": "..."} (та же форма, что у /Employee/Manager), + // а НЕ форма сотрудника (EmployeeResponse) — проверено живым вызовом + // (GET /Employee/DepartmentHead?departmentId=... на отделе "АУП"/"ТОО + // Монтажник-Т" вернул именно managerEmail). 404 с телом {"error": "..."} + // на отделах без руководителя уже отфильтровывается общим GetAsync. + public async Task GetDepartmentHeadEmailAsync(Guid departmentId, CancellationToken cancellationToken) + { + var manager = await GetAsync( + $"/Employee/DepartmentHead?departmentId={Uri.EscapeDataString(departmentId.ToString())}", cancellationToken); + + return manager?.ManagerEmail; + } private async Task GetAsync(string requestUri, CancellationToken cancellationToken) where T : class { -- 2.34.1