48 lines
4.5 KiB
Markdown
48 lines
4.5 KiB
Markdown
## Why
|
||
|
||
Пакет D сверки follow-ups 25.10.2026 (sdlc-hub#135, маркеры из #94). Сверка с кодом 27.10.2026 подтвердила дефекты модуля
|
||
`wiki`. Самый заметный — T6.1: если в HTML Eva между ссылкой на файл и его миниатюрой стоит обёртка (`<a><span><img>`),
|
||
ссылка на вложение пропадает из текста страницы целиком, хотя вложение в базе есть. Остальные дефекты: сломанный
|
||
Markdown на нестандартных ссылках, вложение «скачано», которое нельзя ни открыть, ни скачать заново, вторая живая
|
||
синхронизация через повтор команды и подделка строк ответа MCP переводами строк из данных Eva.
|
||
|
||
Владелец 27.10.2026 добавил в пакет показ скачанных картинок в тексте страницы «Вики»: сейчас картинку можно только
|
||
сохранить файлом.
|
||
|
||
## What Changes
|
||
|
||
- **Перевод HTML** (T6.1–T6.5): миниатюра внутри ссылки на вложение распознаётся на любой глубине вложенности. Вложение
|
||
внутри ссылки на страницу выводится отдельной ссылкой рядом со ссылкой на страницу, без вложенных ссылок. При
|
||
повторе `ref` в списке агента побеждает первая запись. Пробелы и круглые скобки во внешних адресах кодируются.
|
||
Хвостовая `\` в тексте ссылки на страницу экранируется.
|
||
- **Вложение без файла** (T8.2): `POST /wiki/attachments/{id}/fetch` для вложения в `ready`, чей файл пропал из
|
||
`files/`, ставит скачивание заново, а не отвечает `ready`.
|
||
- **Одна синхронизация на корень** (T8.3): пакет с `wiki_sync` (в том числе повтор команды) отклоняется, если у проекта
|
||
уже идёт `wiki_sync` с тем же корнем.
|
||
- **MCP вики** (T9.3): переводы строк в названии, пути, имени вложения и фрагменте поиска заменяются пробелом.
|
||
- **Картинки в тексте** (решение владельца): на странице «Вики» вложение-картинка после скачивания показывается в
|
||
тексте на месте ссылки; уже скачанные картинки показываются при открытии страницы. Без клика хаб ничего не скачивает.
|
||
Картинку определяет хаб по имени файла в адресе Eva: поле `image` у вложений в `GET /wiki/pages/{code}`.
|
||
|
||
## Non-Goals
|
||
|
||
- Остальные маркеры #94 (M-7, T7.x, T8.4–T8.9, T9.1–T9.7 кроме T9.3 и др.) — остаются в #94.
|
||
- eva-agent#4 Н-1 (битый `agent.json`) — отдельный bounded PR в eva-agent.
|
||
- Автоматическое скачивание картинок при открытии страницы — владелец выбрал «только после нажатия».
|
||
- Картинки в Markdown-копии на диске и в MCP: копия и ответы MCP не меняются, картинки — только в веб-приложении.
|
||
- Показ SVG в тексте.
|
||
|
||
## Capabilities
|
||
|
||
### Modified Capabilities
|
||
|
||
- `wiki` — «Синхронизация вики», «Markdown-копия вики», «Вложения вики по запросу», «Маршруты вики».
|
||
- `mcp` — «MCP вики».
|
||
- `web-app` — «Вики проекта».
|
||
|
||
## Impact
|
||
|
||
- Хаб: `modules/wiki/convert.py`, `attachments.py`, `api.py`, `commands.py`, `mcp.py`; тесты `tests/test_wiki_*`.
|
||
- Веб: `web/src/modules/wiki/` (`PageView.tsx`, `download.ts`, `wiki.css`) и тесты рядом.
|
||
- Схема базы и контракт с агентом `wiki` не меняются; в ответе `GET /wiki/pages/{code}` у вложений новое поле `image`. Выкатка: `make web` + перезапуск хаба.
|