| |
| sharixopen:knowledge:domain:documents [2026/10/17 20:49] – [sharixknowledge] approved package sx_knowledge_api_open | sharixopen:knowledge:domain:documents [2026/10/31 16:25] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open |
|---|
| "page": "sharixopen:knowledge:domain:documents", | "page": "sharixopen:knowledge:domain:documents", |
| "area": "open", | "area": "open", |
| "type": "reference", | "type": "contract", |
| "title": "Логические документы, проверка и переиспользование", | "title": "Логические документы, проверка и переиспользование", |
| "status": "review", | "status": "review", |
| "ShariXKnowledgeOpenKnowledgeDomainStart", | "ShariXKnowledgeOpenKnowledgeDomainStart", |
| "ShariXKnowledgeOpenKnowledgeDomainStrequest", | "ShariXKnowledgeOpenKnowledgeDomainStrequest", |
| "ShariXKnowledgeOpenKnowledgeDomainRequirements" | "ShariXKnowledgeOpenKnowledgeDomainRequirements", |
| | "ShariXKnowledgeOpenKnowledgeArchitectureModelownership", |
| | "ShariXKnowledgeClassification" |
| ] | ] |
| }, | }, |
| "extensions": { | "extensions": { |
| "taxonomy": { | "taxonomy": { |
| "domain": "reference", | "domain": "documents", |
| "lifecycle": "unspecified", | "lifecycle": "implemented", |
| | "component": "dbsynce documents, documents_core, tickets", |
| "parents": [ | "parents": [ |
| "ShariXKnowledgeOpenKnowledgeDomainStart" | "ShariXKnowledgeOpenKnowledgeDomainStart" |
| ], | ], |
| "terms": [] | "terms": [ |
| | "audience_developer", |
| | "audience_integrator", |
| | "audience_administrator", |
| | "audience_support", |
| | "audience_reviewer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "product_shared", |
| | "material_contract", |
| | "topic_documents_lifecycle", |
| | "topic_security_object_access", |
| | "topic_security_requirements" |
| | ] |
| }, | }, |
| "glossary": [] | "glossary": [], |
| | "classification": { |
| | "schema": "sharix.knowledge.classification.v1", |
| | "products": [ |
| | "sharix_open", |
| | "shared" |
| | ], |
| | "audiences": [ |
| | "developer", |
| | "integrator", |
| | "administrator", |
| | "support", |
| | "reviewer", |
| | "ai" |
| | ], |
| | "material": "contract", |
| | "topics": [ |
| | "documents/lifecycle", |
| | "security/object_access", |
| | "security/requirements" |
| | ], |
| | "tag_terms": [ |
| | "audience_developer", |
| | "audience_integrator", |
| | "audience_administrator", |
| | "audience_support", |
| | "audience_reviewer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "product_shared", |
| | "material_contract", |
| | "topic_documents_lifecycle", |
| | "topic_security_object_access", |
| | "topic_security_requirements" |
| | ], |
| | "registry_document": "ShariXKnowledgeClassification", |
| | "state_meaning": "implemented — проверены исходники, не runtime; not_applicable — концепция/нормативный контракт без утверждения готовой функции; review — редакционный статус" |
| | }, |
| | "source_evidence": [ |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "models/documents.py", |
| | "sha256": "3a6f0ac50a211beede66f46e07302d16e2e02f99e117fab5bfbe738731c0c3cf" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "lib/document_drafts.py", |
| | "sha256": "383b117f01fdd9d16de3ceb9afb1ccf0bf3104c4966b23e987b8a90e9a46f071" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "lib/document_verification.py", |
| | "sha256": "1692ec40fb8503368a38e154dc4c53644c25a825efc91a87b34bde8065b387bb" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "lib/documents_core.py", |
| | "sha256": "a006973508b0b8032d8f3460cda9a462abcfe05c8f5b4b99fa93c3dcd94d1e0b" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "lib/requirement_checks.py", |
| | "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "lib/document_file_access.py", |
| | "sha256": "1a064832e72737c07a3cbcc0a4bb96c0d4ef5f46678031b759d57f2044c5844f" |
| | } |
| | ], |
| | "editorial_review": { |
| | "date": "2026-10-31", |
| | "scope": "Конкретные объекты/действия/границы и списки по owning code; концепции отделены от существующих операций", |
| | "runtime_checked": false, |
| | "source_files_verified": 6 |
| | } |
| }, | }, |
| "content_sha256": "dd11bfcadb4f1312a9fb0a5a547e031eec780cc7b50bdec5c21e6698f0ce7867", | "content_sha256": "21f4e401f16b220e70ba26740db2fee7cf3bf82c6b81a5dcb573007d491294de", |
| "schema": 1 | "schema": 1 |
| } | } |
| ~~NOCACHE~~ | ~~NOCACHE~~ |
| |
| **Тип:** contract · **Статус:** сведения требуют сверки с действующей установкой; архитектурные правила сформулированы как целевой контракт. | **Назначение:** [[sharixopen:knowledge:classification:materials|Контракт]]. **Продукт:** [[sharixopen:knowledge:classification:products|ShariX Open]] · [[sharixopen:knowledge:classification:products|Общий компонент]]. |
| | |
| | **Для кого:** [[sharixopen:knowledge:classification:audiences|Разработчик]] · [[sharixopen:knowledge:classification:audiences|Интегратор]] · [[sharixopen:knowledge:classification:audiences|Администратор]] · [[sharixopen:knowledge:classification:audiences|Поддержка]] · [[sharixopen:knowledge:classification:audiences|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences|Нейросеть]]. |
| | |
| | **Темы:** [[sharixopen:knowledge:classification:topics|Документы → Жизненный цикл]] · [[sharixopen:knowledge:classification:topics|Доступ → Объектные права]] · [[sharixopen:knowledge:classification:topics|Доступ → Требования]]. |
| | |
| | |
| | |
| | ===== Что является документом ShariX Open ===== |
| | * **Documents** — логическая запись документа в предметной области: тип, владелец/контекст, данные текущего draft и его revision. |
| | * **DocumentFile** — изменяемые файлы draft; они не заменяют историю проверки. |
| | * **DocumentTypeDefinition** — schema структурированных полей, file policy, identity fields и verification policy типа. |
| | * **DocumentVersion** — проверенная редакция: draft_revision, structured data, expiry, identity fingerprint, уровень/источник/автор проверки и Ticket. |
| | * **DocumentVersionFile** — снимок файла проверенной версии, включая исходный public ID, имя, размер и SHA-256. |
| | |
| | Файл, логический документ, проверенная версия и заявка ST_REQUEST — четыре разных объекта. Их наличие не следует обозначать одной отметкой «документ готов». |
| | |
| | ===== Изменение draft ===== |
| | - Provisioning создаёт либо переиспользует draft в области target/user/type; тип документа сам не даёт доступ к произвольной записи другого пользователя. |
| | - replace_document_draft меняет только mutable файлы/данные и проверяет file policy. |
| | - Изменения данных, файлов и определённых полей сдвигают draft_revision. |
| | - Старая verified version остаётся в истории; её актуальность относительно нового draft оценивается отдельно. |
| | |
| | Создание draft не подтверждает достоверность сведений. Нельзя переписывать историческую версию ради исправления текущего файла. |
| | |
| | ===== Проверка конкретной редакции ===== |
| | Каноническая ''create_verified_document_version'' под блокировкой сверяет: |
| | |
| | * ожидаемую draft_revision с текущей; |
| | * контракт ''document-verification-v1'', public ID документа и revision в verification Ticket; |
| | * идентичность документа по настроенным identity fields; |
| | * данные и файлы именно проверяемой версии. |
| | |
| | Если draft изменился после запроса, нужна новая заявка проверки. Если после реальной проверки изменились identity fields, требуется новая логическая Documents запись. Успех создаёт новую Version/VersionFile и обновляет current_verified_version; обычные save/delete проверенной истории запрещены моделью. |
| | |
| | ===== Как evidence подходит требованию ===== |
| | Чистый ''dbsynce.lib.documents_core'' проверяет schema, identity, expiry, наличие содержимого и минимальный уровень проверки. Он не импортирует ORM, не ходит в сеть и не выдаёт права. |
| | |
| | * Совместимое актуальное evidence может удовлетворить требование. |
| | * При существующем содержимом со слабой/отсутствующей/stale проверкой результат — ''needs_verification'', а не требование заново загрузить всё. |
| | * Несовместимость, expiry, conflict и отсутствие содержимого — отдельные исходы. |
| | * Ранжирование не должно предпочитать хост только по его имени; источник и применимость учитываются через контракт evidence. |
| | |
| | ===== Область, переиспользование и доступ ===== |
| | * Признак is_global не равен разрешению передавать все файлы любому сервису. |
| | * Межхостовое reuse требует отдельного действующего согласия и сохранения provenance. |
| | * Обычная оценка requirements использует локально материализованные данные, а не синхронный сетевой запрос. |
| | * Object-level доступ к логическому документу/версии проверяется отдельно: владелец, администратор либо допустимый Ticket/resource/provider context по canonical policy. |
| | * Знание URL или public ID файла не является основанием доступа. |
| | |
| | Shared semantics могут использоваться другими продуктами, включая Platform; владение их закрытыми моделями и внутренние операции описываются отдельно ответственными этого продукта. Изменения shared передаются им для проверки и принятия. |
| | |
| | ===== Диагностика ===== |
| | Сопоставьте document public ID, owner/context, draft_revision, current_verified_version, verification Ticket, schema/identity и expire_date. Затем проверьте evidence state и отдельно file ACL. Не заменяйте отказ доступа повторной загрузкой, а stale verification — редактированием исторической Version. |
| |
| **Раздел:** [[sharixopen:knowledge:domain:start|Доменная модель заказов и исполнения]] | Связанные страницы: [[sharixopen:knowledge:domain:requirements|requirements/effective access]], [[sharixopen:knowledge:domain:st_request|ST_REQUEST]] и [[sharixopen:knowledge:architecture:model_ownership|владение моделями]]. |
| |
| ===== Модель ===== | ===== Проверенные источники ===== |
| Documents — логический типизированный объект; DocumentVersion хранит версии, файлы и проверочное свидетельство. Определение типа задаёт схему, обязательные поля и правила идентификации. | Проверено по Git-исходникам 31.10.2026. Состояние исходников отделено от состояния конкретной установки; команды ниже при редакционной проверке не выполнялись, бизнес-данные и значения секретов не читались. |
| ===== Черновик и проверка ===== | |
| Создание документа ещё не подтверждает его достоверность. Проверка проходит через ''ST_REQUEST'', сохраняет актуальный запрос, результат и provenance. Подтверждённую версию не редактируют; для новой редакции необходим новый цикл. | |
| ===== Локальное и общее ===== | |
| Не всякий документ синхронизируется. Для глобального документа используется явный признак области; другой сервис получает только разрешённый результат проверки и контекст, требуемый для решения. | |
| ===== Защита ===== | |
| Факт совпадения полей, видимость файла и согласие на cross-host reuse проверяются независимо. Сервис не должен автоматически копировать все вложения из другого контекста. | |
| |
| ===== Связанные понятия ===== | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/models/documents.py|sharix-open-backend / models/documents.py]]. |
| * [[sharixopen:knowledge:domain:st_request|ST_REQUEST: запросы документов и проверок]] | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/lib/document_drafts.py|sharix-open-backend / lib/document_drafts.py]]. |
| * [[sharixopen:knowledge:domain:requirements|Требования, проверки и effective access]] | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/lib/document_verification.py|sharix-open-backend / lib/document_verification.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/lib/documents_core.py|sharix-open-backend / lib/documents_core.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/lib/requirement_checks.py|sharix-open-backend / lib/requirement_checks.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/lib/document_file_access.py|sharix-open-backend / lib/document_file_access.py]]. |
| |
| ~~SHARIX_KNOWLEDGE_RELATED~~ | ~~SHARIX_KNOWLEDGE_RELATED~~ |
| |