fix: примечание СБ в заявке на приём — необязательное
По просьбе заказчика примечание при отметке «Согласован СБ» больше не требуется для отправки: поле по-прежнему появляется только при отметке, но его можно оставить пустым. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -86,7 +86,7 @@ export interface IFormData {
|
|||||||
AgencyName: string;
|
AgencyName: string;
|
||||||
AgencyTerms: string;
|
AgencyTerms: string;
|
||||||
// Служба безопасности: инициатор при подаче отмечает, что кандидат согласован
|
// Служба безопасности: инициатор при подаче отмечает, что кандидат согласован
|
||||||
// с СБ; при отметке обязательно примечание (см. validation.ts). Информационное —
|
// с СБ; примечание при отметке — по желанию. Информационное —
|
||||||
// на маршрут и решения не влияет.
|
// на маршрут и решения не влияет.
|
||||||
HireSecurityApproved: boolean;
|
HireSecurityApproved: boolean;
|
||||||
HireSecurityNote: string;
|
HireSecurityNote: string;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { ISectionProps } from '../model';
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 6. Служба безопасности: инициатор отмечает, что кандидат согласован с СБ, и
|
* 6. Служба безопасности: инициатор отмечает, что кандидат согласован с СБ, и
|
||||||
* тогда обязательно пишет примечание (см. validation.ts). Поле информационное —
|
* при желании пишет примечание (необязательно). Поле информационное —
|
||||||
* на маршрут и решения согласующих не влияет. При снятии отметки примечание
|
* на маршрут и решения согласующих не влияет. При снятии отметки примечание
|
||||||
* очищается, чтобы в заявку не ушёл текст скрытого поля (как в AgencySection).
|
* очищается, чтобы в заявку не ушёл текст скрытого поля (как в AgencySection).
|
||||||
*/
|
*/
|
||||||
@@ -20,7 +20,7 @@ export const SecuritySection: React.FC<ISectionProps> = ({ data, set }) => {
|
|||||||
<Toggle checked={data.HireSecurityApproved} onChange={handleToggle} onLabel="Да" />
|
<Toggle checked={data.HireSecurityApproved} onChange={handleToggle} onLabel="Да" />
|
||||||
</FormField>
|
</FormField>
|
||||||
{data.HireSecurityApproved && (
|
{data.HireSecurityApproved && (
|
||||||
<FormField label="6.2 Примечание СБ" htmlFor="HireSecurityNote" required full>
|
<FormField label="6.2 Примечание СБ" htmlFor="HireSecurityNote" full>
|
||||||
<TextArea
|
<TextArea
|
||||||
id="HireSecurityNote"
|
id="HireSecurityNote"
|
||||||
value={data.HireSecurityNote}
|
value={data.HireSecurityNote}
|
||||||
|
|||||||
@@ -38,13 +38,8 @@ describe('RecruitingHire validation', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('«Согласован СБ» требует примечание СБ, без отметки — не требует', () => {
|
it('примечание СБ необязательно, даже при отметке «Согласован СБ»', () => {
|
||||||
expect(labels(submitIssues(DRAFT_READY))).not.toContain('6.2 Примечание СБ');
|
expect(labels(submitIssues({ ...DRAFT_READY, HireSecurityApproved: true }))).not.toContain('6.2 Примечание СБ');
|
||||||
expect(labels(submitIssues({ ...DRAFT_READY, HireSecurityApproved: true }))).toContain('6.2 Примечание СБ');
|
|
||||||
expect(
|
|
||||||
labels(submitIssues({ ...DRAFT_READY, HireSecurityApproved: true, HireSecurityNote: 'Проверка пройдена' }))
|
|
||||||
).not.toContain('6.2 Примечание СБ');
|
|
||||||
// Черновик без примечания сохранить можно.
|
|
||||||
expect(draftIssues({ ...DRAFT_READY, HireSecurityApproved: true })).toEqual([]);
|
expect(draftIssues({ ...DRAFT_READY, HireSecurityApproved: true })).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ interface IRequiredRule extends IFieldIssue {
|
|||||||
* агентство» не проверяется — у булевых нет пустого состояния.
|
* агентство» не проверяется — у булевых нет пустого состояния.
|
||||||
* 2.2 «Дата приёма» не нужна, если отмечено «По приезду на объект»
|
* 2.2 «Дата приёма» не нужна, если отмечено «По приезду на объект»
|
||||||
* (HireOnArrival) — тогда дату проставляет исполнитель на своём шаге.
|
* (HireOnArrival) — тогда дату проставляет исполнитель на своём шаге.
|
||||||
* 6.2 «Примечание СБ» обязательно только при отметке 6.1 «Согласован СБ».
|
* 6.2 «Примечание СБ» необязательно (по просьбе заказчика) — даже при отметке 6.1.
|
||||||
*
|
*
|
||||||
* 1.3 «Проект» — хотя бы один проект из справочника: первый уходит в resolve
|
* 1.3 «Проект» — хотя бы один проект из справочника: первый уходит в resolve
|
||||||
* маршрута (projectId), а без него approval-route отвечал 404 и заявка ушла бы
|
* маршрута (projectId), а без него approval-route отвечал 404 и заявка ушла бы
|
||||||
@@ -49,13 +49,7 @@ const REQUIRED_RULES: ReadonlyArray<IRequiredRule> = [
|
|||||||
{ field: 'ProbationPeriod', label: '4.1 Испытательный срок', ok: (d) => !!d.ProbationPeriod },
|
{ field: 'ProbationPeriod', label: '4.1 Испытательный срок', ok: (d) => !!d.ProbationPeriod },
|
||||||
{ field: 'SalaryProbation', label: '4.2 Оклад при испытательном сроке', ok: (d) => !!d.SalaryProbation.trim() },
|
{ field: 'SalaryProbation', label: '4.2 Оклад при испытательном сроке', ok: (d) => !!d.SalaryProbation.trim() },
|
||||||
{ field: 'SalaryAfterProbation', label: '4.3 Оклад по завершении ИС', ok: (d) => !!d.SalaryAfterProbation.trim() },
|
{ field: 'SalaryAfterProbation', label: '4.3 Оклад по завершении ИС', ok: (d) => !!d.SalaryAfterProbation.trim() },
|
||||||
{ field: 'WorkSchedule', label: '4.4 График работы', ok: (d) => !!d.WorkSchedule },
|
{ field: 'WorkSchedule', label: '4.4 График работы', ok: (d) => !!d.WorkSchedule }
|
||||||
{
|
|
||||||
field: 'HireSecurityNote',
|
|
||||||
label: '6.2 Примечание СБ',
|
|
||||||
message: 'отмечено «Согласован СБ» — укажите примечание',
|
|
||||||
ok: (d) => !d.HireSecurityApproved || !!d.HireSecurityNote.trim()
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
|
||||||
function toIssue({ field, label, message }: IRequiredRule): IFieldIssue {
|
function toIssue({ field, label, message }: IRequiredRule): IFieldIssue {
|
||||||
|
|||||||
Reference in New Issue
Block a user