| Предыдущая версия справа и слеваПредыдущая версия | |
| sharixopen:knowledge:architecture:system_layers [2026/10/31 11:04] – [sharixknowledge] approved package sx_knowledge_api_open | sharixopen:knowledge:architecture:system_layers [2026/10/31 16:30] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open |
|---|
| "page": "sharixopen:knowledge:architecture:system_layers", | "page": "sharixopen:knowledge:architecture:system_layers", |
| "area": "open", | "area": "open", |
| "type": "reference", | "type": "architecture", |
| "title": "Слои архитектуры и разделение ответственности", | "title": "Слои архитектуры и разделение ответственности", |
| "status": "review", | "status": "review", |
| "ShariXKnowledgeOpenKnowledgeArchitectureSecurityboundaries", | "ShariXKnowledgeOpenKnowledgeArchitectureSecurityboundaries", |
| "ShariXKnowledgeOpenKnowledgeArchitectureRepositories", | "ShariXKnowledgeOpenKnowledgeArchitectureRepositories", |
| "ShariXKnowledgeOpenKnowledgeDomainOrderticket" | "ShariXKnowledgeOpenKnowledgeDomainOrderticket", |
| | "ShariXKnowledgeLayerModel", |
| | "ShariXKnowledgeVerification", |
| | "ShariXKnowledgeClassification" |
| ] | ] |
| }, | }, |
| "extensions": { | "extensions": { |
| "taxonomy": { | "taxonomy": { |
| "domain": "reference", | "domain": "architecture", |
| "lifecycle": "unspecified", | "lifecycle": "implemented", |
| | "component": "dbsynce, tickets, webservice_running, handlers_backend, core", |
| "parents": [ | "parents": [ |
| "ShariXKnowledgeArchitecture" | "ShariXKnowledgeArchitecture" |
| ], | ], |
| "terms": [] | "terms": [ |
| | "audience_developer", |
| | "audience_integrator", |
| | "audience_reviewer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "product_shared", |
| | "material_architecture", |
| | "topic_architecture_models", |
| | "topic_architecture_boundaries", |
| | "topic_api_contracts" |
| | ] |
| }, | }, |
| "glossary": [], | "glossary": [], |
| "kind": "metadata_only", | "kind": "metadata_only", |
| "basis": "Устаревший ID заменён действующим ID той же страницы раздела; URL и тело сохранены." | "basis": "Устаревший ID заменён действующим ID той же страницы раздела; URL и тело сохранены." |
| | }, |
| | "classification": { |
| | "schema": "sharix.knowledge.classification.v1", |
| | "products": [ |
| | "sharix_open", |
| | "shared" |
| | ], |
| | "audiences": [ |
| | "developer", |
| | "integrator", |
| | "reviewer", |
| | "ai" |
| | ], |
| | "material": "architecture", |
| | "topics": [ |
| | "architecture/models", |
| | "architecture/boundaries", |
| | "api/contracts" |
| | ], |
| | "tag_terms": [ |
| | "audience_developer", |
| | "audience_integrator", |
| | "audience_reviewer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "product_shared", |
| | "material_architecture", |
| | "topic_architecture_models", |
| | "topic_architecture_boundaries", |
| | "topic_api_contracts" |
| | ], |
| | "registry_document": "ShariXKnowledgeClassification", |
| | "state_meaning": "implemented — проверены исходники, не runtime; not_applicable — концепция/нормативный контракт без утверждения готовой функции; review — редакционный статус" |
| | }, |
| | "source_evidence": [ |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "models/orders.py", |
| | "sha256": "4a5dbbec8a62ed3ca933ae5494032ba2a8a4369c7c1ece4011c98755df23faf2" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "models/documents.py", |
| | "sha256": "3a6f0ac50a211beede66f46e07302d16e2e02f99e117fab5bfbe738731c0c3cf" |
| | }, |
| | { |
| | "repository": "sharix-open-backend", |
| | "commit": "b70f6989f4c8616725b38f72fc15b8981a5dc47b", |
| | "path": "lib/integration_ports.py", |
| | "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066" |
| | }, |
| | { |
| | "repository": "sharix-open-tickets", |
| | "commit": "edc0093b12ad3fd917f724985de8688b87f4ecd5", |
| | "path": "models/ticket.py", |
| | "sha256": "4768d9ef47b61bf3ae98bf2749ed142adc477978b44de29177363ba9664baa43" |
| | }, |
| | { |
| | "repository": "sharix-open-webservice-running", |
| | "commit": "d5b966a88b2dc782ec3ca7660be17feef5193019", |
| | "path": "models/local_examples.py", |
| | "sha256": "07ac086d9eb18e0a1d473ed316184d1d924858c966d1722654638034a8bdb36c" |
| | }, |
| | { |
| | "repository": "sharix-open-webservice-running", |
| | "commit": "d5b966a88b2dc782ec3ca7660be17feef5193019", |
| | "path": "models/execution.py", |
| | "sha256": "b2c95fa19a5b12ca0a7616511075781dba68356bc91a095244c93ecb2ecf4fe2" |
| | }, |
| | { |
| | "repository": "sharix-open-webservice-running", |
| | "commit": "d5b966a88b2dc782ec3ca7660be17feef5193019", |
| | "path": "models/execution_extensions.py", |
| | "sha256": "6e1a13ab3e07724c3c49d603f9e60ab0236cd517e059a0b663d4b47a7655b616" |
| | }, |
| | { |
| | "repository": "sharix-open-webservice-running", |
| | "commit": "d5b966a88b2dc782ec3ca7660be17feef5193019", |
| | "path": "apps.py", |
| | "sha256": "dde02f8eae3449c973b6c0ef66053daa7563116149ccd4da00511fdad50c8e46" |
| | }, |
| | { |
| | "repository": "sharix-open-handlers-examples", |
| | "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", |
| | "path": "runtime_provider.py", |
| | "sha256": "d50f91abd5f9da4149454983cc497f7598474fa6b6a80ecaa5c746a7f9dfef57" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "edb402d73b667061b3a9e8ac621aaf14de87c9aa", |
| | "path": "core/settings.py", |
| | "sha256": "b1be87043282fe0d9792a887aebfd7279abad6c91e927ba6ec15dc81747ca691" |
| | }, |
| | { |
| | "repository": "sharix-open-webapp-base", |
| | "commit": "edb402d73b667061b3a9e8ac621aaf14de87c9aa", |
| | "path": "core/urls.py", |
| | "sha256": "623d4d83ba6a740db2a60d0a9b812a9dfcb2071dc169745431274f535b54ae76" |
| | } |
| | ], |
| | "editorial_review": { |
| | "date": "2026-10-31", |
| | "scope": "Конкретные объекты/действия/границы и списки по owning code; концепции отделены от существующих операций", |
| | "runtime_checked": false, |
| | "source_files_verified": 11 |
| } | } |
| }, | }, |
| "content_sha256": "5435659ff7c9afad598b14fb5a8b858704dfc6f85986708e0a11e74077419862", | "content_sha256": "b6483a3ea7fbb3477141bc0321eb7f24ebeee107c3210c85a04fc35550b3a99d", |
| "schema": 1 | "schema": 1 |
| } | } |
| ~~NOCACHE~~ | ~~NOCACHE~~ |
| |
| **Тип:** architecture · **Статус:** сведения требуют сверки с действующей установкой; архитектурные правила сформулированы как целевой контракт. | **Назначение:** [[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:topics|Архитектура → Владение моделями]] · [[sharixopen:knowledge:classification:topics|Архитектура → Границы]] · [[sharixopen:knowledge:classification:topics|API → Контракты]]. |
| | |
| | |
| | |
| | ===== Как читать слои ===== |
| | Слои ShariX Open — границы владения данными и операциями, а не последовательность импортов всех приложений друг в друга. Для краткой навигации используйте [[sharixopen:knowledge:architecture:layers|карту источников]]; здесь описано, почему изменение относится к определённому владельцу. |
| | |
| | ===== Общая предметная модель: dbsynce ===== |
| | * Orders, клиентские/корпоративные профили, Company, Service/Provider/Resource, Permissions/Relationship. |
| | * Documents/DocumentVersion и definitions/checks/requirement rules. |
| | * Scope метасервиса, канонические правила изменения и проверки actor/context. |
| | * Чистые контракты вроде documents_core и integration ports для адаптеров. |
| | |
| | Не добавляйте поле в синхронизируемую модель только ради локального интерфейса. Сначала определите, должен ли другой хост понимать его смысл и кто отвечает за изменение. |
| | |
| | ===== Жизненный цикл заявки: tickets ===== |
| | Ticket хранит тип/статус, участников, комментарии, вложения и события. Его состояние помогает маршрутизировать процесс, но не является доказательством успешной внешней операции или выполненного платежа. История документа и локальный результат этапа не переносятся в Ticket вместо своих моделей. |
| | |
| | Событие после commit уведомляет владельца новой стадии; потерянная доставка не откатывает сохранённое состояние. Обработчик должен уметь перечитать канонический объект. |
| | |
| | ===== Локальное исполнение: webservice_running ===== |
| | * OrdersLocal хранит локальные дополнительные данные и географические представления, связанные с Orders; это не второй общий Order. |
| | * OrderExecution привязан OneToOne к Order и сохраняет execution-policy snapshot конкретного заказа. |
| | * Stage — локальная единица исполнения со статусами PENDING/COMPLETED, правилами видимости и blocks_order_completion. |
| | * Artifact, Correspondence и ExternalEvent имеют собственный execution context и проверку доступа. |
| | |
| | Изменение design-time политики после создания заказа не должно молча менять сохранённый OrderExecution snapshot. Новый локальный этап или материал изменяется через owning execution service и его проверки, а не прямой подменой статуса заказа. |
| | |
| | ===== Процесс и транспорт: handlers ===== |
| | * Blockly workspace описывает явные действия/ветвления/ожидания; из него генерируется Python. |
| | * ''handlers_backend'' предоставляет общий runtime, очередь/defer, transport и provenance. |
| | * ''handlers_examples'' связывает runtime с каталогом ShariX Open и его настройками/путями. |
| | * Narrow backend action сохраняет предметный результат; локальный reason/room и XMPP send не заменяют его. |
| | |
| | Не прячьте новый workflow только в ручном generated Python и не переносите доменную модель в процессный буфер handler. |
| | |
| | ===== Сборка и optional-адаптеры ===== |
| | ''core.settings/core.urls'' определяют состав и маршруты сборки. AppConfig может зарегистрировать callback в backend-owned port: backend вызывает контракт, не импортируя web-layer ради discovery. Например, webservice_running регистрирует execution/verification adapters при готовности приложения. |
| |
| **Раздел:** [[sharixopen:knowledge:foundation:start|ShariX Open: система знаний и архитектурные правила]] | Отсутствующий provider должен давать предусмотренное ограничение/ошибку, а не вымышленный успешный результат. Source checkout, Django runtime app, contribution manifest и фактический service result проверяются отдельно. |
| |
| ===== Основные слои ===== | ===== Закрытые расширения ===== |
| * ''dbsynce'' — ограниченный синхронизируемый слой заказа, идентичности, отношений, документов и требований. | Service Constructor — закрытый компонент. Здесь обозначена только граница: общая система может потреблять согласованные определения/снимки через предусмотренный контракт, но внутренние модели и алгоритмы конструктора описываются во внутренней базе знаний. Подробности и доступ уточняются у ответственных Platform. Shared не означает открытую лицензию каждого расширения. |
| * ''tickets'' — общий жизненный цикл Ticket, запросы ''ST_REQUEST'', комментарии, вложения и события. | |
| * ''webservice_running'' — исполнение заказа: этапы, контекст, артефакты, внешние события, связанные заказы и дополнительные расходы. | |
| * ''service-constructor'' — определения процессов и требований на этапе проектирования услуги; runtime получает версионированный снимок. | |
| * ''handlers'' — явные переходы и действия в бизнес-процессе, без переноса владеления данными. | |
| * ''payments'', Nextcloud, Moodle, appointments и прочие расширения работают через свои границы. | |
| ===== Границы ===== | |
| Сервис не импортирует закрытую модель Platform. Подключение к Platform выполняется через контракты и API. Установка общего приложения в составе Platform не передаёт ей право владения его моделями. | |
| |
| ===== Разделы и материалы ===== | ===== Проверка архитектурного изменения ===== |
| * [[sharixopen:knowledge:architecture:model_ownership|Владение моделями и запрещённые зависимости]] | - Назовите владельца новых данных и единственную каноническую операцию изменения. |
| * [[sharixopen:knowledge:architecture:api_contracts|API и межмодульные контракты]] | - Проверьте actor, объект, scope и возвращаемый результат. |
| * [[sharixopen:knowledge:architecture:security_boundaries|Безопасность, разделение доступа и минимизация данных]] | - Разделите изменяемую конфигурацию, snapshot действующего заказа и процессное ожидание. |
| * [[sharixopen:knowledge:architecture:repositories|Топология репозиториев и владение исходным кодом]] | - Проверьте повтор/конкурентное действие и восстановление после неизвестного ответа. |
| | - При изменении shared опубликуйте код и передайте ответственному Platform для отдельной проверки/принятия. |
| |
| ~~SHARIX_KNOWLEDGE_GRAPH~~ | Файлы, формы и названия слоёв подтверждают структуру исходников; успешная работа установки проверяется по [[sharixopen:knowledge:development:verification|критериям приёмки]]. |
| |
| ~~SHARIX_KNOWLEDGE_CATALOG~~ | ===== Проверенные источники ===== |
| | Проверено по Git-исходникам 31.10.2026. Состояние исходников отделено от состояния конкретной установки; команды ниже при редакционной проверке не выполнялись, бизнес-данные и значения секретов не читались. |
| |
| ===== Связанные понятия ===== | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/models/orders.py|sharix-open-backend / models/orders.py]]. |
| * [[sharixopen:knowledge:architecture:model_ownership|Владение моделями и запрещённые зависимости]] | * [[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:order_ticket|Заказ, Ticket и PROCESS]] | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/b70f6989f4c8616725b38f72fc15b8981a5dc47b/lib/integration_ports.py|sharix-open-backend / lib/integration_ports.py]]. |
| * [[sharixopen:knowledge:architecture:api_contracts|API и межмодульные контракты]] | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/edc0093b12ad3fd917f724985de8688b87f4ecd5/models/ticket.py|sharix-open-tickets / models/ticket.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webservice-running/src/commit/d5b966a88b2dc782ec3ca7660be17feef5193019/models/local_examples.py|sharix-open-webservice-running / models/local_examples.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webservice-running/src/commit/d5b966a88b2dc782ec3ca7660be17feef5193019/models/execution.py|sharix-open-webservice-running / models/execution.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webservice-running/src/commit/d5b966a88b2dc782ec3ca7660be17feef5193019/models/execution_extensions.py|sharix-open-webservice-running / models/execution_extensions.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webservice-running/src/commit/d5b966a88b2dc782ec3ca7660be17feef5193019/apps.py|sharix-open-webservice-running / apps.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/runtime_provider.py|sharix-open-handlers-examples / runtime_provider.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/edb402d73b667061b3a9e8ac621aaf14de87c9aa/core/settings.py|sharix-open-webapp-base / core/settings.py]]. |
| | * [[https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base/src/commit/edb402d73b667061b3a9e8ac621aaf14de87c9aa/core/urls.py|sharix-open-webapp-base / core/urls.py]]. |
| |
| ~~SHARIX_KNOWLEDGE_RELATED~~ | ~~SHARIX_KNOWLEDGE_RELATED~~ |
| |