Список юрлиц группы меняется без нашего участия, а две копии в репозитории
(COMPANY_OPTIONS во фронте и COMPANY_NAMES на сервере) неизбежно разошлись
бы с источником и между собой. Теперь единственный источник —
/Dictionary/Companies:
- GET /companies проксирует справочник, чтобы токен не утекал в браузер;
- имя компании для колонки Company резолвится по нему же, на сервере;
- в кэше 10 минут — новое юрлицо подхватится без перезапуска сервиса.
Пока список грузится, в select показывается «Загружаем…»; если не
загрузился — ошибка в слоте обязательного поля, а не пустой список.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
POST /feedback собирает поля формы в столбцы списка (Company резолвится
в название по справочнику, Type/Title — по виду обращения) и создаёт
элемент через api.tnsu.kz /SharePoint/ListItem. Ошибки авторизации и
апстрима логируются в stdout и возвращаются клиенту как 502, чтобы сбой
на проде было видно явно.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>