Commit Graph

47 Commits

Author SHA1 Message Date
gorbenko.pavel c60726759e Дедуп исполнителей резолва — по Guid сотрудника, не по email
Tests / frontend-test (pull_request) Successful in 46s
Tests / backend-test (pull_request) Successful in 5m31s
Реальная причина бага с дублем в списке согласования: один и тот же
человек может иметь несколько email в справочнике api.tnsu.kz, поэтому
схлопывание по email его не ловило.

EmployeeDirectoryInfo дополнен полем Id (Guid сотрудника из /Employee/
ByEmail). ResolveStepAsync теперь параллельно с email несёт этот Id
(внутренний ResolvedStepRow, наружу не отдаётся), а CollapseByExecutorIdentity
и RemoveCompanyDirectorsDuplicatedByDirectorTansu дедуплицируют по
identity-ключу: Id, если он резолвился, иначе email как фолбэк (на случай,
если сотрудник по итоговому email не нашёлся в справочнике).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 11:30:17 +05:00
gorbenko.pavel cc4ad423bc Revert: Директор Tansu — снова удаляем дубликат из CompanyDirectors
Возврат к удалению совпавшей строки CompanyDirectors вместо
последовательной постановки после блока (см. 40d741c) — решили не
показывать одного и того же человека дважды в списке согласования.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 11:10:06 +05:00
gorbenko.pavel 0289236d19 Тест: один директор двух компаний инициатора схлопывается в одну строку
Покрывает ровно тот сценарий, который выглядел как баг на скриншоте из
ManageRequestsScreen (один и тот же человек дважды на одном шаге) —
подтверждает, что текущий код (CollapseByExecutorEmail) схлопывает такую
пару в одну строку без предупреждения.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 11:05:59 +05:00
gorbenko.pavel 6160ef07ea Merge remote-tracking branch 'origin/main' into fixes 2026-08-26 11:00:17 +05:00
gorbenko.pavel 40d741c8c9 Директор Tansu среди директоров компаний: не параллельно, а после блока
Вместо удаления совпавшей строки CompanyDirectors — обе строки (директор
компании и Директор Tansu) остаются в результате, это два разных пункта
согласования, даже если физически один человек. Строка DirectorTansu,
чей email совпал с одним из CompanyDirectors, не участвует в обычном
схлопывании по email (CollapseByExecutorEmail) — та восприняла бы это как
конфликт PositionCode одного согласующего. Вместо этого её OrderNo явно
переставляется на «сразу после блока CompanyDirectors» (максимальный
OrderNo блока + 1), так что она идёт последовательно, а не параллельно
остальным директорам компаний.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 10:53:41 +05:00
gorbenko.pavel b86e126ceb Веб-часть админки на всю ширину (edge-to-edge, как в request-portal) (#17)
Tests / frontend-test (push) Successful in 48s
Tests / backend-test (push) Successful in 2m0s
Канву SharePoint мы и раньше разжимали (тот же :global хак + supportsFullBleed
в манифесте), но содержимое упиралось в max-width: 1080px у .content и
центрировалось — визуально это читалось как «не открывается на всю ширину».

Переношу раскладку портала (RequestPortal.module.scss):
- корень .approvalAdmin — width: 100%, padding: 0;
- .shell больше не карточка: без рамки, тени, скруглений и overflow: hidden
  (последний ломает sticky), align-items: flex-start, min-height: 78vh;
- .side — заливка $navy-800 на колонке (align-self: stretch), сам Sidebar
  внутри sticky на 100vh: градиент не плывёт от высоты соседа, и под рейлом
  на длинных таблицах нет белого провала, если sticky не включился;
- .content — сняты max-width и margin: auto, остались только отступы;
- мобильный брейкпоинт обновлён под новую схему: десктопные правила рейла
  снимаются явно, иначе sticky+100vh спорил бы с position: fixed, который
  ui-kit ставит drawer'у, при равной специфичности.

Разметка AdminApp.tsx не менялась — структура уже совпадала с портальной.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/17
2026-08-25 08:46:08 +00:00
gorbenko.pavel 3421922a08 Веб-часть админки на всю ширину (edge-to-edge, как в request-portal)
Tests / frontend-test (pull_request) Successful in 47s
Tests / backend-test (pull_request) Successful in 1m48s
Канву SharePoint мы и раньше разжимали (тот же :global хак + supportsFullBleed
в манифесте), но содержимое упиралось в max-width: 1080px у .content и
центрировалось — визуально это читалось как «не открывается на всю ширину».

Переношу раскладку портала (RequestPortal.module.scss):
- корень .approvalAdmin — width: 100%, padding: 0;
- .shell больше не карточка: без рамки, тени, скруглений и overflow: hidden
  (последний ломает sticky), align-items: flex-start, min-height: 78vh;
- .side — заливка $navy-800 на колонке (align-self: stretch), сам Sidebar
  внутри sticky на 100vh: градиент не плывёт от высоты соседа, и под рейлом
  на длинных таблицах нет белого провала, если sticky не включился;
- .content — сняты max-width и margin: auto, остались только отступы;
- мобильный брейкпоинт обновлён под новую схему: десктопные правила рейла
  снимаются явно, иначе sticky+100vh спорил бы с position: fixed, который
  ui-kit ставит drawer'у, при равной специфичности.

Разметка AdminApp.tsx не менялась — структура уже совпадала с портальной.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 13:37:22 +05:00
gorbenko.pavel ba48ed1a0e Несколько условий шага, объединяемых через И/ИЛИ (#16)
Tests / frontend-test (push) Successful in 47s
Tests / backend-test (push) Successful in 2m12s
<html>
<body>
<!--StartFragment-->
GetEmployeeByEmailAsync возвращает массив; новый HeadType.CompanyDirectors
--

<!--EndFragment-->
</body>
</html>[GetEmployeeByEmailAsync возвращает массив; новый HeadType.CompanyDirectors](http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/commit/572749b4d7cc11bc8e1ef4184a93f18a14b710ab)

---------

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/16
2026-08-25 07:04:44 +00:00
gorbenko.pavel e4a6cb8167 Новые условия (#15)
Tests / frontend-test (push) Successful in 46s
Tests / backend-test (push) Successful in 1m48s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/15
2026-08-24 12:27:25 +00:00
gorbenko.pavel a1fa862ed4 в деве сделал чтоб партиции не создавались
Tests / frontend-test (push) Successful in 45s
Tests / backend-test (push) Successful in 2m15s
2026-08-24 10:45:27 +05:00
gorbenko.pavel aa97657721 обновлен reminders
Tests / frontend-test (push) Successful in 46s
Tests / backend-test (push) Successful in 3m57s
2026-08-20 11:49:54 +05:00
gorbenko.pavel 1ee1b71e3e Редактирование заявок у конкретного пользователя (#14)
Tests / frontend-test (push) Successful in 45s
Tests / backend-test (push) Successful in 7m18s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/14
2026-08-19 12:58:07 +00:00
gorbenko.pavel 82512eb1db Архивация списков (#13)
Tests / frontend-test (push) Successful in 44s
Tests / backend-test (push) Failing after 17m4s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/13
2026-08-19 09:08:36 +00:00
gorbenko.pavel a2672042d7 ускорение reminders
Tests / frontend-test (push) Successful in 46s
Tests / backend-test (push) Successful in 2m7s
2026-08-18 10:58:34 +05:00
gorbenko.pavel 36fb71da02 RequestUniqueCode из данных заявк
Tests / frontend-test (push) Successful in 50s
Tests / backend-test (push) Successful in 2m9s
2026-08-18 10:46:28 +05:00
gorbenko.pavel 7bd4acb7a6 добавлен статус
Tests / frontend-test (push) Successful in 48s
Tests / backend-test (push) Successful in 3m4s
2026-08-17 14:33:51 +05:00
gorbenko.pavel 48ede1420d Обходной лист (#12)
Tests / backend-test (push) Successful in 1m38s
Tests / frontend-test (push) Successful in 47s
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
gorbenko.pavel d076f4e98d Sla (#11)
Tests / backend-test (push) Successful in 1m50s
Tests / frontend-test (push) Successful in 49s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/11
2026-08-13 04:44:08 +00:00
gorbenko.pavel 7f2aabbf29 докомиит
Tests / frontend-test (push) Successful in 44s
Tests / backend-test (push) Successful in 2m14s
2026-08-12 15:27:29 +05:00
gorbenko.pavel 185cc22e34 добавлен заведующим складом
Tests / frontend-test (push) Failing after 39s
Tests / backend-test (push) Successful in 1m59s
2026-08-12 15:26:49 +05:00
gorbenko.pavel 509f26de7b поправлены дубли шагов
Tests / frontend-test (push) Successful in 46s
Tests / backend-test (push) Successful in 1m59s
2026-08-11 10:07:41 +05:00
gorbenko.pavel 0dedabc2ae переименование колонок
Tests / frontend-test (push) Successful in 47s
Tests / backend-test (push) Successful in 1m41s
2026-08-10 15:14:57 +05:00
gorbenko.pavel dc56f9a661 Переезд на метод портала с департаментами (#10)
Tests / frontend-test (push) Successful in 42s
Tests / backend-test (push) Successful in 2m19s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/10
2026-08-10 06:10:56 +00:00
gorbenko.pavel a07338314a Уведомления назначенным пользователям (#9)
Tests / frontend-test (push) Successful in 43s
Tests / backend-test (push) Successful in 1m54s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/9
2026-08-10 05:16:54 +00:00
gorbenko.pavel 11738b6e4a правки по логике переключения
Tests / frontend-test (push) Successful in 45s
Tests / backend-test (push) Successful in 2m11s
2026-08-07 16:04:22 +05:00
gorbenko.pavel 1d45780294 Заглушка для департамента (#8)
Tests / frontend-test (push) Successful in 43s
Tests / backend-test (push) Successful in 2m57s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/8
2026-08-07 10:36:53 +00:00
gorbenko.pavel 0ffa032ade Управление заявками (#7)
Tests / frontend-test (push) Successful in 43s
Tests / backend-test (push) Successful in 2m36s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/7
2026-08-07 09:49:38 +00:00
gorbenko.pavel 9d9f390548 теперь хранится id списка а не его название
Tests / test (push) Successful in 1m33s
2026-08-03 16:14:31 +05:00
gorbenko.pavel c84c2a6cb4 изменение настроек
Tests / test (push) Successful in 2m58s
2026-07-31 18:05:18 +05:00
gorbenko.pavel 8034d5d0fe Revert "https://tnsukz.sharepoint.com/sites/hrm"
Tests / test (push) Successful in 2m35s
This reverts commit fee84cef4d.
2026-07-31 17:41:26 +05:00
gorbenko.pavel fee84cef4d https://tnsukz.sharepoint.com/sites/hrm
Tests / test (push) Successful in 7m10s
2026-07-31 17:17:37 +05:00
gorbenko.pavel 13db1388a3 Новый виды условных шагов (#6)
Tests / test (push) Successful in 4m19s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/6
2026-07-31 12:15:15 +00:00
gorbenko.pavel 3e91ecdd96 Объединить .gitignore и актуализировать README
Tests / test (push) Successful in 5m18s
Правила из frontend/.gitignore перенесены в корневой .gitignore,
дублирующий файл удалён. README дополнен описанием SPFx frontend
(ApprovalAdmin), который ранее был ошибочно указан как отсутствующий.
2026-07-30 14:10:00 +05:00
gorbenko.pavel 2e4873bb4b поправлен README.md
Tests / test (push) Successful in 2m42s
2026-07-30 12:45:23 +05:00
gorbenko.pavel da158cfd84 Фронтенд для сервиса (#5)
Tests / test (push) Successful in 2m26s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/5
2026-07-30 06:11:24 +00:00
gorbenko.pavel 5476c1bab5 добавлен warning
Tests / test (push) Successful in 2m4s
2026-07-29 14:53:45 +05:00
gorbenko.pavel a28a397205 теперь берем email из токена
Tests / test (push) Successful in 1m47s
2026-07-29 10:23:53 +05:00
gorbenko.pavel 13d929eb5b валидация статуса 2026-07-29 10:19:38 +05:00
gorbenko.pavel 8f640d4324 Fix https (#4)
Tests / test (push) Successful in 1m31s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/4
2026-07-28 07:58:53 +00:00
gorbenko.pavel 6a6eb1a273 корсы добавлены (#3)
Tests / test (push) Successful in 1m30s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/3
2026-07-28 07:06:24 +00:00
admin d37ab69962 added vs to .gitignore
Tests / test (push) Successful in 1m29s
2026-07-28 11:54:36 +05:00
admin 376291d3c0 scalar добавлен не только для разработки, но для прода 2026-07-28 11:52:54 +05:00
admin 43b4e3474c Добавлено условие для проверки установки cifs-utils и rsync перед их установкой
Deploy to IIS / deploy (push) Successful in 2m58s
Tests / test (push) Successful in 20m7s
2026-07-28 10:27:57 +05:00
admin 598ac2c61f Добавление рабочего процесса развертывания на IIS
Deploy to IIS / deploy (push) Failing after 3m7s
Tests / test (push) Successful in 24m14s
2026-07-28 10:02:28 +05:00
gorbenko.pavel 602554ac64 апи для работы с маршрутами согласования (#2)
Tests / test (push) Successful in 5m45s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/2
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tnsu.kz>
Co-committed-by: gorbenko.pavel <gorbenko.pavel@tnsu.kz>
2026-07-27 13:14:32 +00:00
gorbenko.pavel bc05df3f73 Создание таблиц для цепочек подтверждения (#1)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/1
2026-07-23 04:55:24 +00:00
gorbenko.pavel b64f71f7ec Создан бэкенд-боилерплейт по образцу tnsu-inventory
4-слойная архитектура (Api/Application/Domain/Infrastructure) на .NET 10
с MediatR и EF Core + PostgreSQL, без бизнес-логики. Добавлены
docker-compose, .env.example и README для локального запуска.
2026-07-22 14:25:58 +05:00