Change web-modules по аудиту веба 24.10.2026 (#98). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7.2 KiB
7.2 KiB
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, T9.1), #90 (T7.5, T7.6), #73 (M-1…M-7), #68 (N-1, N-2, M-2, M-12, M-14, M-17, M-18, T5.3), #35 (M-9, O-16; T3.1/M-10 — отметить сделанным).
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) кнопки на одном экране.