Commit Graph

4 Commits

Author SHA1 Message Date
gorbenko.pavel f1caa62f28 refactor: сертификат и ключ в каталоге secrets/, один параметр на каталог
Tests / frontend-test (pull_request) Successful in 3m14s
Локально путь к сертификату вёл в ~/Downloads у каждого свой, а в контейнере
задавался двумя отдельными переменными. Теперь каталог один и подменяется
целиком через SECRETS_DIR: по умолчанию secrets/ в корне репозитория, в
контейнере /certs (смонтированный каталог с хоста, GRAPH_CERT_DIR не меняется).

Имена файлов внутри фиксированы, поэтому GRAPH_CERT_PATH и GRAPH_KEY_PATH
больше не нужны. Содержимое secrets/ в .gitignore, кроме README.

Отсутствие файлов теперь даёт понятную ошибку вместо ENOENT — на свежем
клоне это основной сценарий отказа.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 13:34:37 +05:00
gorbenko.pavel 0eb81e61e5 chore: npm run dev поднимает фронтенд и auth-сервис вместе
Локальное окружение требовало двух терминалов, а без запущенного
auth-сервиса форма отдаёт 500 от vite-прокси — это легко принять за баг
приложения. Теперь concurrently стартует оба процесса с метками
[web]/[auth]; только фронтенд — npm run dev:web.

Заодно поправлен README сервиса: GRAPH_SCOPE больше не нужно задавать
руками, дефолт уже указывает на App ID URI api.tnsu.kz.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 12:57:36 +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 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