Обратный поток из контура: vitest 3.1.4 и форма dev-входа в production-сборке (#92) #93

Merged
aep merged 1 commits from feat/92-contour-dev-login into main 2026-10-09 20:38:20 +03:00
Owner

Закрывает #92. Bounded-задача (без OpenSpec change).

Что сделано

  • web/package.json: "vitest": "3.1.4" точно — в зеркале npm банка нет 3.2.x; lock-файл не в git, поэтому каретка давала бы разные версии снаружи и в контуре.
  • web/src/auth/DevLogin.tsx: форма входа по email больше не зависит от NODE_ENV. Платформа всегда собирает фронт в production, контур работает на dev-заглушке аутентификации, переменные сборки в пайплайне задать нельзя. Форма показывается всегда; заглушка «Вход выполняется через РАИСА» — только после 404 «Not Found» от бэкенда (маршрута /dev/token нет, dev-эмитент выключен).
  • web/src/auth/devIssuer.ts + тест: признак isDevIssuerDisabled — ApiError 404 без кода с текстом «Not Found»; 404 «пользователь не найден или отключён» остаётся ошибкой в форме.

Проверки

  • npx vitest run на 3.1.4: 21 файл, 124 теста зелёные; biome check — 7 предупреждений, все прежние (GenericTable, Console*); tsc --noEmit чистый; rsbuild build собирается, production-бандл содержит форму.
  • Браузер (Playwright, dev-сервер, ответы бэкенда подменены): 404 «Not Found» → заглушка РАИСА с кнопкой «Повторить», формы нет; 404 «пользователь не найден» → ошибка в форме, заглушки нет.
  • Бэкенд и make check-full не трогались: правка только в web/.

Rulings I made

  • R-1: точная версия 3.1.4 вместо ^3.1.4 — без lock-файла каретка резолвится по-разному снаружи и внутри банка.
  • R-2: признак «эмитент выключен» определяется по ответу на попытку входа, а не отдельным пробным запросом или новым эндпоинтом бэкенда — без изменений API; настоящий сценарий входа через SSO всё равно потребует переделки гейта после OQ-54.
  • R-3: docs/dev/contour-transfer-guide.md §6.3 не менял — текст «форму использует DevLogin» остаётся верным; строка о поведении в любой сборке — на усмотрение владельца.

Зеркальный PR в arm-web: #25 (ветка feat/24-contour-dev-login → test).

🤖 Generated with Claude Code

Закрывает #92. Bounded-задача (без OpenSpec change). ## Что сделано - `web/package.json`: `"vitest": "3.1.4"` точно — в зеркале npm банка нет 3.2.x; lock-файл не в git, поэтому каретка давала бы разные версии снаружи и в контуре. - `web/src/auth/DevLogin.tsx`: форма входа по email больше не зависит от `NODE_ENV`. Платформа всегда собирает фронт в production, контур работает на dev-заглушке аутентификации, переменные сборки в пайплайне задать нельзя. Форма показывается всегда; заглушка «Вход выполняется через РАИСА» — только после 404 «Not Found» от бэкенда (маршрута `/dev/token` нет, dev-эмитент выключен). - `web/src/auth/devIssuer.ts` + тест: признак `isDevIssuerDisabled` — `ApiError 404` без кода с текстом «Not Found»; 404 «пользователь не найден или отключён» остаётся ошибкой в форме. ## Проверки - `npx vitest run` на 3.1.4: 21 файл, 124 теста зелёные; `biome check` — 7 предупреждений, все прежние (GenericTable, Console*); `tsc --noEmit` чистый; `rsbuild build` собирается, production-бандл содержит форму. - Браузер (Playwright, dev-сервер, ответы бэкенда подменены): 404 «Not Found» → заглушка РАИСА с кнопкой «Повторить», формы нет; 404 «пользователь не найден» → ошибка в форме, заглушки нет. - Бэкенд и `make check-full` не трогались: правка только в `web/`. ## Rulings I made - R-1: точная версия `3.1.4` вместо `^3.1.4` — без lock-файла каретка резолвится по-разному снаружи и внутри банка. - R-2: признак «эмитент выключен» определяется по ответу на попытку входа, а не отдельным пробным запросом или новым эндпоинтом бэкенда — без изменений API; настоящий сценарий входа через SSO всё равно потребует переделки гейта после OQ-54. - R-3: `docs/dev/contour-transfer-guide.md` §6.3 не менял — текст «форму использует DevLogin» остаётся верным; строка о поведении в любой сборке — на усмотрение владельца. Зеркальный PR в arm-web: #25 (ветка `feat/24-contour-dev-login` → `test`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-09 19:30:59 +03:00
- vitest зафиксирован точно на 3.1.4: в зеркале npm банка нет 3.2.x, lock-файл не в git,
  каретка давала бы разные версии снаружи и внутри контура;
- DevLogin больше не выбирает форму по NODE_ENV: платформа всегда собирает фронт в production,
  а контур работает на dev-заглушке аутентификации, переменные сборки в пайплайне задать нельзя.
  Форма входа по email показывается всегда; заглушка «Вход выполняется через РАИСА» — только после
  404 «Not Found» от бэкенда (маршрута /dev/token нет → dev-эмитент выключен). Признак вынесен
  в isDevIssuerDisabled и покрыт тестами: 404 «пользователь не найден» остаётся ошибкой в форме.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
aep merged commit 9e604a0a98 into main 2026-10-09 20:38:20 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#93
No description provided.