Commit Graph

161 Commits

Author SHA1 Message Date
gorbenko.pavel 74de2b441e Отпуск и отпуск без содержания: без даты окончания — начало и количество дней; EndDate убрана из провижининга, кода и SharePoint (из типа контента и представления)
Tests / frontend-test (pull_request) Successful in 1m36s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 11:49:37 +05:00
gorbenko.pavel af5a91c092 Заявление на отпуск: без даты окончания — продолжительность и начало, без возни с праздниками и выходными
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 11:39:59 +05:00
gorbenko.pavel 68424cd6f6 Заявка 1С: исполнители пишутся через executorsToWrite (нумерация шагов исполнения с 1)
Tests / frontend-test (pull_request) Successful in 5m4s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 09:23:07 +05:00
gorbenko.pavel 69a62cfacb Мердж origin/main в feature/vacation-edo-signing: Ticket1C берём версию main (plannerHandoff, submitStatus)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 09:20:12 +05:00
gorbenko.pavel e51d2fd98c ЭДО: портал называет себя «Портал заявок» (service_initiator_name)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 18:15:13 +05:00
gorbenko.pavel 16a478053c ЭДО: сертификат компании нужен только для mTLS, портал больше не разбирает awaiting_certificate
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 17:36:03 +05:00
gorbenko.pavel 7aacc1730f Отпуск: без исполнителя в маршруте инициатора нет, initiator_email не передаётся 2026-10-02 17:23:29 +05:00
gorbenko.pavel cdb7408dda Отпуск: зелёное сообщение об отправке в ЭДО без подробностей — ответ 200 значит принято
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 17:17:52 +05:00
gorbenko.pavel 1fd759732e Отпуск: инициатор в ЭДО — исполнитель заявки (первый в фазе исполнения), а не сотрудник
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 17:16:23 +05:00
gorbenko.pavel 911ccfbcf4 Отпуск: документы компаний без сертификата Sigex сохраняются в ЭДО и ждут его загрузки, сообщение об этом в «Решение сохранено»
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 17:00:43 +05:00
gorbenko.pavel 5fd8bfe453 fix: заявление на отпуск не уходило в ЭДО, если в маршруте есть исполнитель
Отправка срабатывала только на статус «Согласовано», а при исполнителе в маршруте последний
согласующий переводит заявку сразу в «Выполнение» — запрос в ЭДО не шёл вообще. Теперь отправка
срабатывает на решение, завершившее фазу согласования (isApprovalPhaseCompleted: «На согласовании»
→ «Согласовано»/«Выполнение»/«Закрыта»); решение исполнителя повторно её не запускает.

В зелёное сообщение «Решение сохранено» дописывается «Документы отправлены на подписание в ЭДО…»
(onDecided панели решения может вернуть строку).

Заодно пять чужих предупреждений линтера: eqeqeq в SubmitActions, явные типы возврата
в approverOrgInfo и useSkudRoute, зависимость эффекта в ServiceRequestView, null → undefined
в ячейках календаря СКУД.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 16:39:06 +05:00
gorbenko.pavel cce4dfa4b3 feat: справочник компаний кэшируется в localStorage на 4 часа
Раньше он жил только пока открыта страница и загружался заново при каждой перезагрузке.
Теперь между перезагрузками API не дёргается 4 часа; просроченный, битый или записанный
«из будущего» кэш игнорируется и удаляется, недоступное хранилище кэш не ломает.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 14:59:12 +05:00
gorbenko.pavel 7f5f59fc81 feat: заявление на отпуск — по файлу на каждую компанию совместителя одним запросом в ЭДО
Сотрудник заполняет заявку один раз, а в ЭДО уходит по документу на каждую компанию, где он
работает: своя шапка (компания, должность) и свой БИН в массиве file_company_bins. Подписант один —
сам сотрудник, от имени физлица. Запрос один на все файлы: принимается целиком или отклоняется
целиком, повтор безопасен. Компания без БИН в справочнике пропускается и показывается в сообщении.

