{ "id": "ShariXKnowledgeOpenKnowledgePublishingPackageformats", "page": "sharixopen:knowledge:publishing:package_formats", "area": "open", "type": "reference", "title": "Формат пакета и публикация ShariX Knowledge", "status": "review", "schema_version": 1, "relations": { "related_to": [ "ShariXKnowledgeHub", "ShariXKnowledgeOpenKnowledgePublishingRoutingandreview", "ShariXKnowledgeOpenKnowledgeArchitectureSecurityboundaries", "ShariXKnowledgeStandards" ] }, "extensions": { "taxonomy": { "domain": "reference", "lifecycle": "unspecified", "parents": [ "ShariXKnowledgeOpenKnowledgeStart" ], "terms": [] }, "glossary": [] }, "content_sha256": "e2aed994a97ea595317c9a07d2a166f032b5dc407a59b0295dfe0aa88a3e8d20", "schema": 1 } ====== Формат ZIP и обновление ShariX Knowledge ====== ~~NOCACHE~~ **Родительский раздел:** [[sharixopen:knowledge:start|База знаний ShariX Open]]. Эта статья — каноническая инструкция для генераторов архивов публикации. ===== Структура публикационного ZIP ===== Единый канонический формат для ''previewPackage'' / ''publishPackage'' — ''sharix.knowledge.bundle'' версии 1. В корне ZIP **только** файл манифеста и перечисленные в нём документы: manifest.json documents/ShariXKnowledgeZipContractExample.txt Не класть в архив README, вложенные ZIP, папку с именем выпуска, файлы ОС или запись каталога ''documents/''. ''documents/.txt'' — текст в UTF-8, имя файла точно совпадает с ''path'' и ''id'' в манифесте. ''sha256'' вычисляется по байтам текста. Это **проверка целостности при передаче**, не контроль существующей редакции Wiki. Пример ''manifest.json'' для примера страницы ниже: { "format": "sharix.knowledge.bundle", "version": 1, "documents": [ { "id": "ShariXKnowledgeZipContractExample", "page": "sharixopen:knowledge:examples:zip_contract_example", "area": "open", "type": "verification", "title": "Проверка пакета ShariX Knowledge", "status": "review", "schema_version": 1, "relations": {}, "extensions": {}, "path": "documents/ShariXKnowledgeZipContractExample.txt", "sha256": "987a979e8e2a0c5655cbf44b25c64c688eb49cb3d82e60112a5824d207104547" } ] } Содержимое ''documents/ShariXKnowledgeZipContractExample.txt'': ====== Проверка пакета ShariX Knowledge ====== ~~NOCACHE~~ Статья для проверки структуры публикационного ZIP. Значения: ''page'' — постоянный адрес DokuWiki; ''area'' — ''open'', ''platform'' либо ''joint''; ''id'' — синтаксически корректный ID входного пакета, который плагин согласует с существующим ID страницы; ''type'' — ''policy'', ''architecture'', ''decision'', ''contract'', ''component'', ''procedure'', ''requirement'', ''verification'' либо ''reference''; ''status'' — ''draft'', ''review'', ''approved'', ''deprecated''; ''schema_version'' равен 1. Связи ''relations'' — массивы ID документов, ''extensions.taxonomy.parents'' — ID родительских документов. Не придумывать несуществующие ID связанных страниц. Для обычного создания или обновления ''base_sha256'' **не требуется**. Плагин определяет существование страницы по ''page'' независимо от старых JSON-файлов, сохраняет её собственный ID, перезаписывает через штатный API DokuWiki и ведёт историю редакций. ===== Метаданные в исходнике страницы ===== Плагин сам добавляет в начало DokuWiki-страницы скрытый блок. Генератор ZIP не должен дублировать его вручную в тексте статьи. Пример структуры блока, которую можно увидеть в исходнике страницы: { "schema": 1, "id": "ShariXKnowledgeOpenArchitectureStart", "page": "sharixopen:knowledge:architecture:start", "area": "open", "type": "architecture", "title": "Архитектура ShariX Open", "status": "approved", "schema_version": 1, "relations": {"related_to": ["ShariXKnowledgeOpenKnowledgeModulesStart"]}, "extensions": {"taxonomy": {"domain": "architecture", "parents": [], "terms": []}} } Блок должен находиться **самым первым** в DokuWiki-источнике. Плагин не отображает его читателю; он является частью сохраняемых версий страницы. При экспорте сведения о страницах без блока выводятся из содержимого и адреса, после следующей публикации блок появляется автоматически. ===== Два входных варианта для Platform ===== Django-модуль ShariX Knowledge принимает описанный канонический ZIP и может принимать упрощённый архив с путями ''open/...txt'', ''platform/...txt'', ''joint/...txt''. Папочный формат — только входной вариант Django: перед запросом DokuWiki он преобразуется в канонический ''manifest.json'' + ''documents/''. Не отправлять папочный формат непосредственно в API DokuWiki. Через маршрутизатор Platform допустимо объединять области ''open'', ''platform'' и ''joint'' в одном **каноническом** ZIP: Platform разделяет его по целевой wiki. Если пакет отправляется напрямую в DokuWiki, допускаются только области соответствующей установки: ''open'' — публичная, ''platform'' и ''joint'' — внутренняя. По умолчанию максимум **100 документов на ZIP**. Допускаются последовательные ZIP для одной Wiki (например, 100 + 13), без переименования адресов. Проверка архивов должна учитывать ограничение в 100 и точные контрольные суммы. ===== Правила обновления ===== Документацию составлять и обновлять **по актуальным изменениям исходного кода**, а не по выгрузке старого текста Wiki. Сохранять полезные факты, дополнять и корректировать существующие статьи, не создавать дубли ради номеров версий. Авторы и генераторы не обязаны получать SHA текущих страниц из DokuWiki. Обычная замена существующей страницы публикуется после общего просмотра изменений; DokuWiki хранит историю. Сходство с другой страницей **по иному адресу** должно быть показано как выбор: объединить, перенести или создать отдельно. Удаление — отдельная явная операция ''operation=delete'' с ''delete_confirmation'' и проверкой ''AUTH_DELETE''; отсутствие файла в новом ZIP не удаляет страницу. Конфликтные страницы можно пропустить и опубликовать остальные. При просмотре различий показывать цветной построчный diff. Каждая содержательная страница должна иметь ''~~NOCACHE~~'', понятную структуру, wiki-ссылку к родительской странице и ''~~SHARIX_KNOWLEDGE_RELATED~~''. Стартовые страницы разделов дополнительно содержат явное меню ссылок, ''~~SHARIX_KNOWLEDGE_GRAPH~~'' и ''~~SHARIX_KNOWLEDGE_CATALOG~~''. Ссылки на страницы должны соответствовать реально существующим адресам и типизированным связям. ===== Смежные правила ===== * [[sharixopen:knowledge:publishing:bundle_v1|Пакет v1 и проверка содержимого]] * [[sharixopen:knowledge:publishing:routing_and_review|Open / Platform / Joint: маршруты и проверка]] * [[sharixopen:knowledge:standards:bundles|Состав пакета и приёмка]] ~~SHARIX_KNOWLEDGE_RELATED~~