{
"id": "ShariXKnowledgeAccessRequestAcceptedBPMN",
"page": "sharixopen:knowledge:scenarios:access_request_accepted",
"area": "open",
"type": "procedure",
"title": "ACCESS_REQUEST в ACCEPTED: требования и активация права",
"status": "review",
"schema_version": 1,
"relations": {
"related_to": [
"ShariXKnowledgeAccessRequestPendingBPMN",
"ShariXKnowledgeSTRequestInProcessBPMN",
"ShariXKnowledgeSTRequestDoneBPMN",
"ShariXKnowledgeOpenKnowledgeModulesHandlers",
"ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",
"ShariXKnowledgeScenarios"
],
"depends_on": [
"ShariXKnowledgeOpenKnowledgeModulesHandlers",
"ShariXKnowledgeOpenKnowledgeModulesBackenddbsynce"
],
"verified_by": [
"ShariXKnowledgeVerification"
]
},
"extensions": {
"taxonomy": {
"domain": "business_processes",
"lifecycle": "implemented",
"component": "handlers_examples, handlers_backend, dbsynce, tickets",
"parents": [
"ShariXKnowledgeScenarios"
],
"terms": [
"audience_developer",
"audience_administrator",
"audience_support",
"audience_reviewer",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_handlers_permissions",
"topic_security_permissions",
"topic_security_requirements",
"access_request",
"ticket_accepted",
"permissions",
"requirements",
"activation_gate",
"bpmn",
"ticket",
"blockly",
"generated_python"
]
},
"diagram": {
"format": "bpmn",
"executable": false
},
"source_evidence": [
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_access_request_accepted.py",
"sha256": "de79926339c168601129401449b8dfdb1fb31baeaa4a0e6bb44200ea6047f237"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "generated_handler_blocks/open_access_request_accepted.json",
"sha256": "f7a8543767cda70ad17092719edccd1d19b50de18fd31b93606767425fbe32ec"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "catalog.py",
"sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "core/blockly_runtime.py",
"sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "core/handler_operations.py",
"sha256": "28620658501c375f556e24437871620b84a17a88d0b62b2d1a3cc5deb2f14b1e"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "core/data_parsers.py",
"sha256": "d7f26f172f68e4b390f675de88fbfb3c37a58fb29d4bf3d6687b31bd7953f9e4"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "core/ejabberd_muc.py",
"sha256": "35c2eba89fab36b5c444439a87beaa516b55133991136d5370418d92a18d7bcd"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "core/requesters.py",
"sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "classes/AccessRequestTicket.py",
"sha256": "3f3a498ae76b3d878b19a8f32170fc2a71c6c6c182bf34a6ecc50edf7b0f5eff"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "ticket_blockly_codegen.py",
"sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "ticket_codegen_contract.json",
"sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "lib/tickets.py",
"sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "api/views/handler_workflow.py",
"sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "api/handler_auth.py",
"sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "utils.py",
"sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "views/ticket_detail.py",
"sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "signals.py",
"sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "services/handler_wakeup.py",
"sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "apiviews/handler_workflow.py",
"sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/activation.py",
"sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/requirement_actions.py",
"sha256": "717ef0f3e02ff8e6da103b5fdbae584b01d84d177f6e62ae677a1c5a366b71de"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/requirement_checks.py",
"sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/document_drafts.py",
"sha256": "383b117f01fdd9d16de3ceb9afb1ccf0bf3104c4966b23e987b8a90e9a46f071"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/verification_workflow.py",
"sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "models/ticket.py",
"sha256": "4768d9ef47b61bf3ae98bf2749ed142adc477978b44de29177363ba9664baa43"
}
],
"handler_process": {
"handler_id": "open_access_request_accepted",
"source_kind": "git_builtin",
"canonical_python_verified": true,
"reviewed_on": "2026-10-28",
"generator": "tools/generate_handler_bpmn.py",
"generator_sha256": "ca837a7b9e55bf58184bdf408a8035d25667ed9c5d3068ca52380b2ff5682f95",
"models": {
"logic": "c84784bdd5d6bc49f06164e114e6c4d2785ca83fddf2b180b1b54b0cf8d9a29c",
"waiting": "b3fcf22428a10764db508ca9f58a768d43ff9c84cae2a7c28527f0f7c2e70c84",
"gate": "7bf93bbfeea74a220b533c29f1c8a4ecbc9fb344bafdfbb3673f8dab262a5b49"
}
},
"classification": {
"schema": "sharix.knowledge.classification.v1",
"products": [
"sharix_open"
],
"audiences": [
"developer",
"administrator",
"support",
"reviewer",
"ai"
],
"material": "scenario",
"topics": [
"handlers/permissions",
"security/permissions",
"security/requirements"
],
"tag_terms": [
"audience_developer",
"audience_administrator",
"audience_support",
"audience_reviewer",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_handlers_permissions",
"topic_security_permissions",
"topic_security_requirements",
"access_request",
"ticket_accepted",
"permissions",
"requirements",
"activation_gate",
"bpmn",
"ticket",
"blockly",
"generated_python"
],
"registry_document": "ShariXKnowledgeClassification",
"state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста"
},
"editorial_review": {
"date": "2026-10-31",
"scope": "Конкретизация действий, условий, результатов и диагностики; перечисления; исходные BPMN сохранены",
"current_source_records_verified": 25,
"original_source_evidence_recheck": "После git fetch все исходные commits/SHA-256 совпали; дополнительные функциональные источники включены в source_evidence",
"canonical_regeneration": {
"kind": "ticket",
"compared_python_paths": [
"handlers/open_access_request_accepted.py",
"generated_handlers/open_access_request_accepted.py"
],
"generator_sources_verified": 11,
"handler_executed": false
},
"runtime_checked": false
}
},
"content_sha256": "e17e8ff016aad4b776f21e767b0e75ac98a9d57e86f25c2f3332b6e1c891f787",
"schema": 1
}
====== ACCESS_REQUEST в ACCEPTED: требования и активация права ======
~~NOCACHE~~
**Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]].
**Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#administrator|Администратор]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#recenzent_i_prijomschik|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]].
**Темы:** [[sharixopen:knowledge:classification:topics#access_request|Обработчики → ACCESS_REQUEST]] · [[sharixopen:knowledge:classification:topics#polnomochija|Доступ → Полномочия]] · [[sharixopen:knowledge:classification:topics#trebovanija|Доступ → Требования]].
**Область:** ShariX Open. **Обработчик:** ''open_access_request_accepted'', тип ''ACCESS_REQUEST'' (3), рабочий статус ''ACCEPTED'' (321). 31.10.2026 исходники повторно получены из Git. Обе Python-копии совпали с новой канонической генерацией Blockly; проверены 11 исходников генераторов. Сам обработчик и его внешние действия не запускались. Выбранная версия и работающая установка проверяются отдельно.
===== Назначение и границы =====
ACCEPTED означает одобренный запрос. Для active permission ещё требуются:
* существующая связанная Permissions;
* выполненные обязательные требования;
* успешный ответ канонической активации.
Отсутствующая permission этим handler не создаётся. ACCREQ_AUTOACCEPT здесь не проверяется: требования действуют независимо от способа принятия PENDING.
Порядок runtime:
- Прочитать связанную permission.
- Проверить requirements.
- Запросить активацию с повторным backend gate.
- Только после успеха запросить CLOSED.
Общей транзакции этих запросов нет. Предварительный ok не позволяет пропустить повторную оценку внутри активации.
BPMN имеют ''isExecutable=false''. Wiki не запускает код: runtime выполняет выбранный проверенный Python из Blockly. End event завершает показанную операцию; defer-узел на первой схеме завершает текущий проход и передаёт ожидание планировщику.
===== Решения одного прохода (BPMN) =====
{"notes": ["BPMN isExecutable=false. Генератор не исполняет handler.", "ACCEPTED — одобрение запроса, а не уже активное право.", "deferred_until — символ текущего локального срока; не имя параметра."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_access_request_accepted.py", "repository": "sharix-open-handlers-examples", "sha256": "de79926339c168601129401449b8dfdb1fb31baeaa4a0e6bb44200ea6047f237"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_access_request_accepted.json", "repository": "sharix-open-handlers-examples", "sha256": "f7a8543767cda70ad17092719edccd1d19b50de18fd31b93606767425fbe32ec"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/handler_operations.py", "repository": "sharix-open-handlers-backend", "sha256": "28620658501c375f556e24437871620b84a17a88d0b62b2d1a3cc5deb2f14b1e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/data_parsers.py", "repository": "sharix-open-handlers-backend", "sha256": "d7f26f172f68e4b390f675de88fbfb3c37a58fb29d4bf3d6687b31bd7953f9e4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/ejabberd_muc.py", "repository": "sharix-open-handlers-backend", "sha256": "35c2eba89fab36b5c444439a87beaa516b55133991136d5370418d92a18d7bcd"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "classes/AccessRequestTicket.py", "repository": "sharix-open-handlers-backend", "sha256": "3f3a498ae76b3d878b19a8f32170fc2a71c6c6c182bf34a6ecc50edf7b0f5eff"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "lib/tickets.py", "repository": "sharix-open-tickets", "sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/activation.py", "repository": "sharix-open-backend", "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_actions.py", "repository": "sharix-open-backend", "sha256": "717ef0f3e02ff8e6da103b5fdbae584b01d84d177f6e62ae677a1c5a366b71de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/document_drafts.py", "repository": "sharix-open-backend", "sha256": "383b117f01fdd9d16de3ceb9afb1ccf0bf3104c4966b23e987b8a90e9a46f071"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}]}
accepted_start
accepted_status
accepted_lookup
accepted_exists
accepted_requirements
accepted_met
accepted_activate
accepted_active
accepted_close
accepted_confirmed
accepted_remove
accepted_done
accepted_stale
accepted_stale_end
accepted_missing
accepted_missing_wait
accepted_need
accepted_need_wait
accepted_inconsistent
accepted_activation_wait
accepted_not_found
accepted_lookup_error
accepted_requirements_error
accepted_activate_error
accepted_close_error
accepted_retry
accepted_Flow_0
accepted_Flow_0
accepted_Flow_1
accepted_Flow_2
accepted_Flow_1
accepted_Flow_4
accepted_Flow_4
accepted_Flow_5
accepted_Flow_6
accepted_Flow_5
accepted_Flow_8
accepted_Flow_8
accepted_Flow_9
accepted_Flow_10
accepted_Flow_9
accepted_Flow_12
accepted_Flow_12
accepted_Flow_13
accepted_Flow_14
accepted_Flow_13
accepted_Flow_16
accepted_Flow_16
accepted_Flow_17
accepted_Flow_18
accepted_Flow_17
accepted_Flow_19
accepted_Flow_19
accepted_Flow_2
accepted_Flow_3
accepted_Flow_3
accepted_Flow_6
accepted_Flow_7
ACCESS_REQUEST_INCONSISTENCY_RECHECK_SECONDS
accepted_Flow_7
accepted_Flow_10
accepted_Flow_11
ACCESS_REQUEST_INCONSISTENCY_RECHECK_SECONDS
accepted_Flow_11
accepted_Flow_14
accepted_Flow_15
accepted_Flow_15
accepted_Flow_18
accepted_Flow_20
accepted_Flow_21
accepted_Flow_22
accepted_Flow_23
DEFERRED_TICKET_RECHECK_SECONDS. Ошибки уведомлений также попадают сюда.
accepted_Flow_20
accepted_Flow_21
accepted_Flow_22
accepted_Flow_23
* Не свой статус — запросить удаление локального Ticket и комнаты.
* Permission не найдена — уведомить администраторов, записать ''related_permission_missing'', ждать по ''ACCESS_REQUEST_INCONSISTENCY_RECHECK_SECONDS''. Отсутствующую permission этот handler не создаёт.
* Permission есть, но requirements не выполнены — уведомить автора и администраторов, записать ''requirements_pending'' и назначить тот же именованный повтор. Ticket остаётся в ''ACCEPTED''.
* Requirements выполнены — запросить активацию. При подтверждённом успехе запросить ''CLOSED''; после подтверждённого перехода убрать локальный Ticket и комнату.
* Операция активации вернула обработанный отрицательный результат — уведомить администраторов, записать ''related_permission_inconsistent'' и отложить на 900 секунд. Это текущая константа Python, а не отдельный параметр окружения.
Связь ищется по ticket_status_id с чтением максимум двух записей:
* **Нет записи:** 404.
* **Несколько записей:** 409, требуется разбор данных.
* **Ticket вышел из scope:** read также может вернуть 404.
По одному 404 нельзя доказать физическое отсутствие permission. Сначала сверить актуальный Ticket и его рабочую область.
===== Backend: подготовка действий и повторный gate (BPMN) =====
{"notes": ["BPMN isExecutable=false. Генератор не исполняет handler.", "ACCEPTED — одобрение запроса, а не уже активное право.", "deferred_until — символ текущего локального срока; не имя параметра.", "GET requirements здесь имеет side effects подготовки действий.", "Ни прямой status=0, ни исходный ok не обходят повторный gate."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_access_request_accepted.py", "repository": "sharix-open-handlers-examples", "sha256": "de79926339c168601129401449b8dfdb1fb31baeaa4a0e6bb44200ea6047f237"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_access_request_accepted.json", "repository": "sharix-open-handlers-examples", "sha256": "f7a8543767cda70ad17092719edccd1d19b50de18fd31b93606767425fbe32ec"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/handler_operations.py", "repository": "sharix-open-handlers-backend", "sha256": "28620658501c375f556e24437871620b84a17a88d0b62b2d1a3cc5deb2f14b1e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/data_parsers.py", "repository": "sharix-open-handlers-backend", "sha256": "d7f26f172f68e4b390f675de88fbfb3c37a58fb29d4bf3d6687b31bd7953f9e4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/ejabberd_muc.py", "repository": "sharix-open-handlers-backend", "sha256": "35c2eba89fab36b5c444439a87beaa516b55133991136d5370418d92a18d7bcd"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "classes/AccessRequestTicket.py", "repository": "sharix-open-handlers-backend", "sha256": "3f3a498ae76b3d878b19a8f32170fc2a71c6c6c182bf34a6ecc50edf7b0f5eff"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "lib/tickets.py", "repository": "sharix-open-tickets", "sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/activation.py", "repository": "sharix-open-backend", "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_actions.py", "repository": "sharix-open-backend", "sha256": "717ef0f3e02ff8e6da103b5fdbae584b01d84d177f6e62ae677a1c5a366b71de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/document_drafts.py", "repository": "sharix-open-backend", "sha256": "383b117f01fdd9d16de3ceb9afb1ccf0bf3104c4966b23e987b8a90e9a46f071"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}]}
gate_start
gate_scope
gate_ensure
gate_evaluate
gate_response
gate_request
gate_lock
gate_gate
gate_ok
gate_save
gate_event
gate_end
gate_deny
gate_Flow_0
gate_Flow_0
gate_Flow_1
Обязательные черновики документов и попытки проверок, связанные ST_REQUEST при наличии настроенной очереди.
gate_Flow_1
gate_Flow_2
gate_Flow_2
gate_Flow_3
gate_Flow_3
gate_Flow_4
gate_Flow_4
gate_Flow_5
gate_Flow_5
gate_Flow_6
gate_Flow_6
gate_Flow_7
gate_Flow_8
status=0, check_date; checked_by из assigned_to при наличии. Для METASERVICE-CLIENT/CORP-CLIENT синхронизировать соответствующую доменную запись.
gate_Flow_7
gate_Flow_9
gate_Flow_9
gate_Flow_10
gate_Flow_10
gate_Flow_8
GET ''dbsynce/api/handler/ticket/{ticket_id}/requirements/?model=permission'' требует capability ''related.requirements.read'' и текущий Ticket scope. В этой реализации GET не является чистым чтением: перед оценкой он вызывает ''ensure_requirement_actions''. Канонический evaluator остаётся read-only, а orchestration подготавливает недостающие обязательные черновики документов, попытки RequirementCheck и связанные профильные ST_REQUEST там, где это предусмотрено настройками.
Подготовка действий соблюдает доменные правила:
* создаёт или переиспользует необходимые действия;
* не навязывает необязательные требования;
* не считает отсутствие CheckDefinition успехом;
* требует правильно настроенной очереди для ручной проверки;
* направляет проверку в очередь, соответствующую её области.
Необязательный публичный порт может подготовить сведения о встрече. Это организация, а не положительный результат проверки.
После ''ok=true'' runtime запрашивает ''dbsynce/api/handler/ticket/{ticket_id}/permission/'' с действием ''set_status'' и ''status=0''. Backend проверяет capability ''related.permission.status'', scope, единственность связи и блокирует строки Ticket/permission. Установка active через совместимый ''set_status'' проходит тот же ''activate_object_if_requirements_met'', что и явная activate-операция: повторная подготовка действий и новая оценка обязательных требований. Прямой ''status=0'' не является обходом gate.
Успешная активация сохраняет:
* active у permission;
* дату проверки;
* checked_by из assigned_to, когда он задан;
* Event операции.
Для METASERVICE-CLIENT и CORP-CLIENT синхронизируются соответствующие Client/CorpClient с учётом связи Ticket. Источником права остаётся Permissions; доступ к интерфейсам определяется их ACL.
===== Внешний цикл выполнения требований и пробуждение (BPMN) =====
{"notes": ["BPMN isExecutable=false. Генератор не исполняет handler.", "ACCEPTED — одобрение запроса, а не уже активное право.", "deferred_until — символ текущего локального срока; не имя параметра."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_access_request_accepted.py", "repository": "sharix-open-handlers-examples", "sha256": "de79926339c168601129401449b8dfdb1fb31baeaa4a0e6bb44200ea6047f237"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_access_request_accepted.json", "repository": "sharix-open-handlers-examples", "sha256": "f7a8543767cda70ad17092719edccd1d19b50de18fd31b93606767425fbe32ec"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/handler_operations.py", "repository": "sharix-open-handlers-backend", "sha256": "28620658501c375f556e24437871620b84a17a88d0b62b2d1a3cc5deb2f14b1e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/data_parsers.py", "repository": "sharix-open-handlers-backend", "sha256": "d7f26f172f68e4b390f675de88fbfb3c37a58fb29d4bf3d6687b31bd7953f9e4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/ejabberd_muc.py", "repository": "sharix-open-handlers-backend", "sha256": "35c2eba89fab36b5c444439a87beaa516b55133991136d5370418d92a18d7bcd"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "classes/AccessRequestTicket.py", "repository": "sharix-open-handlers-backend", "sha256": "3f3a498ae76b3d878b19a8f32170fc2a71c6c6c182bf34a6ecc50edf7b0f5eff"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "lib/tickets.py", "repository": "sharix-open-tickets", "sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/activation.py", "repository": "sharix-open-backend", "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_actions.py", "repository": "sharix-open-backend", "sha256": "717ef0f3e02ff8e6da103b5fdbae584b01d84d177f6e62ae677a1c5a366b71de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/document_drafts.py", "repository": "sharix-open-backend", "sha256": "383b117f01fdd9d16de3ceb9afb1ccf0bf3104c4966b23e987b8a90e9a46f071"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}]}
queue_start
queue_wait
queue_timer
queue_revision
queue_ready
queue_again
queue_Flow_0
queue_Flow_0
queue_Flow_1
queue_Flow_2
queue_Flow_1
queue_Flow_3
deferred_until
queue_Flow_2
queue_Flow_4
queue_Flow_3
queue_Flow_4
queue_Flow_5
queue_Flow_5
{"notes": ["BPMN isExecutable=false. Генератор не исполняет handler.", "ACCEPTED — одобрение запроса, а не уже активное право.", "deferred_until — символ текущего локального срока; не имя параметра."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_access_request_accepted.py", "repository": "sharix-open-handlers-examples", "sha256": "de79926339c168601129401449b8dfdb1fb31baeaa4a0e6bb44200ea6047f237"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_access_request_accepted.json", "repository": "sharix-open-handlers-examples", "sha256": "f7a8543767cda70ad17092719edccd1d19b50de18fd31b93606767425fbe32ec"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/handler_operations.py", "repository": "sharix-open-handlers-backend", "sha256": "28620658501c375f556e24437871620b84a17a88d0b62b2d1a3cc5deb2f14b1e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/data_parsers.py", "repository": "sharix-open-handlers-backend", "sha256": "d7f26f172f68e4b390f675de88fbfb3c37a58fb29d4bf3d6687b31bd7953f9e4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/ejabberd_muc.py", "repository": "sharix-open-handlers-backend", "sha256": "35c2eba89fab36b5c444439a87beaa516b55133991136d5370418d92a18d7bcd"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "classes/AccessRequestTicket.py", "repository": "sharix-open-handlers-backend", "sha256": "3f3a498ae76b3d878b19a8f32170fc2a71c6c6c182bf34a6ecc50edf7b0f5eff"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "lib/tickets.py", "repository": "sharix-open-tickets", "sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/activation.py", "repository": "sharix-open-backend", "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_actions.py", "repository": "sharix-open-backend", "sha256": "717ef0f3e02ff8e6da103b5fdbae584b01d84d177f6e62ae677a1c5a366b71de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/document_drafts.py", "repository": "sharix-open-backend", "sha256": "383b117f01fdd9d16de3ceb9afb1ccf0bf3104c4966b23e987b8a90e9a46f071"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}]}
checks_start
checks_result
checks_complete
checks_ok
checks_wake
checks_done
checks_not_yet
checks_Flow_0
Отдельный ручной либо автоматический ST_REQUEST-процесс; он раскрыт на связанных страницах. Загрузка черновика и проверенная версия — разные факты.
checks_Flow_0
checks_Flow_1
checks_Flow_1
checks_Flow_2
checks_Flow_2
checks_Flow_3
checks_Flow_4
Для ACCESS_REQUEST обновить Ticket.updated_at и после commit отправить ticket.changed, не активировать permission прямо в ST_REQUEST.
checks_Flow_3
checks_Flow_5
checks_Flow_5
checks_Flow_4
Пользователь/проверяющий либо настроенный алгоритм выполняет отдельный профильный процесс. Загрузка черновика документа, создание заявки проверки и проверенная версия документа — разные состояния. Подробные решения описаны в [[sharixopen:knowledge:scenarios:st_request_inprocess|IN_PROCESS]] и [[sharixopen:knowledge:scenarios:st_request_done|DONE]]. Здесь показана их связь с ожидающим ACCESS_REQUEST, а не исполнение всех действий внутри этого handler.
Когда профильный complete пересчитывает потребителей и требования permission удовлетворены, ''resume_approved_activation'' для ACCESS_REQUEST не активирует право скрыто. Он обновляет ревизию Ticket и после commit отправляет ''ticket.changed'' текущему handler. Runtime получает scoped актуальный снимок, снимает прежний defer и снова проходит явные Blockly-проверки. При потере сообщения повтор обеспечивают таймер и periodic reconciliation.
Если остаются другие невыполненные требования, completion одной проверки не означает готовность всего права. Отрицательный результат либо незавершённые документы не должны заменяться ручным выставлением active в обход gate.
===== Ошибки, уведомления и раздельная фиксация =====
Первоначальный ''ok'' и результат активации могут различаться: между запросами меняются данные, требования или scope. Runtime обрабатывает часть отрицательных ответов операции активации как false и ждёт 900 секунд; 401/403/429 и 5xx вызывают исключение и общий ''processing_error''. Ошибки read/requirements API и неожиданные ошибки уведомлений также идут в общий retry. Если проблема постоянна, один таймер её не устраняет: нужно разобрать причину и данные.
404 при переходе в ''CLOSED'' запрашивает локальную очистку как для устаревшего scope. Если permission уже активировалась, а закрытие Ticket не удалось, активное право не откатывается. Следующий проход заново проверяет ту же связь и gate; он не должен считаться созданием нового права. Для диагностики различайте статус Ticket, status/check_date/checked_by permission, requirements и Event операции.
Уведомления этой ветви:
* **Автор:** legacy helper с локальным Django-поиском пользователя и XMPP-реквизитов; отсутствие получателя логируется.
* **Администраторы:** MUC-комната по правилам [[sharixopen:knowledge:scenarios:access_request_pending|PENDING]] — активные METASERVICE-ADMIN, текущий bot и report JID.
Это не адресный reviewer API профильных ST_REQUEST. Durable verification ack здесь нет, повторные проходы допускают повтор сообщения; send не доказывает прочтения.
===== Интервалы и внешнее решение =====
^ Причина ^ Повтор ^
| ''related_permission_missing'' | ''ACCESS_REQUEST_INCONSISTENCY_RECHECK_SECONDS'' |
| ''requirements_pending'' | ''ACCESS_REQUEST_INCONSISTENCY_RECHECK_SECONDS'' |
| ''related_permission_inconsistent'' | 900 секунд, константа Python |
| ''processing_error'' | ''DEFERRED_TICKET_RECHECK_SECONDS'' |
| Восстановление состава очереди | ''INTERVAL_TIME_BD_REQ'' |
Defer хранится в памяти и освобождает worker. Новая authoritative revision снимает ожидание, дубликат того же снимка — нет. Срок означает готовность к проходу, не точное время запуска. При ошибке scoped списка прежний снимок не удаляется как будто backend подтвердил отсутствие Ticket.
Для ручного изменения самого Ticket текущий lifecycle из ''ACCEPTED'' разрешает ''DECLINED'' либо ''CLOSED'' при соответствующих правах; авторство само по себе не даёт права принять/отозвать решение. Перевод Ticket в DECLINED не равен автоматическому удалению уже active permission: соответствующий handler отдельно обрабатывает несогласованность.
===== Диагностика =====
Порядок диагностики:
- Проверить единственную permission, связанную с Ticket.
- Прочитать реально missing requirements и созданные действия.
- Проверить состояния внешних проверок и обратный wakeup.
- Прочитать результат повторного activation gate.
- Отдельно проверить CLOSED и Event операции.
Если permission уже active, а требования стали missing, текущий handler сам её не деактивирует: он ждёт. Текст уведомления «право пока не активировано» не заменяет чтение фактического status.
===== Проверенные источники =====
Git SHA/SHA-256 и параметры моделей закреплены в metadata и documentation BPMN. Код обработчиков при анализе не исполнялся. Изменение Blockly, runtime, API/ACL или доменного gate требует повторного сопоставления, а не только смены хешей.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_access_request_accepted.py|sharix-open-handlers-examples / handlers/open_access_request_accepted.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handler_blocks/open_access_request_accepted.json|sharix-open-handlers-examples / generated_handler_blocks/open_access_request_accepted.json]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/catalog.py|sharix-open-handlers-examples / catalog.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/blockly_runtime.py|sharix-open-handlers-backend / core/blockly_runtime.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/handler_operations.py|sharix-open-handlers-backend / core/handler_operations.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/data_parsers.py|sharix-open-handlers-backend / core/data_parsers.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/ejabberd_muc.py|sharix-open-handlers-backend / core/ejabberd_muc.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/requesters.py|sharix-open-handlers-backend / core/requesters.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/classes/AccessRequestTicket.py|sharix-open-handlers-backend / classes/AccessRequestTicket.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/ticket_blockly_codegen.py|sharix-open-handlers-backend / ticket_blockly_codegen.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/ticket_codegen_contract.json|sharix-open-handlers-backend / ticket_codegen_contract.json]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/lib/tickets.py|sharix-open-tickets / lib/tickets.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/api/views/handler_workflow.py|sharix-open-tickets / api/views/handler_workflow.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/api/handler_auth.py|sharix-open-tickets / api/handler_auth.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/utils.py|sharix-open-tickets / utils.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/views/ticket_detail.py|sharix-open-tickets / views/ticket_detail.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/signals.py|sharix-open-tickets / signals.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/services/handler_wakeup.py|sharix-open-tickets / services/handler_wakeup.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/apiviews/handler_workflow.py|sharix-open-backend / apiviews/handler_workflow.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/activation.py|sharix-open-backend / lib/activation.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/requirement_actions.py|sharix-open-backend / lib/requirement_actions.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/requirement_checks.py|sharix-open-backend / lib/requirement_checks.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/document_drafts.py|sharix-open-backend / lib/document_drafts.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/verification_workflow.py|sharix-open-backend / lib/verification_workflow.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
===== Связанные материалы =====
* [[sharixopen:knowledge:scenarios:access_request_pending|PENDING: решение о запросе]]
* [[sharixopen:knowledge:scenarios:st_request_inprocess|Профильные проверки]]
* [[sharixopen:knowledge:scenarios:st_request_done|Завершение результата проверки]]
* [[sharixopen:knowledge:scenarios:start|Все сценарии]]
~~SHARIX_KNOWLEDGE_RELATED~~