Commit Graph

30 Commits

Author SHA1 Message Date
gorbenko.pavel 08dc484d03 Окно создания восстанавливается после F5 вместе с черновиком
Tests / frontend-test (pull_request) Successful in 1m30s
Tests / backend-test (pull_request) Successful in 1m46s
usePersistedOpen хранит в localStorage признак «модалка создания открыта»
для типов заявок, доступа к заявкам, маршрутов и шагов маршрута (ключ
шага — по id маршрута). После F5 окно открывается снова с полями из
черновика; любое закрытие сбрасывает признак, а сам черновик остаётся до
сохранения или «Очистить». Редактирование не восстанавливается.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 10:30:42 +05:00
gorbenko.pavel 6deebf9507 Старая запись в localStorage приводится к форме текущей формы
Tests / frontend-test (pull_request) Successful in 1m32s
Tests / backend-test (pull_request) Successful in 2m13s
Раньше сохранённое значение только мёржилось с дефолтом: удалённые поля
оставались в состоянии, а значение другого типа (или null вместо
объекта) роняло рендер. coerceStored отбрасывает лишние ключи и заменяет
значения не того типа дефолтом; покрыто тестами.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 10:16:36 +05:00
gorbenko.pavel 872686e855 Предупреждение при выходе из формы редактирования с несохранёнными правками
Tests / frontend-test (pull_request) Successful in 1m31s
Tests / backend-test (pull_request) Successful in 1m35s
FormModal получил isDirty: если в форме редактирования существующей
записи что-то изменили, крестик, «Отмена» и клик мимо окна сначала
показывают диалог «Закрыть без сохранения?». Подключено к редактированию
типа заявки, маршрута, шага маршрута и согласующего в заявке. Формы
создания не затронуты — их черновик и так сохраняется.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 10:02:40 +05:00
gorbenko.pavel b94e6e60f5 Модалки рендерятся порталом в body поверх шапки SharePoint
Tests / frontend-test (pull_request) Successful in 1m31s
Tests / backend-test (pull_request) Successful in 1m38s
На живой странице оверлей модалки жил внутри канвы веб-части, чей
контекст наложения ниже шапки SharePoint: верх высокого окна (например,
«Новый шаг маршрута») уезжал под шапку. В workbench шапки нет, поэтому
там было незаметно. Теперь Modal и ConfirmDialog рендерят подложку через
ModalOverlay (портал в document.body) с z-index выше шапки; меню
выпадающих списков подняты над ним.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 09:41:53 +05:00
gorbenko.pavel 3d970bf461 Черновики форм создания сохраняются в localStorage
Tests / backend-test (pull_request) Successful in 1m35s
Tests / frontend-test (pull_request) Successful in 1m31s
Модалки по жёлтым кнопкам «Добавить» (типы заявок, доступ к заявкам,
маршруты, шаги маршрута) теряли введённое при случайном клике по
подложке. Теперь черновик живёт в localStorage (useFormDraft) и
переживает закрытие окна, «Отмену» и F5. Сбрасывается после успешного
сохранения или кнопкой «Очистить» в подвале модалки. Формы
редактирования не персистятся — всегда открываются с данными сервера.

Попутно убраны Sass-предупреждения mixed-decls в Card.module.scss.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 17:35:26 +05:00
gorbenko.pavel 0e6a7064d2 Feature/routes export (#29)
Tests / backend-test (push) Successful in 6m7s
Tests / frontend-test (push) Successful in 1m29s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/29
2026-10-14 05:06:58 +00:00
gorbenko.pavel 05f73d356a fix: смена согласующего в админке «трогает» заявку, чтобы новый человек получил права (#28)
Tests / frontend-test (push) Successful in 1m32s
Tests / backend-test (push) Successful in 1m40s
Права на заявку выдаёт бэкенд по вебхуку на изменение элемента списка данных.
Массовая и одиночная замена писали только в список согласования, вебхук не
приходил, и новый человек видел «Элемент не найден». Теперь после смены
(и добавления шага) в заявку пишется её текущий RequestStatus — появляется
новая версия элемента.

Co-Authored-By: Claude Sonnet 5.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/28
2026-10-07 10:19:52 +00:00
gorbenko.pavel dcdfcdd396 Добавить фильтр по title в GET /api/request-types/lists (#24)
Tests / frontend-test (push) Successful in 49s
Tests / backend-test (push) Successful in 1m25s
Позволяет искать партицию по заголовку списка SharePoint без вхождения
на каждый тип заявки отдельно.

Co-Authored-By: Claude Sonnet 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/24
2026-09-28 06:37:48 +00:00
gorbenko.pavel a8bfd9f456 Feature/request type access (#23)
Tests / frontend-test (push) Successful in 49s
Tests / backend-test (push) Successful in 1m38s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/23
2026-09-25 11:48:02 +00:00
gorbenko.pavel 1bf8d4ca11 Feature/request manage server load (#22)
Tests / frontend-test (push) Successful in 45s
Tests / backend-test (push) Successful in 1m43s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/22
2026-09-25 06:30:59 +00:00
gorbenko.pavel 2b8fe77fac Auto approve (#21)
Tests / frontend-test (push) Successful in 46s
Tests / backend-test (push) Successful in 3m39s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/21
2026-09-14 09:01:56 +00: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 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 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 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 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 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 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