Andrey Epifancev 8e26e3a62e Архив OpenSpec: wiki-package-d (#135)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 19:02:52 +04:00

5.4 KiB
Raw Blame History

MODIFIED Requirements

Requirement: MCP вики

sdlc-hub mcp wiki [--project <метка>] SHALL запускать по stdio MCP-сервер модуля wiki с именем sdlc-wiki, ходящий в HTTP API хаба клиентским токеном; хаб недоступен — каждый инструмент отвечает «хаб не запущен: sdlc-hub serve». Привязка к проекту проверяется так же, как у сервера jira («Привязка сессии к проекту»). Инструменты:

Инструмент Параметры Ответ
projects — таблица: метка, название, корень вики, страниц, последняя синхронизация; текущий проект отмечен
project_create label, name, wiki_root (необязательно) POST /projects с автором claude; проект и фрагмент .mcp.json с записью sdlc-wiki
root_set root PATCH /projects/<текущий> {wiki_root}; новый корень и id пакета синхронизации
tree code (необязательно), depth (по умолчанию 2) дерево от корня или от code: отступ, код, название, размер
page code или title, offset (по умолчанию 0) шапка (код, путь в дереве, адрес в Eva, дата синхронизации, вложения с id) и Markdown с offset до 20 000 символов, в конце — «продолжение: offset=», если текст длиннее; title ищется точно, иначе — до 10 кандидатов с кодами
search query, limit (по умолчанию 10) страницы: код, название, путь, фрагмент
attachment id ставит скачивание, ждёт до 60 с; готово — путь к копии downloads/wiki-<id>/<имя>; иначе состояние и подсказка повторить
sync wait (по умолчанию false) ставит синхронизацию (или сообщает о текущей) и id пакета; с wait — ждёт до 300 с и отдаёт итог
status — корень, последняя синхронизация, ошибка, пакет в работе, агент wiki: онлайн/офлайн, версия, публикация, обновление, запускатель (как agent_status сервера jira)

Инструменты, кроме projects и project_create, SHALL требовать привязки к проекту. В привязанной сессии без корня (кроме root_set, status) ответ SHALL быть «у проекта <метка> нет корня вики: root_set DOC-…»; с корнем, но без синхронизаций — «вики проекта ещё не синхронизирована: sync». Набор инструментов и их описания у сервера sdlc-jira (модуль jira) SHALL остаться прежним.

Значения из Eva, которые инструменты выводят внутри строки ответа (названия страниц и корня, путь, имя вложения, фрагмент поиска, кандидаты page по названию), SHALL выводиться одной строкой: переводы строк (\r, \n) и пробелы вокруг них заменяются одним пробелом. Тело страницы (Markdown после шапки page) выводится как есть.

Scenario: Поиск из сессии awp-ca

  • WHEN сервер запущен с --project AWPCA, копия синхронизирована, вызван search {query: "статус согласован"}
  • THEN ответ — страницы с кодами и фрагментами; запрос в хаб — GET /wiki/search?project=AWPCA&q=…

Scenario: Длинная страница

  • WHEN page {code: DOC-3}, Markdown 45 000 символов
  • THEN первые 20 000 символов и «продолжение: offset=20000»; page {code: DOC-3, offset: 40000} — остаток без строки продолжения

Scenario: Корня нет

  • WHEN сессия sfm_kedr без корня, вызван tree
  • THEN ответ «у проекта sfm_kedr нет корня вики: root_set DOC-…», запроса GET /wiki/tree нет

Scenario: Сервер jira не изменился

  • WHEN запущен sdlc-hub mcp jira --project AWPCA
  • THEN имя сервера sdlc-jira, список инструментов и описания совпадают с эталоном до change

Scenario: Перевод строки в названии страницы

  • WHEN у DOC-3 название «Статусы\nпуть: поддельный», вызван page {code: DOC-3}
  • THEN первая строка ответа — «DOC-3 — Статусы путь: поддельный», строка «путь:» в шапке одна — настоящая