Инструкция и JSON-контракт

Сервис проектирования алгоритмов в форме Р‑схем

Публичная спецификация профиля и контракта, на которых строятся редактор, анализ и экспорт проекта.

Текущее состояние

Рабочий профиль, переносимый формат Р‑схем 1.0, предметный backend и ортогональный визуальный редактор реализованы. Сервер валидирует, хранит и экспортирует проекты и защищает конкурентную запись ревизиями. Редактор хранит несохранённый черновик локально, а новую revision создаёт только по явной команде пользователя. Геометрия редактора отделена от смысла алгоритма.

КомпонентСостояние
Репозиторий и CIГотово
Профиль и контракт Р‑схем 1.0Готово
Предметный backend и APIГотово
Линейный визуальный редакторГотово
Ортогональный рендерер и layout-инструментыГотово
Упорядоченные альтернативы и циклыГотово
Production deploymentАвтоматический пилот после зелёного CI

В шапке редактора отображается build <7 символов SHA>. Полный SHA активного release возвращает публичный /health; deploy откатывается, если health показывает не тот commit.

Контракт 1.0

  • R_SCHEMA_PROFILE.md — семантика исполнения и уровни готовности;
  • DATA_CONTRACT.md — объекты, ссылки и межобъектные инварианты;
  • schema/r-schema-project-1.0.schema.json — строгая JSON Schema;
  • fixtures/r-schema-1.0 — пять канонических проектов;
  • API_STAGE_2.md и backend/openapi.yaml — поведение и точная поверхность API.

API 1.0

Предметные маршруты находятся под /api/v1/projects. Доступны создание проекта, чтение и список, валидация, ручное сохранение с If-Match, read-only view и переносимый JSON-export. API контрольных версий отсутствует.

Корректный по форме черновик разрешено сохранять с предметными ошибками. Недостижимый заявленный уровень готовности отклоняется. Документы прежнего сервиса не мигрируются и не принимаются новым API. Визуальный редактор уже поддерживает основной линейный сценарий; расширенные конструкции будут добавляться последовательно по плану разработки.

Сохранение и восстановление черновика

  • Любое содержательное или геометрическое изменение сразу записывается в localStorage текущего браузера и получает статус «Не сохранено».
  • Фоновая отправка проекта отсутствует. PUT и новая server revision выполняются только кнопкой «Сохранить» или Ctrl+S.
  • Успешное ручное сохранение очищает локальный черновик. Повторное сохранение без изменений является no-op и не увеличивает revision.
  • После перезагрузки страницы или повторного входа редактор сравнивает локальный черновик с серверным проектом и предлагает восстановить, скачать или отбросить его.
  • Если серверная revision успела измениться, диалог предупреждает о риске замены более свежего серверного варианта; исходный черновик остаётся доступен для скачивания.
  • Масштаб и положение холста хранятся отдельно только в браузере, не создают историю undo и не меняют server revision.
  • JSON-, Markdown- и SVG-экспорт используют открытый локальный черновик и не выполняют скрытого сохранения.

Работа с геометрией

  • На холсте любое состояние показано небольшой круглой вершиной. Название, тип и описание остаются в панели свойств и не утяжеляют схему.
  • Функциональная дуга всегда является одним прямым горизонтальным отрезком. Переход между уровнями выполняют отдельные вертикальные соединители без стрелок.
  • Повторная дуга между той же парой вершин автоматически занимает новый параллельный уровень. Редактор удлиняет две вертикальные стойки и пристыковывает к ним горизонталь без создания двух ложных вершин.
  • Геометрический стык не является вершиной. Чтобы сделать его частью алгоритма, перетащите существующую вершину на стык и подтвердите «вливание»; затронутая дуга будет расщеплена в семантическом графе.
  • Перетаскивание состояния меняет только его координаты и автоматически закрепляет его от последующей автораскладки.
  • В основной панели оставлены добавление вершины, удаление, выравнивание и масштаб. Специальные вершины, циклы, настройки вида и экспорт находятся в меню «Ещё».
  • «Закрепить вершину» вручную включает или снимает фиксацию; «Выровнять схему» перемещает только незакреплённые состояния.
  • «Привязка к сетке» управляет шагом сетки и направляющими выравнивания, «Сетка» — только видимостью фона.
  • У выбранной дуги есть только тип («Обычная», «Обратная», «Двойная»), условие и исполнение. Пустое условие или исполнение на схеме не показывается; двойная дуга рисуется двумя линиями без стрелки.
  • «Экспорт SVG» формирует самостоятельное изображение без сетки и элементов управления. JSON-export остаётся переносимым источником смысла и layout.
  • Команда «Сменить тему» переключает светлую и тёмную темы. Печатные стили сохраняют различимость вершин и возвратных линий в чёрно-белом виде.

Обычное перемещение и автораскладка меняют только layout. Подтверждённое вливание — отдельная семантическая операция: она включает вершину в путь алгоритма и попадает в undo как изменение логики.

Альтернативы и циклы

  • Для построения дуги выберите исходную вершину и протяните появившуюся рядом иконку. При отпускании в пустом месте конечная вершина создаётся на горизонтали исходной. При отпускании на существующей вершине дуга занимает отдельный параллельный уровень: две вертикальные стойки соединяются горизонталью со стрелкой к цели.
  • Повторное применение «Дуги» создаёт следующую условную ветку перед существующим fallback и автоматически поддерживает непрерывный order.
  • В свойствах состояния исходящие ветки показаны в смысловом порядке. Условные ветки можно перетаскивать или двигать кнопками; otherwise и безусловный fallback всегда остаются последними.
  • Тип «Обратная» разворачивает направление горизонтальной стрелки и источник/цель семантического перехода.
  • «Цикл» создаёт проверку, шаг, возврат и один видимый выход. «Повтор с лимитом» дополнительно создаёт счётчик попыток, успешный исход и исход исчерпания лимита.
  • Перед удалением редактор показывает число зависимых переходов и действий. Для единственного выхода из цикла предупреждение содержит код будущей диагностики CYCLE_WITHOUT_EXIT.
  • Метка рядом с undo показывает тип последнего изменения: «Логика» для условий, целей и order; «Геометрия» для координат и маршрутов. Навигация по холсту в undo не попадает.
  • «Экспорт Markdown» формирует предварительное смысловое описание, где ветки всегда отсортированы по order. Полный пакет для ИИ будет расширен на этапе 9.

Локальная проверка

cd backend
npm test
npm run test:e2e

Подробная последовательность работ хранится во внутреннем плане разработки.