feat: R2 поддержки Cloud — запись страниц и вложений#57
Merged
Conversation
…а Cloud - ConfluenceCloudApiClient: CreatePageAsync (POST /pages, spaceId из ключа через кэшируемый резолв GET /spaces?keys=, parentId), UpdatePageAsync (PUT со status:"current", версия ровно current+1, конфликт → 409 → ConfluenceConflictException; версия результата берётся из ответа — no-op PUT на Cloud не поднимает версию); переносы через parentId работают - вложения: upload/update data через живые v1-эндпоинты под /wiki (multipart + X-Atlassian-Token: nocheck), delete через v2; media-type хелперы вынесены в ConfluenceApiHelpers (общие для обоих клиентов) - нормализатор: стрипание ac:schema-version и local-id/ac:local-id (подтверждённый на живом Cloud шум сервера/редактора) — устраняет фантомный «изменено на сервере» в compare; эпоха канонизации 2→3, golden vector обновлён - e2e на живом Cloud: upload create (страницы+вложение), force update с пропуском неизменённых, конфликт «обе стороны» в merge, разрешение, итоговый compare без расхождений - 471 тест зелёный (+14); CHANGELOG/README (RU+EN), agent-instructions Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Фаза R2 (+ бывшая R3): полная поддержка Confluence Cloud — все операции записи работают.
Запись страниц (v2)
CreatePageAsync:POST /pages— числовойspaceIdрезолвится из ключа (GET /spaces?keys=, кэш в обе стороны: чтения сеют кэш для записи);parentId; без родителя страница уходит под домашнюю страницу пространства (v2-аналог «корня»).UpdatePageAsync:PUT /pages/{id}соstatus:"current"; семантикаknownVersion+1сохранена; конфликт версий → чистый 409 (errors[].code=CONFLICT, проверено вживую) →ConfluenceConflictException; версия результата берётся из ответа — live-проба показала, что no-op PUT на Cloud принимается, но версию не поднимает; переносы черезparentIdподтверждены пробой.Вложения
X-Atlassian-Token: nocheck), delete — v2. Media-type-логика (extensionless-вложения, drawio-твины) вынесена вConfluenceApiHelpersи общая для обоих клиентов.Нормализатор (эпоха 2→3)
Live e2e выявил фантомный «изменено на сервере» в
compareдля созданных утилитой страниц с макросами: Cloud добавляетac:schema-version(и редактор —local-id/ac:local-id). Нормализатор теперь стрипает их при сравнении (на отправляемый контент не влияет), golden vector обновлён по контракту изconfluence-import-export.mdc§11. Одноразовый сброс хэшей у всех пользователей — fallback на mtime до следующей синхронизации (by design).Проверка
upload create(страницы + вложение + маркеры) → forceupload update(5 неизменённых пропущены, страница+вложение обновлены) → рукотворный конфликт «обе стороны» →upload mergeкорректно защитил обе стороны → разрешение → итоговыйcompare: ноль расхождений.Cloud-поддержка утилиты на этом полная: Ф0 → R1 (чтение, v2.17.0) → R2 (запись, этот PR → v2.18.0).
🤖 Generated with Claude Code