8 Commits

Author SHA1 Message Date
Andrey Epifancev
1590302b79 AURORA-1690: названия ролей в блоке пользователя (role_details в /me)
GET /me дополнен role_details [{code, name}] (аддитивно), фронт показывает
названия ролей, при их отсутствии — коды. Требования внесены в спеки
authn-authz и consolidations-ui, change 184-user-role удалён.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 01:11:28 +04:00
Andrey Epifancev
c3d82bd293 fix(web): желательные пункты ревью шахматки, раунд 3 (ревью #158, AURORA-1538)
- форматтер сумм: проверка числа до сдвига запятой, Intl.StringNumericLiteral (ES2023.Intl) вместо any, без разбора скобок;
- запасные имена выгрузок xlsxFilename, отдельные флаги загрузки у двух «Экспорт»;
- useNotificationApi мемоизирован, загрузки — useCallback, зависимости эффектов полные;
- ячейки: расхождение в скобках, значок пропущенных строк ОСВ, «—» вместо выдуманного нуля;
- «Год»/«Период» версии только для чтения;
- сервис services/api/intercompanyMatrix.ts с withJsonBody, типы шахматки в types/api.ts, Account.kind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:42:00 +04:00
Andrey Epifancev
e19291c886 chore(web): format и biome для шахматки (ревью #158)
- npm run format (eslint --fix, biome check --write, prettier --write) по файлам шахматки;
- biome: import type и сортировка импортов; явный тип IntercompanyMatrixResponse у `let res`
  (ConsolidatedChessContent); Number.isNaN вместо isNaN (ConsolidationChessTable); key у span в OsvTabs;
  `?? null` вместо пустого фрагмента (ConsolidatioReportPage). Поведение не менялось.

Остаются предупреждения eslint в коде шахматки (any, deps хуков, console) — за автором.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 14:05:23 +04:00
9bd8a2a015 added chess table 2026-10-21 10:51:13 +03:00
Andrey Epifancev
ec12397854 fix(web): синхронизация встроенного фронта с arm-web@test (8345f5e) (#137)
Перенесён диапазон arm-web 46639b1..8345f5e (9 коммитов, 41 файлов набора
синхронизации) скриптом docs/scripts/sync-web.sh. После переноса web/ и
arm-web@test идентичны по набору. Коммиты arm-web:
- 5b13b74 Форматирование под ESLint + Prettier, зелёный make check (#31)
- 681697f fixed eslint bugs
- 25d2211 fixed bugs
- 2cddb55 Форматирование под ESLint + Prettier и зелёный make check (#31)
- 71dae21 updated company group and forms
- 83d4c2b added company group table
- d2dc230 fixed merge bug
- 3977dae added forms for catalogue jur
- 8e8e46e addded legalEntities table and move form

Co-Authored-By: sync-web.sh <noreply@aepif.ru>
2026-10-19 11:35:41 +04:00
maxim
2a6383ec1c Merge web repo 2026-10-08 18:09:07 +03:00
Andrey Epifancev
d76ca570d8 fix(web): клиент — сетевые/не-JSON ошибки, ошибка входа в prod, мелочи (T13.1–T13.3, T13.5–T13.10)
apiFetch оборачивает сбой сети в ApiError(0, NETWORK) и не-JSON тело 2xx в ApiError(BAD_RESPONSE); AbortError пробрасывается как есть, пустое тело даёт undefined.
В production-ветке входа показываются ошибка загрузки профиля и кнопка «Повторить», форма dev-входа по-прежнему вырезается из бандла литералом process.env.NODE_ENV.
Мелочи: «Сессия истекла» при 401, trim и whitespace-правило для email, центрирование по 100svh, union-типы прав, срез хвостовых слэшей в API_BASE.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 00:39:59 +04:00
Andrey Epifancev
498450b763 feat(web): API-клиент с Bearer, dev-вход по email, загрузка /me
Токен хранится в sessionStorage (design D-9; без Redux): живёт до закрытия вкладки, все обращения к хранилищу в try/catch с запасным токеном в памяти.
apiFetch подставляет Bearer, на 401 сбрасывает токен и шлёт событие armka:unauthorized, ошибки разбирает по трём формам detail (строка / {code,message} / массив 422).
useMe не ходит в /me без токена и отбрасывает устаревшие ответы (флаг cancelled), AuthGate показывает вход, пока профиля нет.
Форма DevLogin вырезается из production-сборки по литералу process.env.NODE_ENV; через Config это не работает: process.env там заменён объектом REACT_APP_*.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 00:23:56 +04:00