Перейти к содержимому

Редактор коллекции

Обзор экрана

Что это. Редактор коллекции — место, где администратор организации правит шаблон декомпозиции: его слои, специальности, блоки и связи между блоками. Открывается кликом по карточке на экране коллекций. Доступен администратору организации и site-admin.

Как устроено. Три панели. Слева — списки специальностей и слоёв коллекции. В центре — SVG-граф блоков: блоки залиты цветом своего слоя, разложены по горизонтальным полосам-слоям, на блоках — точки специальностей, между блоками — стрелки связей; есть зум, панорамирование и авто-вписывание. Справа — панель деталей выбранного элемента (блок, специальность, слой) или, когда ничего не выбрано, — сводка по самой коллекции: имя, описание домена, заголовок документа и статистика по слоям/специальностям/блокам/связям.

Что тут делают.

  • Редактируют структуру. Специальности, слои и блоки создают, меняют и удаляют через левую панель и панель деталей. Слой несёт цвет, порядок и необязательный заголовок раздела документа; специальность — имя, цвет, описание; блок — имя, описание, слой и набор специальностей по умолчанию (идентификаторы read-only). Создание — методы create-specialty, create-layer, create-block. Удаление с зависимостями подсказывает варианты: слой с блоками не удалить «вслепую», блоки удаляемой специальности можно осиротить или переназначить.
  • Связывают блоки. Связь рисуют кликом «откуда → куда» прямо на графе (create-edge). Петли на себя блокируются, циклы подсвечиваются как предупреждение, но не запрещаются.
  • Настраивают промпты. Тексты, по которым LLM разбирает задачу, правятся по этапам (decompose / describe / dependencies / генерация документа): текущие промпты — get-prompts, сохранение этапа — save-prompt, запрос предложенного варианта — suggest-prompt.
  • Перегенерируют. Форма параметров (пере)генерации задаёт промпт, диапазоны по слоям/блокам/специальностям, режим (с нуля / только блоки / с сохранением) и Pro-тоггл. Кнопка «Предложить значения» даёт предпросмотр без записи в БД, «Сгенерировать»/«Перегенерировать» запускает потоковую перегенерацию; перед стримом блоков старые блоки и связи очищаются, а специальности и слои сохраняются.

Сгенерировано из docs/matrices/fm/collections.yaml.