Удалять согласующих при составлении может редактор маршрута (во всех формах, не только в трёх).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 14:48:33 +05:00
gorbenko.pavel 8cdee83496 fix: таблица организаций без дублирующей подписи «Организация»
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 14:00:23 +05:00
gorbenko.pavel 9e6c56c2e7 fix: у редактируемых исполнителей не было кнопки удаления
Матрица рисует корзину только при заданном canRemoveRow — для исполнителей его не передали.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 13:59:32 +05:00
gorbenko.pavel 58e4d3c868 feat: отпуск — должность и подразделение из справочника, таблица организаций с подразделением
Убраны редактируемые поля «Должность» и «Подразделение». Должность и подразделение
подтягиваются из Employee/ByEmail и показываются таблицей «Организация · Должность ·
Подразделение» — своё подразделение на каждую организацию. В скалярные колонки
Position/Department/DepartmentId пишется основная (первая) запись — их читают документ и ЭДО.
Должность больше не обязательное поле формы.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 13:56:59 +05:00
gorbenko.pavel 2009535f1a fix: поиск сотрудника не находил, если после имени или фамилии стоит пробел
PeoplePicker шлёт введённый текст в SharePoint как есть. Теперь в запросе поиска
пробелы по краям обрезаются, а двойные внутри схлопываются.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 13:50:57 +05:00
gorbenko.pavel d2d2f9f647 feat: редакторы маршрута добавляют и удаляют исполнителей при составлении заявки
canEditExecutors: те же люди, что в canEditRoute (в т.ч. gorbenko.pavel), могут править
матрицу «Исполнение» во всех формах с фазой исполнения; блок виден им и пустым.
Остальным исполнители по-прежнему только для чтения. Реестр особых прав обновлён.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 13:41:45 +05:00
gorbenko.pavel 3337aeda6c feat: таблица исполнителей во всех формах — при заполнении и просмотре, если они есть в маршруте
Общие useFormExecutors/useViewExecutors и ExecutorsMatrix вместо копирования
в каждой форме. Подключены в формах без фазы исполнения: ConcreteRequest,
Dismissal, EmployeeTransfer, ServiceRequest, Ticket1C, UnpaidLeave, Vacation.
Исполнители теперь пишутся в маршрут при подаче; таблица согласующих
грузит только фазу согласования, чтобы не смешиваться с исполнением.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 12:58:34 +05:00
Тимур Городецкий 4c8410bdcc feat: этап исполнения в заявке 1С (исполнитель из маршрута + Planner)
Tests / frontend-test (push) Successful in 1m20s
В маршруте №8 есть шаг «Исполнение», но форма 1С запрашивала только
согласование и записывала пустой список исполнителей: после согласования
заявка навсегда оставалась «Согласовано», без исполнителя и даты исполнения.
Теперь исполнитель берётся из маршрута с теми же условиями, заявка идёт
«Выполнение» → «Закрыта», а карточка Planner создаётся при переходе в
исполнение (в т.ч. сразу при отправке, если согласование не требуется).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 10:09:04 +05:00
Тимур Городецкий 4c851b4892 fix: объявление в Teams видно и во вкладке-сайте SharePoint
Tests / frontend-test (push) Successful in 1m19s
Если в Teams закреплена обычная страница SharePoint, SPFx не передаёт
веб-части Teams-контекст, и объявление «открывайте в браузере» не
показывалось. Теперь Teams определяется ещё по фрейму и User-Agent.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 09:43:20 +05:00
Тимур Городецкий 1e316a9558 feat: объявление в Teams — открывать портал в браузере
В приложении Teams часть функций портала работает ограниченно. На главной
в Teams теперь показывается объявление со ссылкой на страницу портала,
которая открывается во внешнем браузере. В браузере объявление не показывается.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 09:34:51 +05:00
Тимур Городецкий c91d2dbc04 fix: дата подачи — день отправки, а не сохранения черновика
В подборе и реферале черновик хранил дату первого сохранения, и через
несколько дней заявка уходила на согласование со старой датой подачи.
Теперь при отправке дата подачи всегда сегодняшняя, а открытый черновик
сразу показывает сегодня (как уже было в объяснительной по СКУД). В реферале
дату больше нельзя поправить руками. Общая логика — shared/submitDate.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 09:34:51 +05:00
gorbenko.pavel 80caa59301 feat: удалять согласующих при составлении заявки во всех формах — для редакторов маршрута
Редактор маршрута (canEditRoute) теперь может удалить любого согласующего при подаче или
правке заявки во всех формах с маршрутом согласования, а не только в трёх рекрутинговых.
В список редакторов добавлен Павел Горбенко. Реестр особых прав обновлён.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 17:08:06 +05:00
gorbenko.pavel bed190835e feat: заявление на отпуск уходит на подпись в ЭДО после финального согласования
Когда последний согласующий согласовывает заявку на отпуск, заявление собирается в браузере
как DOCX и отправляется в ЭДО (POST /api/v1/integration/signing-requests). Подписывает сотрудник
из заявки, его же почта передаётся как initiator_email. ИИН берётся из Employee/ByEmail,
БИН компании — из Dictionary/Companies. Неудача отправки не отменяет согласование и
показывается сообщением с кнопкой повтора.

