fix: правки форм рекрутинга (заявка на подбор, реферальная рекомендация)
Tests / frontend-test (push) Successful in 1m12s

- убраны поля «Премии» и «Бонусы» из заявки на подбор
- разделы и поля формы «Реферальная рекомендация» пронумерованы
This commit is contained in:
Тимур Городецкий
2026-09-17 09:55:20 +05:00
parent 6f8bea33a2
commit 070c3ad752
7 changed files with 36 additions and 55 deletions
@@ -64,8 +64,6 @@ export interface IFormData {
// Условия работы
RateProbation: string;
RateAfterProbation: string;
Awards: string;
Bonuses: string;
PieceworkPay: boolean;
WorkSchedule: string;
WorkScheduleOther: string;
@@ -126,8 +124,6 @@ export const EMPTY_DATA: IFormData = {
BusinessTripsDetailsOther: '',
RateProbation: '',
RateAfterProbation: '',
Awards: '',
Bonuses: '',
PieceworkPay: false,
WorkSchedule: '',
WorkScheduleOther: '',
@@ -3,7 +3,6 @@ import {
CollapseSection,
FormField,
TextInput,
TextArea,
MoneyInput,
Toggle,
Select,
@@ -40,28 +39,14 @@ export const ConditionsSection: React.FC<ISectionProps> = ({
onChange={(v) => set("RateAfterProbation", v)}
/>
</FormField>
<FormField label="5.3 Премии" htmlFor="Awards" full>
<TextArea
id="Awards"
value={data.Awards}
onChange={(v) => set("Awards", v)}
/>
</FormField>
<FormField label="5.4 Бонусы" htmlFor="Bonuses" full>
<TextArea
id="Bonuses"
value={data.Bonuses}
onChange={(v) => set("Bonuses", v)}
/>
</FormField>
<FormField label="5.5 Сдельная оплата труда">
<FormField label="5.3 Сдельная оплата труда">
<Toggle
checked={data.PieceworkPay}
onChange={(v) => set("PieceworkPay", v)}
onLabel="Да"
/>
</FormField>
<FormField label="5.6 График работы" htmlFor="WorkSchedule">
<FormField label="5.4 График работы" htmlFor="WorkSchedule">
<Select
id="WorkSchedule"
value={data.WorkSchedule}
@@ -82,7 +67,7 @@ export const ConditionsSection: React.FC<ISectionProps> = ({
/>
</FormField>
)}
<FormField label="5.7 Время работы" htmlFor="WorkHours">
<FormField label="5.5 Время работы" htmlFor="WorkHours">
<Select
id="WorkHours"
value={data.WorkHours}
@@ -103,14 +88,14 @@ export const ConditionsSection: React.FC<ISectionProps> = ({
/>
</FormField>
)}
<FormField label="5.8 Материальная ответственность (строительные площадки, склады)">
<FormField label="5.6 Материальная ответственность (строительные площадки, склады)">
<Toggle
checked={data.MaterialResponsibility}
onChange={(v) => set("MaterialResponsibility", v)}
onLabel="Да"
/>
</FormField>
<FormField label="5.9 Обеспечение рабочего места" full>
<FormField label="5.7 Обеспечение рабочего места" full>
<MultiChoiceField
value={data.WorkplaceProvision}
onChange={(v) => set("WorkplaceProvision", v)}
@@ -119,14 +104,14 @@ export const ConditionsSection: React.FC<ISectionProps> = ({
placeholder="Выберите категорию"
/>
</FormField>
<FormField label="5.10 Охватывается реферальной программой">
<FormField label="5.8 Охватывается реферальной программой">
<Toggle
checked={data.ReferralProgram}
onChange={(v) => set("ReferralProgram", v)}
onLabel="Да"
/>
</FormField>
<FormField label="5.11 Предполагаемый наставник">
<FormField label="5.9 Предполагаемый наставник">
<PeopleField
context={context}
value={data.ProposedMentor}
@@ -134,7 +119,7 @@ export const ConditionsSection: React.FC<ISectionProps> = ({
placeholder={PERSON_PLACEHOLDER}
/>
</FormField>
<FormField label="5.12 Непосредственный руководитель">
<FormField label="5.10 Непосредственный руководитель">
<PeopleField
context={context}
value={data.DirectManager}
@@ -142,7 +127,7 @@ export const ConditionsSection: React.FC<ISectionProps> = ({
placeholder={PERSON_PLACEHOLDER}
/>
</FormField>
<FormField label="5.13 Кто принимает решение о приеме (собеседования)" full>
<FormField label="5.11 Кто принимает решение о приеме (собеседования)" full>
<PeopleFieldMulti
context={context}
value={data.HiringDecisionMaker}
@@ -4,14 +4,14 @@ import { ISectionProps, SHIFT_WORK_OPTIONS } from '../model';
/** Секция 5: субъективная оценка рекомендателя — сильные стороны, риски, условия. */
export const AssessmentSection: React.FC<ISectionProps> = ({ data, set }) => (
<CollapseSection title="Оценка рекомендателя" icon="clipboard">
<FormField label="Почему рекомендуете этого кандидата (сильные стороны)" htmlFor="Strengths" required full>
<CollapseSection title="5. Оценка рекомендателя" icon="clipboard">
<FormField label="5.1 Почему рекомендуете этого кандидата (сильные стороны)" htmlFor="Strengths" required full>
<TextArea id="Strengths" value={data.Strengths} onChange={(v) => set('Strengths', v)} rows={4} />
</FormField>
<FormField label="Есть ли моменты, о которых стоит знать" htmlFor="ConcernsNotes" full>
<FormField label="5.2 Есть ли моменты, о которых стоит знать" htmlFor="ConcernsNotes" full>
<TextArea id="ConcernsNotes" value={data.ConcernsNotes} onChange={(v) => set('ConcernsNotes', v)} rows={3} />
</FormField>
<FormField label="Готов ли кандидат к вахтовому графику" htmlFor="ReadyForShiftWork">
<FormField label="5.3 Готов ли кандидат к вахтовому графику" htmlFor="ReadyForShiftWork">
<Select
id="ReadyForShiftWork"
value={data.ReadyForShiftWork}
@@ -20,7 +20,7 @@ export const AssessmentSection: React.FC<ISectionProps> = ({ data, set }) => (
placeholder="— выберите —"
/>
</FormField>
<FormField label="Ожидания по заработной плате (если известно)" htmlFor="SalaryExpectations">
<FormField label="5.4 Ожидания по заработной плате (если известно)" htmlFor="SalaryExpectations">
<TextInput
id="SalaryExpectations"
value={data.SalaryExpectations}
@@ -4,28 +4,28 @@ import { ISectionProps, ACQUAINTANCE_SOURCE_OPTIONS, OTHER_VALUE } from '../mode
/** Секция 4: что рекомендатель знает о кандидате — работа, стаж, знакомство. */
export const CandidateInfoSection: React.FC<ISectionProps> = ({ data, set }) => (
<CollapseSection title="Информация о кандидате" icon="document">
<FormField label="Текущее место работы" htmlFor="CurrentEmployer">
<CollapseSection title="4. Информация о кандидате" icon="document">
<FormField label="4.1 Текущее место работы" htmlFor="CurrentEmployer">
<TextInput id="CurrentEmployer" value={data.CurrentEmployer} onChange={(v) => set('CurrentEmployer', v)} />
</FormField>
<FormField label="Текущая должность" htmlFor="CurrentPosition">
<FormField label="4.2 Текущая должность" htmlFor="CurrentPosition">
<TextInput id="CurrentPosition" value={data.CurrentPosition} onChange={(v) => set('CurrentPosition', v)} />
</FormField>
<FormField label="Общий стаж по специальности" htmlFor="ExperienceYears">
<FormField label="4.3 Общий стаж по специальности" htmlFor="ExperienceYears">
<TextInput
id="ExperienceYears"
value={data.ExperienceYears}
onChange={(v) => set('ExperienceYears', v)}
/>
</FormField>
<FormField label="Как давно знаете кандидата" htmlFor="AcquaintanceDuration">
<FormField label="4.4 Как давно знаете кандидата" htmlFor="AcquaintanceDuration">
<TextInput
id="AcquaintanceDuration"
value={data.AcquaintanceDuration}
onChange={(v) => set('AcquaintanceDuration', v)}
/>
</FormField>
<FormField label="Откуда знаете" htmlFor="AcquaintanceSource" required>
<FormField label="4.5 Откуда знаете" htmlFor="AcquaintanceSource" required>
<Select
id="AcquaintanceSource"
value={data.AcquaintanceSource}
@@ -7,17 +7,17 @@ import { ISectionProps } from '../model';
* обычные текстовые, а не People (в каталоге тенанта его ещё нет).
*/
export const CandidateSection: React.FC<ISectionProps> = ({ data, set }) => (
<CollapseSection title="Данные кандидата" icon="people">
<FormField label="Ф.И.О. кандидата" htmlFor="CandidateName" required full>
<CollapseSection title="2. Данные кандидата" icon="people">
<FormField label="2.1 Ф.И.О. кандидата" htmlFor="CandidateName" required full>
<TextInput id="CandidateName" value={data.CandidateName} onChange={(v) => set('CandidateName', v)} />
</FormField>
<FormField label="Контактный телефон" htmlFor="CandidatePhone" required>
<FormField label="2.2 Контактный телефон" htmlFor="CandidatePhone" required>
<PhoneInput id="CandidatePhone" value={data.CandidatePhone} onChange={(v) => set('CandidatePhone', v)} />
</FormField>
<FormField label="Email" htmlFor="CandidateEmail">
<FormField label="2.3 Email" htmlFor="CandidateEmail">
<TextInput id="CandidateEmail" value={data.CandidateEmail} onChange={(v) => set('CandidateEmail', v)} />
</FormField>
<FormField label="Город проживания" htmlFor="CandidateCity">
<FormField label="2.4 Город проживания" htmlFor="CandidateCity">
<TextInput id="CandidateCity" value={data.CandidateCity} onChange={(v) => set('CandidateCity', v)} />
</FormField>
</CollapseSection>
@@ -4,11 +4,11 @@ import { ISectionProps, REFERRER_PLACEHOLDER } from '../model';
/** Секция 1: кто рекомендует — дата подачи, сам рекомендатель и его контакты. */
export const ReferrerSection: React.FC<ISectionProps> = ({ data, set, context, onReferrerChange, printOrgIndex }) => (
<CollapseSection title="Рекомендатель" icon="people">
<FormField label="Дата подачи" htmlFor="SubmitDate" required>
<CollapseSection title="1. Рекомендатель" icon="people">
<FormField label="1.1 Дата подачи" htmlFor="SubmitDate" required>
<TextInput id="SubmitDate" type="date" value={data.SubmitDate} onChange={(v) => set('SubmitDate', v)} />
</FormField>
<FormField label="Ф.И.О. рекомендателя" htmlFor="Referrer" required full>
<FormField label="1.2 Ф.И.О. рекомендателя" htmlFor="Referrer" required full>
<PeopleField
context={context}
value={data.Referrer}
@@ -16,14 +16,14 @@ export const ReferrerSection: React.FC<ISectionProps> = ({ data, set, context, o
placeholder={REFERRER_PLACEHOLDER}
/>
</FormField>
<FormField label="Должность рекомендателя" htmlFor="ReferrerPosition" required>
<FormField label="1.3 Должность рекомендателя" htmlFor="ReferrerPosition" required>
<TextInput
id="ReferrerPosition"
value={data.ReferrerPosition}
onChange={(v) => set('ReferrerPosition', v)}
/>
</FormField>
<FormField label="Подразделение / Объект" htmlFor="ReferrerDepartment">
<FormField label="1.4 Подразделение / Объект" htmlFor="ReferrerDepartment">
<TextInput
id="ReferrerDepartment"
value={data.ReferrerDepartment}
@@ -31,8 +31,8 @@ export const ReferrerSection: React.FC<ISectionProps> = ({ data, set, context, o
placeholder="Подставится автоматически по выбранному сотруднику"
/>
</FormField>
<OrganizationField value={data.Organization} printIndex={printOrgIndex} />
<FormField label="Контактный телефон" htmlFor="ReferrerPhone" required>
<OrganizationField value={data.Organization} label="1.5 Организация" printIndex={printOrgIndex} />
<FormField label="1.6 Контактный телефон" htmlFor="ReferrerPhone" required>
<PhoneInput id="ReferrerPhone" value={data.ReferrerPhone} onChange={(v) => set('ReferrerPhone', v)} />
</FormField>
</CollapseSection>
@@ -5,11 +5,11 @@ import { ISectionProps } from '../model';
/** Секция 3: на какую вакансию рекомендуют. */
export const VacancySection: React.FC<ISectionProps> = ({ data, set, context }) => (
<CollapseSection title="На какую вакансию рекомендуете" icon="search">
<FormField label="Название вакансии" htmlFor="VacancyTitle" required full>
<CollapseSection title="3. На какую вакансию рекомендуете" icon="search">
<FormField label="3.1 Название вакансии" htmlFor="VacancyTitle" required full>
<TextInput id="VacancyTitle" value={data.VacancyTitle} onChange={(v) => set('VacancyTitle', v)} />
</FormField>
<FormField label="Организация" htmlFor="VacancyCompanies" full>
<FormField label="3.2 Организация" htmlFor="VacancyCompanies" full>
<CompanyPickerMulti
id="VacancyCompanies"
context={context}
@@ -18,7 +18,7 @@ export const VacancySection: React.FC<ISectionProps> = ({ data, set, context })
placeholder="Начните вводить название организации…"
/>
</FormField>
<FormField label="Подразделение / Проект" htmlFor="VacancyProject" full>
<FormField label="3.3 Подразделение / Проект" htmlFor="VacancyProject" full>
<ProjectPicker
id="VacancyProject"
context={context}