Andrey Epifancev bb3ddd1770 fix: волна по финальному ревью — I-2 fromFile при обновлении из файла, тесты, комментарии, спека (#29)
I-2, M-4..M-8, M-11, M-13, M-16, M-18, T7.3, M-1..M-3, M-17.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 02:40:33 +04:00

48 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Why
Change `web-app` (jira-hub#21, PR #27) слит, финальное ревью не нашло Critical и Important. 46 мелких находок
отложены в jira-hub#29: недочёты видимого поведения доски, входа и страниц задач, внешние шрифты, уязвимость в
dev-зависимости, неаккуратный React-код, слабые и недостающие тесты. Решение владельца 15.10.2026 — закрыть #29
целиком одним change.
Решения владельца (brainstorming 15.10.2026):
- берутся все 46 пунктов (группы A — поведение, B — окружение, C — качество кода, D — тесты);
- M-3: при возврате с карточки задачи на доску восстанавливается прокрутка; держать в памяти снимок из файла и строку
состояния не нужно — данные идут из хаба, файл — запасной путь (эта часть M-3 — rejected);
- шрифты — те же IBM Plex Sans и Mono, но из сборки, без обращения в интернет;
- M-5 (сборка в wheel) — rejected: хаб запускается из checkout (`uv run --project`), wheel не используется (показано владельцу в сводке понимания до утверждения разделов, возражений не было).
## What Changes
- **Доска**: восстановление прокрутки при возврате на `/app/board` (M-3); строка «пакет #N выполняется» не стирается
«Перечитать» и загрузкой файла (T10.3); при показанном снимке из файла ошибка хаба — «хаб не отвечает — на доске снимок
из файла» (T10.4); подхватывается только пакет обновления из Jira (T10.6); без лишнего `GET /batches` после
завершения пакета (T10.1).
- **Вход**: ответ 4xx при проверке токена — текст ошибки хаба, а не «хаб не отвечает» (T3.2); 401 на запрос со старым
токеном после входа с новым не выбрасывает на экран входа (T3.5).
- **Задачи**: значение фильтра из адреса, которого нет среди вариантов, показывается в списке (T13.1); ссылки карточки —
цветом темы (O-10); пустой список команд — текстом (O-11).
- **Хаб**: путь `/app/assets/…` с нулевым байтом — 404, а не 500 (T1.1).
- **Сборка**: шрифты из npm-пакетов `@fontsource`, без Google Fonts (T2.2); `source-map-js` поднимается до исправленной
версии через `overrides` (O-1).
- **Код и тесты** без изменения поведения: группы C и D (см. design.md, таблица пунктов).
- Спеки: `web-app` — MODIFIED «Вход по токену», «Доска связей», «Источник данных доски», «Список задач», «Карточка
задачи», «Сборка и разработка»; `hub-api` — MODIFIED «Раздача веб-приложения».
## Non-Goals
- Новые страницы, запись в Jira (`viewer-edit`), изменения API хаба.
- Изменения логики доски (модель, выборка, критический путь, проблемы, раскладка): эталоны `links.html@3931a88`
остаются мерилом; меняются только фикстуры эталонов (T5.1), не поведение.
- Хранение состояния доски (снимок файла, событие, опрос) между страницами — rejected часть M-3.
- Включение сборки приложения в wheel (M-5).
## Impact
- `web/`: `src/auth`, `src/api`, `src/board` (useBoardSource, BoardPage, BoardCanvas, Card, DatesBar, Dropdown,
MultiSelect, useBoardPrefs, storage, facets), `src/issues`, `src/test`, `e2e/`, `scripts/`, `index.html`,
`package.json`/`package-lock.json` (+ `@fontsource/ibm-plex-sans`, `@fontsource/ibm-plex-mono`, `overrides`).
- `src/jira_hub/api.py` (`h_app`), `tests/test_web_app.py`, `tests/test_api.py`.
- Контракт с агентом, MCP, схема базы и API не меняются. Ключи `localStorage` не меняются.
- Issue: aep/jira-hub#29.