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>
48 lines
4.8 KiB
Markdown
48 lines
4.8 KiB
Markdown
## 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.
|