Andrey Epifancev 3094e364a1 chore(openspec): архив web-modules (#98)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 15:58:18 +04:00

60 lines
7.4 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
Веб хаба собирался, когда модуль был один. После hub-modules (#87) и wiki-module (#91) у хаба два модуля со своими
агентами, а оболочка по-прежнему говорит на языке Jira. Владелец 24.10.2026 заметил, что блок в боковой панели вводит в
заблуждение: «агент на связи» — это только агент jira, у вики нет ни агента, ни кнопки, неясно, к чему относится «данные
на …». Владелец попросил пересмотреть весь веб и организовать его под модули в новом имени sdlc-hub (#97).
Аудит 24.10.2026 (код, спеки, живой хаб в двух темах и на 390 px) показал, что это не одна подпись:
- в контракте веб-модуля нет понятия «состояние модуля» (агент, свежесть данных и её охват, обновление, пакет в
работе): каждый модуль рисует свой блок по-своему, оболочка не может ни свести их, ни показать сводку;
- блок jira грузит полный снимок доски на каждой странице ради одного времени `last_sync`;
- ход пакетов отслеживает только jira; автообновления хаба и пакеты из MCP не видны, время данных отстаёт;
- оболочка привязана к jira: `/` ведёт на доску, типы jira и `closed.ts` лежат в ядре, модуль wiki импортирует
форматтер из модуля jira;
- CSS модулей не разделён: правило разметки Jira в карточке (`div.wiki h1`) ломает заголовки страницы «Вики»;
- пакет синхронизации вики нового проекта теряется: `POST /projects` отдаёт один `batch_id`;
- страница «Задачи» прокручивается по горизонтали на 1440 px, просрочка в таблице показана только цветом.
## What Changes
- **Состояние модуля — данные, а не компонент.** Модуль описывает: название для показа, агента, свежесть (время, охват
«все проекты» / «проект», ошибка), действие обновления и правило «чей пакет». Ядро рисует блок одинаково в боковой
панели, свёрнутой панели, на узком экране и на «Обзоре».
- **Ядро отслеживает пакеты и агентов.** Один опрос `GET /agents` для всех модулей; один трекер пакетов (вынос
`RefreshProvider` из модуля jira) — подхват незавершённого пакета модуля любого автора, тексты событий, 409, остановка
опроса, перечитывание данных модуля по завершении.
- **Навигация по модулям и «Обзор».** Боковая панель группирует разделы под заголовками модулей; новая страница ядра
«Обзор» (`/app/?project=`) — главная: карточка каждого модуля (состояние + сводка от модуля) и последние пакеты
проекта.
- **Адреса модулей с префиксом модуля:** `/app/jira/board`, `/app/jira/issues`, `/app/jira/issues/{key}`,
`/app/jira/feed`, `/app/wiki`; прежние адреса перенаправляют с сохранением параметров; `/` и `/links` хаба — на `/app/`.
- **API для блока состояния:** `GET /projects` — время последнего полного обновления Jira; `GET /batches` — модуль
пакета; `POST`/`PATCH /projects` — пакеты по модулям.
- **Граница ядра и модулей в вебе:** типы jira, `closed.ts` и словари jira уходят в модуль jira; форматтеры дат — в
ядро; классы CSS модуля не совпадают с классами другого модуля и ядра (тест-страж); `fact_status` удаляется из веба.
- **Доработки по аудиту:** заголовок вкладки «<страница> · <проект> · SDLC Hub»; окно «Новый проект» с группами полей
по модулям и подсказками под полем; узкий экран с меткой проекта и сводной точкой состояния, модальная выезжающая
панель; «Задачи» без горизонтальной прокрутки страницы, просрочка текстом; «Вики» открывает корень и показывает
понятную шапку; мелкие тексты («Команды хаба», подсказка выбора проекта).
- **Закрываемые follow-ups:** #94 (веб: T4.1, T4.2, T4.4, T4.5, T10.1–T10.7), #90 (T7.5, T7.6), #73 (M-1…M-7),
#68 (N-1, N-2, M-2, M-12, M-14, M-17, T5.3), #35 (M-9, O-16; T3.1/M-10 — отметить сделанным). Остаются открытыми: #68 M-18 (заголовки разделов 16 против 24 px) и #94 T9.1 (лишний `GET /projects`) —
в коде не закрыты.
## Non-Goals
- Переименование (#97) — делается раньше; этот change строится на `sdlc_hub`, «SDLC Hub», ключах `sdlc-hub-*`.
- Страница «Агенты и очередь», настройки хаба в вебе.
- Полное удаление «статуса по факту» из базы, API, MCP и агента (#60); здесь — только из типов веба.
- Разметка Jira в ленте (С6 аудита), сворачивание фильтров доски на телефоне (С12), 409 `no_root` у `/wiki/status`
(С10), доступность компонентов `ui/` (`Menu`, `Segmented`, `ThemeSwitch`), доработки окна карточки из #42, служебные
метки `fact-*`/`kind-*` в карточке — в follow-up.
- Изменения логики доски, списка задач, ленты и вики сверх перечисленного.
## Anti-Goals
- Блок состояния, который снова надо читать как загадку: у каждой строки должно быть видно, к какому модулю она
относится и что именно обновит кнопка (все проекты или текущий).
- Ядро веба, знающее про jira или wiki по имени: всё, что оболочка показывает о модуле, приходит из описания модуля.
- Две основные (primary) кнопки на одном экране.