Свойство веб-части «С каким ЭДО работать»: стейдж (https://10.0.1.225:8443) или локальный
бэкенд (https://localhost:7016). jszip объявлен зависимостью явно (раньше был транзитивным).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 16:46:43 +05:00
Тимур Городецкий 5702939b52 feat: подсветка незаполненных полей и переход к ним в приёме и подборе
Пользователи не понимали, почему кнопка «Отправить на согласование» серая.
Теперь в заявках на приём и подбор кнопки активны: нажатие при незаполненных
или неверных полях ничего не сохраняет, а подсвечивает эти поля с подсказкой
под ними и прокручивает к первому. Над кнопками — список проблем, пункты ведут
к полю. Механизм общий (FieldIssuesProvider + FormField), остальные формы
пока работают по-старому и переводятся по тому же паттерну.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 17:15:16 +05:00
Тимур Городецкий c95118a216 feat: тип приёма «Вместо переведенного сотрудника» 2026-09-30 12:03:20 +05:00
Тимур Городецкий 4f292dde3d feat: печатный вид объяснительной по СКУД с маршрутом согласования
Tests / frontend-test (push) Successful in 1m21s
Вместо линии для подписи под запиской печатается маршрут согласования
и исполнения. Документ больше не вылезает за карточку (box-sizing), а текст
причины «Другое» получает точку, чтобы следующая фраза к нему не прилипала.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 09:56:35 +05:00
Тимур Городецкий a05a336275 fix: пустой квадратик под ФИО на печати
В окне печати у выбранного в PeoplePicker человека оставалась голая кнопка «×»
(иконки скрыты, стилей Fluent там нет). На печати она не нужна — скрываем.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 09:56:35 +05:00
Тимур Городецкий ff7d1f26a7 fix: причины в объяснительной по СКУД
Убрана причина «Забыл(а) пропуск», неисправность турникета/считывателя
обобщена до «Неисправность СКУД» — так просит отдел кадров.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 09:56:35 +05:00
Тимур Городецкий 7e9848e83d feat: форма «Объяснительная по СКУД»
Tests / frontend-test (push) Successful in 1m17s
Сотрудник пишет объяснительную за дни без отметок СКУД, выбирая их кликом
в календаре «Мой СКУД» (перенесён из portal-main-page: те же цвета и
правила, проходы Hikvision текущего пользователя, праздники из
«Производственного календаря»). Текст записки собирается автоматически,
в просмотре печатается бланк объяснительной.

- выбираются прошедшие дни < 8 ч, с одной записью или без отметок и
  сегодня без отметок; только текущий и прошлый месяц;
- дни сохраняются снимком (JSON), т.к. согласующий чужой СКУД не видит;
- защита от повторов: дни из уже поданных объяснительных помечены ✓ и
  не выбираются, перед отправкой список перечитывается;
- маршрут в две фазы: согласование + исполнение (кадры);
- дата подачи ставится автоматически.

Плитка пока только для тестировщиков (comingSoon): списки SP
провизионированы, тип и маршрут заведены, осталась проверка e2e.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 17:27:46 +05:00
Тимур Городецкий 1dda76caae test: разбор автора вынесен в модуль без SharePoint
Тест parseAuthorOwsUser падал: он импортировал myRequests.service, а тот
тянет PnPjs (ESM), который Jest проекта не разбирает. Функция вынесена в
parseAuthorOwsUser.ts без SharePoint-импортов, сервис берёт её оттуда.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:55:40 +05:00
Тимур Городецкий 182c497139 fix: служебный хвост в ФИО автора и исполнителя
Поисковое свойство AuthorOWSUSER хранит «почта | ФИО | служебный id и
claims-логин», а parseAuthorOwsUser брал как ФИО всё после первого
разделителя. Пока ФИО бралось из свойства Author, это было не видно;
после 13ba9c9 (ФИО из AuthorOWSUSER) хвост вылез в колонках «Автор» и
«Исполнитель». Теперь ФИО — ровно вторая часть строки.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:51:57 +05:00
Тимур Городецкий b12fcd0939 chore: скрипт проверки индексов в списках согласования
Только чтение: по каждому списку «… — согласование» показывает число
строк и проиндексированы ли Ticket, ApprovalStatus и TansuSiteApprover —
без индекса фильтр по колонке в списке больше 5000 строк падает.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:42:42 +05:00
Тимур Городецкий e9702a53d4 feat: «Скачать все» для вложений заявки
Над списком вложений (от двух файлов) — кнопка «Скачать все»: файлы
скачиваются по очереди, без архива, через download.aspx SharePoint, чтобы
PDF и картинки не открывались в просмотре. Обёртка над AttachmentList
из ui-kit подменена в shared/ui, поэтому кнопка появилась во всех формах
и карточках без правок в них; в чате выключена.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:42:42 +05:00
Тимур Городецкий ab3593c170 feat: история согласования по кнопке в строке таблиц заявок
В каждой строке таблиц заявок — кнопка «История согласования»: окно с
той же лентой, что в карточке, без открытия самой заявки. Колонка
действий теперь есть всегда (история у всех строк, корзина — у своих
черновиков).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:42:42 +05:00
Тимур Городецкий 153c966f0b feat: история согласования — маршрут пересохраняется патчем
При доработке и повторной отправке writeRoute раньше удалял все строки
маршрута и создавал заново — кто вернул или отклонил заявку и с каким
комментарием, терялось. Теперь маршрут пересохраняется патчем
(planRoutePatch + ApprovalListService.patchSteps): строки, что остаются в
маршруте, обновляются на месте, и их прошлые решения лежат в истории
версий; недостающие шаги создаются, выпавшие и строки делегатов уходят в
корзину. Всё одним пакетом. Проверено пилотами на увольнении и рабочем
месте (обе фазы, уход в корзину). Аварийный откат для всех форм —
ROUTE_PATCH_ENABLED = false.

Из версий строк маршрута и заявки собирается лента «История
согласования» (shared/approval/history): отправки, решения с
комментариями и временем на шаге, делегирование, замена исполнителя,
у кого заявка сейчас. Свёрнутый раздел в карточке и в форме доработки
всех форм, грузится только при раскрытии.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:42:42 +05:00
Тимур Городецкий 5b1e94bf42 feat: подсказка о недопустимой дате увольнения
Если последний рабочий день раньше, чем через месяц от сегодня, под полем
показывается причина и минимальная дата. Раньше кнопки отправки просто
становились неактивными без объяснения — это случалось у заявлений,
пролежавших на доработке: дата, допустимая при подаче, переставала
подходить. Правило и текст вынесены в lastWorkingDay.ts и общие для
подсказки и проверки перед отправкой.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:42:13 +05:00
Тимур Городецкий 7ad5f79cdf style: поле «Организация» в заявке на рабочее место
Подпись «Организация заявителя» заменена на «Организация» — в форме,
в подсказке незаполненных полей и в манифесте колонки (как у остальных
форм; на существующую колонку SharePoint манифест не влияет).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:41:40 +05:00
Тимур Городецкий 27b3c8de2a fix: новый шаг в матрице не копирует решение согласующего
После возврата заявки с одним согласующим каждый добавленный на доработке
шаг показывался «Возвращена на доработку»: statusForNewRow копировал общий
статус строк. Решения (согласовано/возвращено/отклонено/выполнено) больше
не копируются — новый шаг показывается с «—». В SharePoint это не
попадало: writeRoute и раньше писал всем строкам «Ждёт очереди».

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:41:25 +05:00
Тимур Городецкий b82008943f style: иконка «Все заявки» — список вместо людей
Tests / frontend-test (push) Successful in 1m20s
Иконка людей совпадала с иконкой категории «Отдел рекрутинга» и плитки
«Заявка на прием» и не говорила, что за кнопкой список заявок. Заменена
на menu на плитке, на кнопке формы и в боковом меню.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:29:29 +05:00
Тимур Городецкий e3f4bcf9bd docs: реестр особых прав портала
Все места, где права выданы сверх обычных (по email, должности, группе
SharePoint или в админке approval-route), собраны в одну таблицу с
файлами проверок — чтобы не потерять их при переезде на группы
SharePoint или смене сотрудника. Ссылка добавлена в docs/forms.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:29:29 +05:00
Тимур Городецкий 1b1a783c98 fix: поиск сотрудника в маршруте без учёта регистра
Фильтр SharePoint substringof по Title пользователей сайта для кириллицы
чувствителен к регистру: «тимур» не находил «Тимур Городецкий». Теперь
ищутся сразу несколько написаний (как введено, строчными, с заглавной
каждого слова) и по email. Касается всех полей выбора сотрудника в
маршруте: делегирование, добавление согласующего, замена исполнителя.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:29:29 +05:00
Тимур Городецкий 247f614885 feat: замена и удаление исполнителей в заявке на подбор
Начальник отдела подбора (routeEditRights) назначает исполнителей, но
сама в исполнении не стоит. В матрице «Исполнение» заявки на подбор у
шагов «Ждёт очереди» и «На исполнении» появились кнопки «Заменить» и
«Удалить»:
- замена меняет только человека в шаге, активный шаг сразу переходит
  к новому исполнителю, ему уходит оповещение;
- при удалении активного очередь переходит к следующему исполнителю;
- выполненные шаги не трогаются, последнего невыполненного исполнителя
  можно только заменить — иначе заявка закрылась бы без исполнения.

Остальные формы не затронуты: кнопки включаются пропсами ApprovalMatrix
(canReplaceRow/onReplaceRow) только в RecruitingSelectionView.
notifyActiveStep получил необязательный rowId, чтобы на параллельном
шаге письмо ушло именно новому исполнителю.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:29:15 +05:00
Тимур Городецкий be8177e8ae feat: столбец «Исполнитель» в таблицах заявок
Показывает, у кого заявка сейчас: ФИО и почта согласующего или
исполнителя текущего шага (несколько — параллельный шаг, при
делегировании — делегат), при доработке — инициатор. Есть в
«Инициированных», «Согласованных», «Выполненных мной» и «Все заявки»;
в очередях и «Доработке» держатель всегда сам пользователь.

Дочитывается только для видимой страницы, одним запросом на список
согласования. Группировка по партициям вынесена в approvalPartitionsFor
и общая с комментарием к решению.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:28:48 +05:00
Тимур Городецкий 13ba9c9e37 fix: в колонке «Автор» только создатель заявки
В «Все заявки», «Моих заявках» и «Поиске» ФИО бралось из поискового
свойства Author, где SharePoint перечисляет через «;» всех, кто правил
элемент. У заявки, которую поправил согласующий, в «Авторе» оказывалось
«Инициатор;Согласующий». Теперь ФИО берётся из AuthorOWSUSER — того же
поля «Создано», откуда и почта.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:28:37 +05:00
Тимур Городецкий d749bfae26 feat: фильтры и сортировка в таблицах заявок
Tests / frontend-test (push) Successful in 1m16s
Во всех разделах со списками заявок (На согласовании, На исполнении,
Доработка, Мои заявки, Все заявки):
- фильтры по типу, статусу и периоду даты создания, кнопка «Сбросить»;
- сортировка по клику на заголовок: номер (по числам), тип, дата, статус.

Без фильтров загрузка прежняя, постраничная. При активном фильтре или
сортировке загружается полный список раздела и обрабатывается в памяти,
иначе отсортировалась бы только текущая страница.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 14:45:02 +05:00
Тимур Городецкий fa27e8d918 feat: названия заявок на подбор и приём без префикса типа
Тип заявки и так виден в колонке «Тип», префикс в названии только
удлинял его:
- подбор: «Должность — Проект»;
- приём: «ФИО — Должность — Проект».
Уже созданные заявки сохраняют старое название до пересохранения.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 14:45:01 +05:00
Тимур Городецкий bfe0b95f26 fix: в «Моих заявках» только заявки с сайта портала
Tests / frontend-test (push) Successful in 1m13s
2026-09-28 11:27:30 +05:00
Тимур Городецкий 36922af942 fix: в «Моих заявках» исключены типы заявок с чужих сайтов (ct-forms-portal /sites/sed)
Tests / frontend-test (push) Successful in 1m15s
2026-09-28 09:53:29 +05:00