FMЭлементДействиеПоведениеРоли (доступ)Статус
FM-102Tab «Общее»: name, description, doc_titleInline-edit, autosave (debounce 500ms)description подставляется в промпт как {{domainDescription}}. Подсказка: «Опишите предметную область максимально подробно». Max 5000 charsorg_admin, site_adminpartial
FM-103Tab «Слои»: CRUDInline-форма, drag-to-reorderid (auto-gen UPPER_SNAKE из display_name), display_name, color picker, sort_order, doc_title (заголовок раздела документа, необязательное; если пусто — используется display_name). Удаление: если есть блоки → ошибка LAYER_IN_USE с предложением перенестиorg_admin, site_admindone
FM-104Tab «Специальности»: CRUDФорма: id, name, color, description. Drag-to-reorderУдаление: модалка с вариантами — осиротить блоки / переназначить на выбранную / авто LLMorg_admin, site_adminpartial
FM-105Tab «Блоки»: CRUDФорма: id, name, description, layer_id (dropdown), default_specialties (multi-select), sort_orderДва режима: таблица (группировка по слоям) или визуальный граф (mini-graph preview). При смене layer_id — warning если есть cross-layer связиorg_admin, site_adminpartial
FM-106Tab «Зависимости»: визуальный редакторГраф: click source → click target. Или матрица смежности: checkboxSelf-edge блокируется. Cycle detection → визуальная подсветка (warning, не блокирует). Фильтрация по слою при >50 блоковorg_admin, site_adminpartial
FM-108Tab «Промпты»: 3 стадии + doc_generateAccordion: decompose, describe, dependencies, doc_generate. Textarea с подсветкой {{placeholders}}Справочник плейсхолдеров в sidebar. Кнопка «Preview»: промпт с подставленными значениями из текущей коллекции. Save per-stageorg_admin, site_adminpartial
FM-109Экспорт коллекцииКнопка «Экспорт JSON» / «Экспорт YAML»Скачать файл с полной структурой: specialties, layers, blocks, edges, prompts, doc_sectionsorg_admin, site_admintodo
FM-110Удалить коллекциюКнопка + confirmБлокируется если есть привязанные спейсы (COLLECTION_IN_USE). Показать кол-во спейсов в warningorg_admin, site_admindone
FM-125SVG граф блоковПросмотрБлоки как solid-fill rectangles, цвет по слою. Layer bands с labels. Specialty dots на блоках. Edges между блоками. Zoom/pan, auto-fitorg_admin, site_admindone
FM-126Левая панель — специальностиКлик на специальностьВыбор → правая панель: name, description, color. Добавление через inline-форму (name + color picker)org_admin, site_admindone
FM-127Левая панель — слоиКлик на слойВыбор → правая панель: display_name, color. Badge: количество блоков. Добавление через inline-формуorg_admin, site_admindone
FM-128Правая панель — блокКлик на блок в графеEditing: name, description, layer (dropdown), default_specialties (multi-select chips), ID (readonly). Save + Deleteorg_admin, site_admindone
FM-129Правая панель — коллекция (без выделения)ПросмотрName, описание домена, doc_title. Статистика: блоков/специальностей/слоёв/связей. Saveorg_admin, site_admindone
FM-133Описание слояТекстовое полеcollection_layer.description — контекст для LLM при перегенерации блоковorg_admin, site_admindone
FM-134Кнопка «Перегенерировать блоки»Клик → SSELLM перераскидывает блоки по слоям с учётом descriptions. Сохраняет специальности и слои. prepareForBlockRegen очищает старые блоки/edges перед стримом.org_admin, site_admindone
FM-163prepareForBlockRegen — старые блоки/edges очищаются перед SSE регенерации(внутреннее)Гарантирует чистое состояние перед стримом новых блоков.org_admin, site_admindone
FM-183Форма параметров (пере)генерации коллекцииЗаполнить промпт + параметры → «Сгенерировать» / «Перегенерировать»Унифицированная форма параметризации генерации (#170). Поля: промпт/сообщения, диапазоны min/max по осям слоёв / блоков / специальностей, переключатель режима (initial | blocks-only | with-keep), Pro-тоггл (quality pro|fast). Кнопка «Предложить значения» вызывает mode=propose (POST /:id/regenerate) — JSON-предпросмотр без записи в БД. Кнопка «Сгенерировать»/«Перегенерировать» — applied-режим по SSE. При открытии форма hydrate-ится из последней applied-попытки (GET /:id/last-applied-attempt). Валидация min<=max.org_admin, site_admindone
FM-189Правая панель — блок: селектор «Реализация» (software / manual / omni)Выбор в dropdown → сохранение блокаВ форме правки блока (CollectionSidePanel) — селектор implementation_kind: «Software (агент)» / «Ручной труд» / «Смешанный (omni)». Значение хранится в collection_block (SoT разметки). При LLM-генерации коллекции проставляется автоматически (manual для закупок/монтажа/договоров/оффлайн-операций, omni для смешанных блоков), здесь — ручная правка. Новый блок по умолчанию software.org_admin, site_admindone
FM-196Контекстное меню блока «Декомпозировать»Правый клик на блок → пункт «Декомпозировать»В графе (CollectionGraph) при правом клике на блок появляется контекстное меню. Пункт «Декомпозировать» — открывает модаль BlockDecomposeForm для выбранного блока. Пункт присутствует только для collection admin. Если блок является кандидатом на декомпозицию — рядом показывается бейдж (FM-200).org_admin, site_admindone
FM-197Модаль настроек декомпозиции блокаОткрытие из контекстного меню блока → настройка параметров → «Далее»BlockDecomposeForm — первый шаг: настройки декомпозиции (целевые параметры для LLM). Показывает имя декомпозируемого блока. Если у коллекции есть активные спейсы (overlay-warning) — предупреждение «Изменение затронёт N активных спейсов». Кнопка «Далее» переводит к confirm-шагу (FM-198).org_admin, site_admindone
FM-198Confirm-шаг декомпозиции блока (предупреждение + генерация варианта)Подтверждение → генерация варианта (без записи в БД)Второй шаг BlockDecomposeForm: предупреждение (после применения блок будет заменён подблоками, необратимо), сначала — предпросмотр. Кнопка «Сгенерировать вариант» запускает POST /api/collections/:id/blocks/:blockId/decompose (SSE) c телом {apply:false} — staging: LLM отрабатывает, но в БД НЕ пишется. Прогресс по SSE; по complete форма переходит на превью-отчёт (FM-201). Запись — только по «Применить».org_admin, site_admindone
FM-199Overlay-warning при наличии активных спейсов(авто, при открытии модали декомпозиции)Если GET /api/collections/:id/space-count возвращает active_spaces > 0 — в шапке BlockDecomposeForm (шаг 1 и 2) отображается предупреждение: «Коллекция используется в N спейсах. Декомпозиция изменит структуру и может затронуть их overlay». Не блокирует операцию, только информирует.org_admin, site_admindone
FM-200Бейдж кандидата на декомпозицию на блоке в графе(авто, после POST decomposition-candidates)После запуска LLM-аудита (POST /api/collections/:id/decomposition-candidates) блоки-кандидаты получают визуальный бейдж (значок/подсветка) в CollectionGraph. Данные читаются через GET /api/collections/:id/decomposition-candidates (SRM-362). При наведении — tooltip с reason. Бейдж исчезает после фактической декомпозиции (CASCADE DELETE из collection_decomposition_candidate).org_admin, site_admindone
FM-207Бейдж типа реализации блока (Р / O) на графе коллекции(авто, при рендере графа)Блоки с implementation_kind=manual получают бейдж «Р», omni — «O» в правом нижнем углу ноды CollectionGraph (верхний правый занят маркером кандидата на декомпозицию, FM-200). software — без бейджа. Зеркалит бейджи графа проекта; вычисляется клиентски из block.implementation_kind (kindBadge из implementation-kind.js). Tooltip поясняет тип.org_admin, site_admindone
FM-201Модаль-превью AS IS → TO BE (staging, до применения)Просмотр варианта → «Применить» / «Отмена» / «↻ Перегенерировать»По complete propose-декомпозиции ({apply:false}) BlockDecomposeForm переходит на шаг «report» — это ПРЕВЬЮ (изменения ещё НЕ применены, плашка «ещё не применено»): markdown-отчёт «Было» / «Стало — N подблоков» / «Связи перераспределены» (⚠️ потерянные связи и изолированные подблоки). Кнопки: «Копировать (md)», «Отмена» (закрыть без записи), «↻ Перегенерировать» (повторный propose — новый вариант), «Применить» — финальная запись: POST /api/collections/:id/blocks/:blockId/decompose/apply (SRM-366, плоский JSON, без LLM), затем граф обновляется (store.applyDecompose). STALE (коллекция изменилась) → 409 «перегенерируйте».org_admin, site_admindone
FM-202Панель «История декомпозиций»Клик по кнопке «История» в графе коллекцииКнопка «История» в CollectionGraph открывает CollectionActivityPanel — постоянную ленту прошлых декомпозиций из SCD4-архива (GET /api/collections/:id/activity?depth=1). Для каждой операции клиент реконструирует тот же отчёт AS IS → TO BE из архивных before/after, сгруппированных по op_id, и рендерит его тем же markdown-ядром. Показываются только операции декомпозиции (структурная детекция), новые сверху.org_admin, site_admindone
FM-203Кнопка «Отменить последнее действие» (+ Ctrl+Z) на графе коллекцииКлик по кнопке «Отменить» или Ctrl+Z (Cmd+Z)В графе коллекции (CollectionGraph) кнопка «Отменить» и горячая клавиша Ctrl+Z откатывают последнюю операцию (декомпозиция / правка блоков / рёбер / метаданных) к прежнему состоянию через POST /api/collections/:id/undo. После отката — полный рефетч коллекции и чистый ререндер графа (сброс dragPositions / выделения). Сам откат аудируется новым op_id, повторное «Отменить» = redo (возврат к состоянию до отката). Если откатывать нечего (undone:false) — кнопка деактивируется. Ctrl+Z игнорируется в полях ввода (INPUT/TEXTAREA/ contentEditable).org_admin, site_admindone
FM-204Кнопка «Сгруппировать в блок» в панели мультиселекта SidePanelCtrl/Shift-выделить ≥2 блока → «Сгруппировать в блок» в CollectionSidePanelПри мультивыделении блоков (Ctrl/Shift-клик) в CollectionSidePanel появляется панель действий над выборкой. Кнопка «Сгруппировать в блок» (ранее disabled, «Скоро») активна для collection admin при ≥2 выделенных блоках — открывает модаль BlockGroupForm для группировки выделенных блоков в один. Пункт присутствует только для collection admin.org_admin, site_admindone
FM-205Модаль настроек группировки блоков (BlockGroupForm)Открытие из панели мультиселекта → (опц. ориентир) → «Далее»BlockGroupForm — первый шаг: заголовок «Сгруппировать блоки в один», список объединяемых блоков (blockNames), опциональный ориентир (guidance) для LLM. Pro-тоггла нет — группировка всегда fast (LLM пишет метаданные ОДНОГО блока). Кнопка «Далее» переводит к confirm-шагу (FM-206).org_admin, site_admindone
FM-206Confirm-шаг группировки блоков (предупреждение о необратимости)Подтверждение → запуск группировкиВторой шаг BlockGroupForm: предупреждение (N блоков будут заменены одним новым). Кнопка «Сгруппировать» запускает POST /api/collections/:id/group (SSE). Прогресс по SSE-событиям (loading/generating/saving). По завершении (событие complete с полем report) — переход на шаг «report»: markdown-отчёт «Было — N блоков → Стало — 1 блок» + «Связи перевешены на новый блок» (внешние соседи с сохранением направления; ⚠️ помечаются потерянные). Граф применён (store.applyGroup): N блоков исчезли, новый блок выделен одиночно.org_admin, site_admindone
FM-216Панель «Какие проектные механизмы нужно принудительно вменить коллекции?»Просмотр (правая зона, когда не выделен ни один элемент)5 встроенных механизмов процесса (память, трекинг задач, интеграция с трекерами, матрицы требований, документация): галочка + бейдж уверенности + разворачиваемое обоснование со ссылками на элементы коллекции. Крестик сворачивает до конца сеанса редактора; выделение элемента сменяет панель на обычную.org_admin, site_admindone
FM-217Галочки механизмов в панелиКлик по чекбоксуНемедленный PUT /api/collections/:id/mechanisms {items:[{key,checked}]} (optimistic; при ошибке — откат + сообщение). Вердикты оценки не трогаются.org_admin, site_admindone
FM-218Кнопка «Оценить заново» / «Оценить соответствие» (пустое состояние)КликPOST /api/collections/:id/mechanisms/assess → «Оценка идёт…» → обновление панели. Перезапуск перезаписывает вердикты и предзаполненные галочки (предупреждение в title). Автозапуск: fire-and-forget после успешной initial-генерации коллекции (CollectionGenerationForm, событие done); панель дожидается результата bounded-поллингом.org_admin, site_admindone

← Витрина продукта · Версия для агента (raw markdown) →