Commit Graph

9 Commits

Author SHA1 Message Date
m.trishina 6efca59d4b Initial fixes (#1)
build-and-deploy / prepare (push) Successful in 2s
Tests / frontend-test (push) Successful in 13s
build-and-deploy / build-and-push (., Dockerfile, hr-appeals-web) (push) Successful in 18s
build-and-deploy / build-and-push (server, server/Dockerfile, hr-appeals-auth) (push) Successful in 9s
build-and-deploy / deploy (push) Successful in 7s
Co-authored-by: Mariya Trishina <trishina.mariya@tnsu.kz>
Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/hr-appeals/pulls/1
2026-08-21 12:13:37 +00:00
gorbenko.pavel 836a472fe0 fix: делает "Предложение" видом обращения по умолчанию
Tests / frontend-test (push) Successful in 12s
Порядок вариантов синхронизирован с новым дефолтом и восстановлен как в
исходной форме: "Предложение" первым в списке, а не "Жалоба".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 12:16:41 +05:00
gorbenko.pavel ebadf795e8 fix: убирает сворачиваемые секции формы
Tests / frontend-test (push) Successful in 3m40s
CollapseSection превращал заголовки "Кто обращается" / "Суть обращения" в
кнопки — по клику секция пряталась целиком, вместе с обязательными полями.
Легко было свернуть случайно и не заметить, что часть формы больше не видна
(и не отправляется). Заменены на обычные div с отступом: контент всегда
на экране, сворачивать нечего.

Один из двух известных факторов, из-за которых форма на мобильном "теряла"
часть контента (второй — фикс на 100dvh, отдельным коммитом): свёрнутая
секция резко уменьшала высоту страницы, из-за чего казалось, что скролл
пропал и форма "не двигается вниз".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:43:18 +05:00
gorbenko.pavel 7809741299 fix: добавляет 100dvh для корректной высоты страницы на мобильных
vh на мобильных браузерах считается от максимальной высоты экрана (без
адресной строки/клавиатуры), из-за чего высота, заданная в CSS, может не
совпадать с реально видимой областью. dvh считается от текущей видимой
высоты — правится вслед за появлением клавиатуры или сворачиванием адресной
строки. Оставлен как дополнение к vh, а не замена: браузеры без поддержки dvh
просто проигнорируют вторую строку.

Пока не подтверждённая, но вероятная причина репортнутого "скролл пропал,
форма не двигается вниз" на мобильном — само по себе это исправление
безопасно независимо от того, окажется ли оно достаточным.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:43:02 +05:00
gorbenko.pavel 3cf46fa55c test: добавляет Vitest и CI-workflow по образцу request-portal
Покрыты чистые функции бизнес-логики: validateFeedback (обязательность полей
по видам обращения, минимальная длина текста, анонимность) и
getAppealFieldsConfig (согласованность конфига — обязательное поле не может
быть скрыто). React-компоненты пока не тестируются: сначала нужно решить,
куда форма отправляет данные, иначе тесты придётся сразу переписывать.

vite.config.ts: defineConfig теперь из 'vitest/config' — один файл конфига
на сборку и тесты вместо двух рассинхронизирующихся. globals: true и
environment: 'node', т.к. тестируется логика, а не DOM.

.gitea/workflows/test.yml — тот же принцип, что в request-portal (push в
main, PR, ретраи npm install), но npm run ci вместо heft test: здесь нет
SPFx/Jest, и деплой пока не добавлен — куда разворачивать dist/, не решено.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 09:45:05 +05:00
gorbenko.pavel 05cd491769 fix: делает "Предложение по улучшению" необязательным для жалобы, убирает дубль заголовка
Каждый вид обращения раньше показывал одинаковый набор обязательных полей.
getAppealFieldsConfig теперь описывает и видимость, и обязательность отдельно:
жалоба — предложение по-прежнему можно оставить, но требовать его как для
самостоятельного вида "Предложение" неверно. validateFeedback читает то же
правило, что и форма, — иначе одно поле могло бы требовать то, что другое
не показывает.

FormCard в FeedbackForm дублировал заголовок и подзаголовок PageShell — убран
(пустой title у ui-kit не создаёт строки, гэпа не остаётся).

Подсказка у переключателя "Обращение анонимное" разбита на две сноски (* и **),
как в исходной форме, а не слитный абзац.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 09:44:48 +05:00
gorbenko.pavel 51339b3f9a appeals 2026-08-20 18:29:27 +05:00
gorbenko.pavel 010f78b138 feat: форма обращения сотрудника в HR департамент
Переносит вопросы из Microsoft Forms в собственный интерфейс: компания,
анонимность, ФИО и должность, вид обращения, описание ситуации и предложение.

Поля автора скрываются при анонимном обращении, а не блокируются: требовать ФИО
у анонима — противоречие, а серое неактивное поле выглядит как ошибка формы.

Состояние целиком в useFeedbackForm, правила заполнения — в отдельной чистой
функции validateFeedback: её можно покрыть тестами без React.

Отправки пока нет — по договорённости делаем только UI, submit пишет данные в
консоль (TODO в useFeedbackForm).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 18:15:10 +05:00
gorbenko.pavel e921062e3b chore: каркас проекта на Vite + React + TypeScript
Основа для формы обращений в HR взамен встроенной Microsoft Forms.

React зафиксирован на 17: этого требует @tnsu/ui-kit в peerDependencies.
Дизайн-токены скопированы из request-portal, чтобы формы компании выглядели
одинаково; подключаются явным @use в каждом SCSS-модуле, как там же.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 18:14:54 +05:00