ReferrerDepartment остаётся автозаполняемым из профиля (SPS-Department),
но больше не read-only — как ReferrerPosition, это подстановка-фолбэк,
которую можно поправить вручную. При смене рекомендателя профиль больше
не затирает поле пустым значением, если в новом профиле отдел не указан.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ReferrerDepartment теперь заполняется из SPS-Department при выборе
рекомендателя (approval.getProfileFields — тот же метод, что уже
использует «Обходной лист» для Department), а не вводится вручную.
Поле стало read-only, как Department в Clearance.
VacancyDepartment (подразделение вакансии, куда рекомендуют) не тронут —
это отдельное поле, не связанное с профилем рекомендателя.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Три общих (не привязанных к одной форме) места хардкодили лексику
согласования независимо от того, есть ли реально фаза согласования:
- initialSubmitStatus (shared/approval) — статус заявки при ОТПРАВКЕ
считался «На согласовании» безусловно, даже когда маршрут состоит
только из исполнителей (0 согласующих). Теперь статус зависит от
количества шагов каждой фазы: 0 согласующих + есть исполнители →
сразу «Выполнение»; ни тех, ни других → «Согласовано».
- ApprovalMatrix — подпись «Доп. согласующий, добавил:» у переназначенного
участника была захардкожена; теперь выводится из roleLabel, поэтому у
блока «Исполнение» (roleLabel="Исполнитель") корректно пишет «Доп.
исполнитель».
- DecisionPanel — сообщения после переназначения («Согласующий добавлен
перед вами…», «сейчас рассматривает…») не различали фазу шага; теперь
склоняются по isExecution.
В ReferralForm — единственной форме, где маршрут реально может быть без
согласующих (только исполнитель) — использованы initialSubmitStatus и
локальный noApprovalPhase (matrix.rows.length === 0, подтверждено загрузкой)
для подписи кнопки отправки и текста успеха. Уведомление активного шага
теперь срабатывает и при статусе «Выполнение», не только «На согласовании».
Блок «Маршрут согласования» остаётся видимым и пустым, даже когда шагов
нет — матрица редактируема, заявитель может дописать согласующего вручную.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Форма запрашивала маршрут только для фазы 'Approval' — исполнитель
(фиксированная роль, назначающая реального через переназначение) никогда
не подгружался, и на форме создания был виден только пустой список
согласования.
Добавлены второй loadExecutors/useMatrixEditor (read-only, как у
RecruitingHire) и второй блок ApprovalMatrix «Исполнение» — в форме подачи
и в режиме согласующего. submit.ts теперь пишет executors в writeRoute
вместо пустого массива.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Сотрудник рекомендует внешнего кандидата на вакансию. Пять секций:
рекомендатель, данные кандидата, вакансия, информация о кандидате,
оценка рекомендателя. Есть режим согласующего (ReferralView).
Кандидат — не сотрудник тенанта, поэтому его ФИО/телефон/почта — текстовые
поля, а не People; маршрут согласования резолвится по рекомендателю.
Регистрация: registry, viewRegistry, плитка в data/requests, база имени
списка в listTitles, индекс в docs/forms.md.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Без BOM Windows PowerShell 5.1 читает файл в системной кодировке и
ломает кириллицу в строковых литералах (названия списков, ошибки).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Списки данных и согласования по конвенции остальных форм — колонки под поля
бумажной формы (рекомендатель, кандидат, вакансия, оценка рекомендателя).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>