28 lines
2.9 KiB
Markdown
28 lines
2.9 KiB
Markdown
## Context
|
||
|
||
`main` 78a0d78. Веб-приложение — React 19 + TanStack Query, страницы рисует `shell/Layout.tsx` по `shell/pages.tsx`,
|
||
разделы — `shell/Sidebar.tsx` (`SECTIONS`), проект — `ProjectGate`, карточка — окно `IssueModal` поверх страницы
|
||
(`IssueLink`/`useOpenIssue` с `openCardState`). Запросы — `api/queries.ts` (`qk`), перечитывание после «Обновить из
|
||
Jira» — `shell/RefreshProvider.tsx`. Хаб: `GET /changes` (`since`/`until` — ISO со смещением, иначе 422; `kinds`,
|
||
`project`, `limit` ≤ 2000, ответ `{since, until, truncated, changes}`), `GET /issues/{key}.changes`.
|
||
|
||
## Decisions
|
||
|
||
1. **Модуль `web/src/feed/`**: `events.ts` — чистые функции (границы периода, разбор `kinds` из адреса, текст события,
|
||
группировка по задаче), `EventList.tsx` — список событий (лента и карточка), `FeedPage.tsx` — страница, `feed.css`.
|
||
2. **Период — переключатель из четырёх, а не календарь**: покрывает «за пару часов» и «за сегодня» владельца; «Вчера» и
|
||
«7 дней» — утренний разбор и неделя. Границы считаются по местному времени браузера, в запрос уходят
|
||
`toISOString()` (UTC с `Z`) — хаб принимает `Z`, пояс не теряется.
|
||
3. **`limit` = 2000** (максимум хаба) — неделя активного проекта помещается; иначе `truncated` с подсказкой.
|
||
4. **Подписи прочих полей** — словарь в `events.ts`; незнакомые — имя поля Jira.
|
||
5. **Комментарий в ленте — простой текст** (300 символов одной строкой), без вики-разметки: лента — обзор, полный текст
|
||
— в карточке.
|
||
6. **История в карточке — 10 последних с «Показать все»**; блок в основной колонке после комментариев.
|
||
7. **Перечитывание**: ключ запроса `["changes", …]`; `RefreshProvider` после пакета инвалидирует `["changes"]`; TanStack
|
||
Query перечитывает при возврате на вкладку (`refetchOnWindowFocus` по умолчанию).
|
||
|
||
## Decisions made without discussion
|
||
|
||
1. 2026-10-22 — **все решения выше (1–7) — мои**: владелец сказал «начинай» без обсуждения интерфейса. Цена ошибки:
|
||
переделка вёрстки страницы; бэкенд не затронут.
|