Files
tnsu-approval-route/frontend/src/webparts/approvalAdmin/models/dictionaries.ts
T
gorbenko.pavel 48ede1420d
Tests / backend-test (push) Successful in 1m38s
Tests / frontend-test (push) Successful in 47s
Обходной лист (#12)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/12
2026-08-17 05:43:52 +00:00

51 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Справочники api.tnsu.kz (компании, отделы, проекты) в виде, удобном для UI.
// Приведение из «сырых» PascalCase-ответов портала — в services/portalDictionary.ts.
/* eslint-disable @rushstack/no-new-null -- поля 1:1 зеркалят nullable JSON-контракт портала api.tnsu.kz */
export interface Company {
id: string;
name: string;
}
export interface Department {
id: string;
name: string;
companyId: string;
company: string;
}
// Важно: идентификатор проекта — поле "oid". Именно оно принимается
// портальным /Project/{oid:guid} и передаётся в ResolveTemplateRouteQuery.projectId.
// Числовое "id" и legacy "id1c" — другие идентификаторы, для резолва не подходят.
export interface Project {
oid: string;
name: string;
code: string | null;
status: string | null;
}
// api.tnsu.kz/Employee/All. Ключ для полей executorEmail/userEmail на нашем
// бэкенде — email, но вводить его руками неудобно, поэтому в UI ищем по ФИО.
export interface Employee {
fio: string;
email: string;
/** Должность из 1С (AD) — '' если не заполнена в источнике. Используется как
* подсказка при выборе сотрудника (см. ManageRequestsApproverModal), не для
* отображения в списке (сам справочник должностей не показывает). */
position: string;
/**
* Первая компания сотрудника из справочника ('' если не пришла) — для
* отображения в пикере/списках, где на человека нужна ровно одна строка.
*/
company: string;
/**
* ВСЕ компании, где числится сотрудник — совместители и штат общих служб
* (бухгалтерия, HR) на несколько юрлиц не редкость: в api.tnsu.kz это
* отдельная строка на каждую компанию, а не одна с списком. Проверять
* принадлежность к конкретной компании (маршрут ограничен ею) нужно по
* этому полю, а не по company — иначе сотрудник, у которого в справочнике
* первой оказалась ДРУГАЯ его компания, ошибочно выглядел бы отсутствующим.
*/
companies: string[];
}