fix: переименовать вид обращения "Жалоба" в "Обращение"

Обновлены label в KIND_OPTIONS, комментарии и placeholder ФИО в форме.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 11:13:23 +05:00
parent e4678210ab
commit 49bf9b3c4e
4 changed files with 8 additions and 8 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ import { COMPANY_OPTIONS, getAppealFieldsConfig } from './model';
// правило из getAppealFieldsConfig — если оно разойдётся, форма и валидация
// начнут спорить друг с другом. Эти тесты фиксируют контракт правила.
describe('getAppealFieldsConfig', () => {
it('жалоба: описание обязательно, предложение показано, но необязательно', () => {
it('обращение: описание обязательно, предложение показано, но необязательно', () => {
const fields = getAppealFieldsConfig('complaint');
expect(fields.situation).toEqual({ visible: true, required: true });
expect(fields.suggestion).toEqual({ visible: true, required: false });
+2 -2
View File
@@ -43,7 +43,7 @@ export const COMPANY_OPTIONS: ISelectOption[] = [
// значением ниже (EMPTY_FEEDBACK.kind), так что выбор пользователя.
export const KIND_OPTIONS: ISelectOption[] = [
{ value: 'suggestion', label: 'Предложение' },
{ value: 'complaint', label: 'Жалоба' },
{ value: 'complaint', label: 'Обращение' },
{ value: 'other', label: 'Другое' }
];
@@ -61,7 +61,7 @@ export interface IAppealFieldsConfig {
/**
* Состав полей зависит от вида обращения:
* жалоба — обязательно описание, а предложение — на желание автора;
* обращение — обязательно описание, а предложение — на желание автора;
* предложение — только само предложение, «ситуации» ещё нет;
* другое — свободное описание, без предложения.
* Одно правило на форму и на валидацию, чтобы они не разошлись.
+1 -1
View File
@@ -28,7 +28,7 @@ export const TEXTS = {
placeholders: {
company: 'Выберите компанию',
fullName: 'Иванов Иван Иванович',
fullName: 'Нурлан Нурланович Нурланов',
position: 'Например: инженер-проектировщик',
kindOther: 'Свой вариант',
situation: 'Опишите, что произошло: когда, где, кто участвовал',
@@ -6,7 +6,7 @@ const VALID_COMPANY = '9de064a4-44c8-88ef-11ec-8285925d83d2';
const LONG_TEXT = 'Развёрнутое описание, которого достаточно для проверки правила';
const SHORT_TEXT = 'коротко';
/** Полностью заполненное «жалоба»-обращение — стартовая точка для тестов. */
/** Полностью заполненное обращение — стартовая точка для тестов. */
function buildValidComplaint(overrides: Partial<IFeedbackData> = {}): IFeedbackData {
return {
...EMPTY_FEEDBACK,
@@ -61,17 +61,17 @@ describe('validateFeedback: вид обращения "Другое"', () => {
// Состав обязательных полей зависит от вида обращения (см. getAppealFieldsConfig
// в model.ts) — эти тесты фиксируют контракт, чтобы форма и валидация не разошлись.
describe('validateFeedback: обязательность полей по видам обращения', () => {
it('жалоба: описание ситуации обязательно', () => {
it('обращение: описание ситуации обязательно', () => {
const errors = validateFeedback(buildValidComplaint({ situation: '' }));
expect(errors.situation).toBeDefined();
});
it('жалоба: предложение по улучшению НЕ обязательно', () => {
it('обращение: предложение по улучшению НЕ обязательно', () => {
const errors = validateFeedback(buildValidComplaint({ suggestion: '' }));
expect(errors.suggestion).toBeUndefined();
});
it('жалоба: если предложение всё же указано, но слишком коротко — ошибка', () => {
it('обращение: если предложение всё же указано, но слишком коротко — ошибка', () => {
const errors = validateFeedback(buildValidComplaint({ suggestion: SHORT_TEXT }));
expect(errors.suggestion).toBeDefined();
});