Правки (#18)
Tests / frontend-test (push) Successful in 46s
Tests / backend-test (push) Successful in 5m28s

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/18
This commit was merged in pull request #18.
This commit is contained in:
2026-08-26 07:08:16 +00:00
parent b86e126ceb
commit 19a46b0df8
4 changed files with 196 additions and 39 deletions
@@ -20,7 +20,7 @@ public sealed class HttpTnsuPortalClient(
return [];
return employees
.Select(e => new EmployeeDirectoryInfo(e.CompanyId ?? Guid.Empty, e.DepartmentId, e.Company ?? string.Empty, e.Position))
.Select(e => new EmployeeDirectoryInfo(e.CompanyId ?? Guid.Empty, e.DepartmentId, e.Company ?? string.Empty, e.Position, e.Id))
.ToList();
}
@@ -94,7 +94,8 @@ public sealed class HttpTnsuPortalClient(
[property: JsonPropertyName("companyId")] Guid? CompanyId,
[property: JsonPropertyName("departmentId")] Guid? DepartmentId,
[property: JsonPropertyName("position")] string? Position,
[property: JsonPropertyName("fio")] string? Fio);
[property: JsonPropertyName("fio")] string? Fio,
[property: JsonPropertyName("id")] Guid? Id = null);
private sealed record ManagerResponse(
[property: JsonPropertyName("managerEmail")] string? ManagerEmail);
@@ -2,7 +2,16 @@ using Tnsu.ApprovalRoute.Domain.Enums;
namespace Tnsu.ApprovalRoute.Infrastructure.TnsuPortal;
public sealed record EmployeeDirectoryInfo(Guid CompanyId, Guid? DepartmentId, string Company, string? Position);
/// <param name="Id">
/// Guid сотрудника в справочнике api.tnsu.kz — один и тот же человек может иметь
/// несколько записей (см. массив в /Employee/ByEmail) и даже несколько разных
/// email, но Id у него один. Используется как надёжный ключ дедупликации
/// исполнителей при резолве маршрута (см. TemplateRouteService) — email для
/// этого не годится: один человек может фигурировать под разными адресами.
/// Nullable, потому что старые вызовы могли не запросить это поле явно (сейчас
/// всегда приходит) — на этот случай дедуп по Id тихо откатывается на email.
/// </param>
public sealed record EmployeeDirectoryInfo(Guid CompanyId, Guid? DepartmentId, string Company, string? Position, Guid? Id = null);
public sealed record ProjectExecutorInfo(ProjectRole ProjectRole, string Email);