61 lines
6.0 KiB
Markdown
61 lines
6.0 KiB
Markdown
## Why
|
||
|
||
Владелец 28.10.2026 хотел посмотреть, что за день сделали аналитики в вики проекта, и не смог: копия вики в хабе без
|
||
истории, MCP показывает только дату синхронизации. Ни кто правил, ни когда, ни что поменялось — не видно (sdlc-hub#140).
|
||
Открытый вопрос из ARCHITECTURE.md «История страниц вики» закрывается этим change.
|
||
|
||
Проверка API Eva 28.10.2026 (скрипты `eva_probe.py`, `eva_probe2.py` на виртуалке, токеном eva-agent) показала, что
|
||
история есть: у каждой версии страницы (`CmfDocumentHistory`, коды `DOCH-…`) — полный текст на момент версии, автор,
|
||
время и признак публикации; выборка по странице — фильтром `parent_id`. Журнал `CmfAudit` токену агента закрыт,
|
||
истории версий вложений в API нет.
|
||
|
||
## What Changes
|
||
|
||
- **Версии страниц в синхронизации.** Команда `wiki_sync` дополнительно забирает опубликованные версии страниц дерева
|
||
проекта: постранично, только новые (хаб передаёт агенту уже известные коды версий), первый прогон — вся история.
|
||
Агент шлёт версии пачками новым маршрутом `POST /agent/wiki/versions`; хаб переводит их HTML в Markdown и вместе с
|
||
копией одной операцией записывает в новую таблицу версий. Версии страниц вне дерева не запрашиваются и не хранятся.
|
||
- **Маршруты истории.** `GET /wiki/changes` — лента опубликованных правок проекта за период (время, автор, страница,
|
||
«+строк / −строк»); `GET /wiki/pages/{code}/versions` — версии страницы; `GET /wiki/pages/{code}/diff` — unified diff
|
||
одной правки против предыдущей, частями. `GET /wiki/pages/{code}` получает поля последней правки.
|
||
- **MCP вики.** Новые инструменты `changes` и `diff`; шапка `page` — строка «изменено: когда, кто»; `sync` отвечает
|
||
только «ок»/ошибкой. `changes`, `diff`, `page` читают только копию хаба.
|
||
- **Веб: общая «Лента».** Лента изменений переезжает из раздела Jira в общий пункт «Лента» боковой панели (`/app/feed`)
|
||
с переключателями источников «Jira» и «Вики». Правки вики сгруппированы по странице; нажатие на правку открывает окно
|
||
с диффом поверх ленты. Модули дают ленте свои источники через контракт веб-модуля.
|
||
- **eva-agent** (aep/eva-agent#7, свой design-only change): шаг версий в `wiki_sync`, `AGENT_VERSION` 2.
|
||
|
||
## Non-Goals
|
||
|
||
- Черновики и неопубликованные правки — решение владельца 28.10.2026: только опубликованные.
|
||
- Версии файлов-вложений — решение владельца: свежий файл по запросу, как сейчас (`attachment`).
|
||
- Журнал аудита Eva (`CmfAudit`) — закрыт токену агента.
|
||
- Страницы вики вне дерева корня проекта — решение владельца: только зона видимости проекта.
|
||
- Запись в Eva, откат версий, комментарии к правкам.
|
||
- Ускорение фоновой синхронизации: частота прежняя (`wiki_auto_sync_hours`).
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
Нет.
|
||
|
||
### Modified Capabilities
|
||
|
||
- `wiki` — новые требования «История правок страниц» и «Маршруты истории вики».
|
||
- `mcp` — «MCP вики».
|
||
- `web-app` — «Лента изменений», «Оболочка и адреса»; новое требование «Правки вики в ленте».
|
||
|
||
## Impact
|
||
|
||
- Хаб: `modules/wiki/` — `schema` (таблицы версий и стадии версий), `commands` (`deliver_params`, учёт версий в
|
||
отчёте), `stage` (приём версий), `sync` (запись версий в `commit`, удаление вне дерева), `convert` (режим без id
|
||
вложений), `api` (новые маршруты), `mcp`, `projects` (сброс корня удаляет версии); новый модуль чтения истории
|
||
(лента, дифф). Тесты `tests/test_wiki_*`.
|
||
- Веб: `web/src/shell/` (страница общей ленты, период), `web/src/modules/types.ts` (источник ленты в `HubModule`),
|
||
`web/src/modules/jira/feed/` (источник Jira вместо страницы), `web/src/modules/wiki/` (источник вики, окно диффа).
|
||
- Контракт с агентом `wiki`: новый маршрут `POST /agent/wiki/versions`, поле `known_versions` в параметрах выдачи
|
||
`wiki_sync`, поле `versions` в отчёте `done`. Агент v1 работает как прежде — история не пополняется.
|
||
- Схема базы: две новые таблицы модуля `wiki`. Выкатка: `git pull` → kickstart хаба → `make web` → `/mcp` reconnect →
|
||
публикация eva-agent v2 → после `agent_status` с v2 владелец поднимает `wiki_min_agent_version`.
|