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

4.8 KiB
Raw Blame History

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.