docs(openspec): wiki-module — решения Task 8 (#91)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-24 02:43:17 +04:00
parent 2ffb863dd1
commit c650b8fa08

View File

@ -584,3 +584,15 @@ jira безвреден.
63. **R-7.** `GET /wiki/search` отвечает `{"results": [...]}`, а не голым списком: все ответы хаба — объекты (`{"pages": …}` 63. **R-7.** `GET /wiki/search` отвечает `{"results": [...]}`, а не голым списком: все ответы хаба — объекты (`{"pages": …}`
у `tree`), план и клиенты (MCP, веб) строятся на этом. Спека `wiki` исправлена. Цена ошибки: правка формата ответа и у `tree`), план и клиенты (MCP, веб) строятся на этом. Спека `wiki` исправлена. Цена ошибки: правка формата ответа и
клиентов. клиентов.
Решения исполнителя Task 8 (2026-10-24):
64. `limit` вне 1–50 или не число — 422 `bad_limit` (не обрезка); нет `project` — 422 `bad_request`; в `sync_in_progress`
`detail = {"batch_id": id}`. Цена ошибки: строже, чем нужно.
65. `markdown` страницы — `index.md` без front matter, заголовок `# …` остаётся; порядок `tree` — по `_tree.json` копии
(запасной — по частям пути). Цена ошибки: клиент срезает дубль заголовка сам.
66. Зависшее `fetching` без живой команды `wiki_fetch` (пакет отменён): повторный fetch ставит новый пакет вместо ответа
«как есть», иначе вложение застряло бы навсегда. Цена ошибки: лишний пакет.
67. Скачивание вложения: `Content-Type: application/octet-stream` + `nosniff`, имя в `filename*=UTF-8''` через
`quote(safe="")`, пустое имя — `attachment-<id>`; fetch отвечает 202 при новой постановке, 200 иначе; код страницы в
адресе раскодируется `unquote` (`%2F`). Цена ошибки: клиент должен брать basename имени сам.