Инструменты пользователя

Инструменты сайта


sharixopen:knowledge:scenarios:neg_request_pending

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
sharixopen:knowledge:scenarios:neg_request_pending [2026/10/28 19:56] – [sharixknowledge] approved package sx_knowledge_api_opensharixopen:knowledge:scenarios:neg_request_pending [2026/10/31 11:25] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open
Строка 13: Строка 13:
             "ShariXKnowledgeOpenKnowledgeModulesHandlers",             "ShariXKnowledgeOpenKnowledgeModulesHandlers",
             "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",             "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",
-            "ShariXKnowledgeScenarios"+            "ShariXKnowledgeScenarios", 
 +            "ShariXKnowledgeHub", 
 +            "ShariXKnowledgeNegRequestAcceptedBPMN", 
 +            "ShariXKnowledgeNegRequestDeclinedBPMN", 
 +            "ShariXKnowledgePartnerRequestScenario"
         ]         ]
     },     },
Строка 20: Строка 24:
             "domain": "business_processes",             "domain": "business_processes",
             "lifecycle": "implemented",             "lifecycle": "implemented",
-            "component": "handlers",+            "component": "handlers_examples, handlers_backend, dbsynce",
             "parents": [             "parents": [
                 "ShariXKnowledgeScenarios"                 "ShariXKnowledgeScenarios"
             ],             ],
             "terms": [             "terms": [
-                "NEG_REQUEST", +                "audience_developer", 
-                "PENDING", +                "audience_support", 
-                "Relationship", +                "audience_reviewer", 
-                "API capability", +                "audience_ai", 
-                "BPMN"+                "product_sharix_open", 
 +                "material_scenario", 
 +                "topic_handlers_relationships", 
 +                "topic_security_object_access", 
 +                "neg_request", 
 +                "ticket_pending", 
 +                "relationship", 
 +                "api_capability", 
 +                "bpmn", 
 +                "ticket", 
 +                "blockly", 
 +                "generated_python", 
 +                "object_scope"
             ]             ]
         },         },
Строка 155: Строка 171:
                 "external": "a9a82494e288117347748493525ae882f0f9f827cafaa07b6e194c7fc7292df1"                 "external": "a9a82494e288117347748493525ae882f0f9f827cafaa07b6e194c7fc7292df1"
             }             }
 +        },
 +        "diagram_view_bounds": {
 +            "reviewed_on": "2026-10-29",
 +            "models": [
 +                "logic"
 +            ],
 +            "semantics_unchanged": true,
 +            "utility": "tools/expand_bpmn_view_bounds.py",
 +            "utility_sha256": "f878658b0115773e34f6c3eec72eba5984d873e60d8e2a4336b3dfb2a8026d87"
 +        },
 +        "editorial_review": {
 +            "date": "2026-10-31",
 +            "scope": "rewrite",
 +            "batch": 5,
 +            "style": "Конкретика, перечисления, видимая и машинная навигация; закрытые детали остаются в intrawiki."
 +        },
 +        "source_review_20261031": {
 +            "kind": "source_analysis_not_runtime_acceptance",
 +            "sources": [
 +                {
 +                    "repository": "sharix-open-backend",
 +                    "commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
 +                    "path": "apiviews/handler_workflow.py",
 +                    "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"
 +                },
 +                {
 +                    "repository": "sharix-open-handlers-examples",
 +                    "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
 +                    "path": "handlers/open_neg_request_pending.py",
 +                    "sha256": "c1ce289487c6dcf04cdf76740721e12744dd62423e29605c556e0daac1e140b2"
 +                },
 +                {
 +                    "repository": "sharix-open-handlers-examples",
 +                    "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
 +                    "path": "generated_handlers/open_neg_request_pending.py",
 +                    "sha256": "c1ce289487c6dcf04cdf76740721e12744dd62423e29605c556e0daac1e140b2"
 +                },
 +                {
 +                    "repository": "sharix-open-handlers-examples",
 +                    "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
 +                    "path": "generated_handler_blocks/open_neg_request_pending.json",
 +                    "sha256": "b9d64844c92e7002c77a1b2ff225bc4d72ebe3b889b85a32d664a6b7d748951e"
 +                },
 +                {
 +                    "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/requesters.py",
 +                    "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"
 +                },
 +                {
 +                    "repository": "sharix-open-handlers-backend",
 +                    "commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
 +                    "path": "core/ejabberd_muc.py",
 +                    "sha256": "35c2eba89fab36b5c444439a87beaa516b55133991136d5370418d92a18d7bcd"
 +                },
 +                {
 +                    "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": "signals.py",
 +                    "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"
 +                },
 +                {
 +                    "repository": "sharix-open-tickets",
 +                    "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
 +                    "path": "api/handler_auth.py",
 +                    "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"
 +                },
 +                {
 +                    "repository": "sharix-open-tickets",
 +                    "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
 +                    "path": "lib/tickets.py",
 +                    "sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"
 +                }
 +            ]
 +        },
 +        "hierarchy_review": {
 +            "date": "2026-10-31",
 +            "canonical_parent_id": "ShariXKnowledgeScenarios",
 +            "page_url_preserved": true,
 +            "kind": "article_and_navigation"
 +        },
 +        "classification": {
 +            "schema": "sharix.knowledge.classification.v1",
 +            "products": [
 +                "sharix_open"
 +            ],
 +            "audiences": [
 +                "developer",
 +                "support",
 +                "reviewer",
 +                "ai"
 +            ],
 +            "material": "scenario",
 +            "topics": [
 +                "handlers/relationships",
 +                "security/object_access"
 +            ],
 +            "tag_terms": [
 +                "audience_developer",
 +                "audience_support",
 +                "audience_reviewer",
 +                "audience_ai",
 +                "product_sharix_open",
 +                "material_scenario",
 +                "topic_handlers_relationships",
 +                "topic_security_object_access",
 +                "neg_request",
 +                "ticket_pending",
 +                "relationship",
 +                "api_capability",
 +                "bpmn",
 +                "ticket",
 +                "blockly",
 +                "generated_python",
 +                "object_scope"
 +            ],
 +            "registry_document": "ShariXKnowledgeClassification",
 +            "state_meaning": "lifecycle относится к описываемому коду, а status к редакции документа; implemented не означает успешный runtime тест"
 +        },
 +        "classification_review": {
 +            "date": "2026-10-31",
 +            "source": "Содержание текущей страницы и проверенный словарь классификации",
 +            "body_scope": "classification_and_navigation_only"
         }         }
     },     },
-    "content_sha256": "f981a905b5333be2bc1cb54bb7f3a562791cc0bbeca1fc2e6db64c8597855491",+    "content_sha256": "df7336be740bed2364862514e34b4e6f49892eaced52915a23f2d5b3cf07bfe6",
     "schema": 1     "schema": 1
 } }
Строка 164: Строка 327:
 ~~NOCACHE~~ ~~NOCACHE~~
  
-**Область:** ShariX Open. **Обработчик:** ''open_neg_request_pending'', тип ''NEG_REQUEST'' (4), рабочий статус ''PENDING'' (420). Опубликованные источники повторно обновлены из Git 28.10.2026; Python побайтово совпадает с канонической генерацией его Blockly workspace. Фактическая server identity и выбранная локальная версия отдельно не проверялись.+**Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]]. 
 + 
 +**Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#recenzent_i_prijomschik|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. 
 + 
 +**Темы:** [[sharixopen:knowledge:classification:topics#neg_request|Обработчики → NEG_REQUEST]] · [[sharixopen:knowledge:classification:topics#obektnye_prava|Доступ → Объектные права]]. 
 + 
 + 
 + 
 +**Навигация:** [[sharixopen:knowledge:start|База знаний]] → [[sharixopen:knowledge:scenarios:start|Сценарии]] → NEG_REQUEST / PENDING. 
 + 
 +**Область:** ShariX Open. **Обработчик:** ''open_neg_request_pending'', тип ''NEG_REQUEST'' (4), рабочий статус ''PENDING'' (420). Опубликованные источники повторно обновлены из Git 31.10.2026. Python заново получен из Blockly workspace; обе поставляемые Python-копии побайтово совпали, проверены 11 исходников генераторов из контракта. Сам обработчик при анализе не исполнялся. Фактическая server identity и выбранная локальная версия отдельно не проверялись.
  
 ===== Назначение и границы ===== ===== Назначение и границы =====
 Обработчик сопровождает запрос на Relationship до принятия либо отказа. Он не создаёт Relationship и не активирует её. Принятие переводит Ticket в ''ACCEPTED''; требования и активация принадлежат следующему handler и backend gate. Это сценарий публичного dbsynce-домена ShariX Open. Он не описывает отдельные модели взаимоотношений ShariX Platform и не отождествляет клиента сервиса с клиентом платформы. Обработчик сопровождает запрос на Relationship до принятия либо отказа. Он не создаёт Relationship и не активирует её. Принятие переводит Ticket в ''ACCEPTED''; требования и активация принадлежат следующему handler и backend gate. Это сценарий публичного dbsynce-домена ShariX Open. Он не описывает отдельные модели взаимоотношений ShariX Platform и не отождествляет клиента сервиса с клиентом платформы.
  
-После проверки рабочего статуса handler сначала проверяет ''assigned_to is not None''. Назначенный Ticket исключается из локальной очереди с удалением комнаты без смены бизнес-статуса. Это не принятие и не передача в ACCEPTED. Scoped список фильтруется по типу/статусу, поэтому сохраняющий PENDING назначенный Ticket может позже снова поступить через reconciliation и снова быть исключён.+После проверки рабочего статуса выбирается ветвь:
  
-Неназначенный Ticket использует ''NEGREQ_AUTOACCEPT''. При включённом режиме запрашивается ACCEPTED и выполняется явная передача следующему handler; при выключенном задумана отправка уведомления о Relationship и ожидание ручного решения. Реальная достижимость ручной ветви зависит от описанного ниже текущего расхождения API capability.+  * **assigned_to заполнен:** Ticket исключается из локальной очереди с удалением комнаты. Бизнес-статус не меняется; это не принятие и не передача в ACCEPTED. 
 +  * **assigned_to не заполнен:** дальнейшее решение определяется NEGREQ_AUTOACCEPT. 
 + 
 +Scoped список фильтруется по типу/статусу. Поэтому назначенный Ticket, который сохранил PENDING, может позже снова поступить через reconciliation и снова быть исключён. 
 + 
 +Для неназначенного Ticket: 
 + 
 +  * **NEGREQ_AUTOACCEPT включён:** запросить ACCEPTED и явно передать Ticket следующему handler. 
 +  * **NEGREQ_AUTOACCEPT выключен:** подготовить уведомление о Relationship, отправить его и ждать ручного решения. Достижимость этой ветви зависит от расхождения API capability ниже.
  
 ===== Известное расхождение опубликованных контрактов ===== ===== Известное расхождение опубликованных контрактов =====
-В ''catalog.py'' для ''open_neg_request_pending'' объявлены только ''ticket.read'', ''ticket.transition'', ''ticket.assign''. Однако формирование ручного уведомления вызывает ''build_neg_request_notification_message'', который **до отправки** читает Relationship через scoped ''dbsynce/api/handler/ticket/{ticket_id}/relationship/''. Этот endpoint требует ''related.relationship.read''.+Для open_neg_request_pending в catalog.py объявлены: 
 + 
 +  * ''ticket.read''; 
 +  * ''ticket.transition''; 
 +  * ''ticket.assign''. 
 + 
 +Но подготовка ручного уведомления выполняется в таком порядке: 
 + 
 +  - build_neg_request_notification_message вызывает _get_related_relationship. 
 +  - Requester читает Relationship через dbsynce/api/handler/ticket/{ticket_id}/relationship/. 
 +  - Backend проверяет capability related.relationship.read **до** возврата объекта. 
 +  - В указанном каталоге такого capability у PENDING нет. 
 + 
 +Чтение происходит до отправки уведомления, а не после него.
  
 При штатной проекции исследованного каталога в ''HANDLER_API_KEY_SCOPES'' такой read заканчивается 403. Исключение доходит до общего retry/defer ''processing_error''; сообщение, ''manual_relationship_decision'' и штатный defer ручной ветви до завершения подготовки не достигаются. Отсутствие сообщения в этой ситуации не доказывает, что заявок нет или что её уже рассмотрели. При штатной проекции исследованного каталога в ''HANDLER_API_KEY_SCOPES'' такой read заканчивается 403. Исключение доходит до общего retry/defer ''processing_error''; сообщение, ''manual_relationship_decision'' и штатный defer ручной ветви до завершения подготовки не достигаются. Отсутствие сообщения в этой ситуации не доказывает, что заявок нет или что её уже рассмотрели.
  
-Это вывод из сопоставления свежих catalog, runtime, requester, handler auth и endpoint, а не результат вызова от имени реального ключа на конкретной установке. Сервер с иным явно настроенным scope может вести себя иначе; нужно сверить фактическую identity. Не следует обходить ошибку generic CRUD-ключом или ослаблением проверки API. Исправление должно согласовать узкий contract чтения Relationship для этой операции либо убрать такое чтение из подготовки сообщения с соответствующим обновлением workspace/generation и проверками.+Это вывод из сопоставления свежих catalog, runtime, requester, handler auth и endpoint, а не результат вызова от имени реального ключа на конкретной установке. Сервер с иным явно настроенным scope может вести себя иначе; нужно сверить фактическую identity. Не следует обходить ошибку generic CRUD-ключом или ослаблением проверки API. Возможные направления исправления: 
 + 
 +  * согласовать узкий контракт чтения Relationship для этой операции; 
 +  * либо убрать это чтение из подготовки сообщения. 
 + 
 +В обоих случаях нужны согласованные workspace/generation и проверки. В этой редакции документации программное исправление не выполнялось.
  
 На BPMN оставлена как последовательность Python при успешном разрешённом read, так и явная boundary-ошибка 403. Эта страница не объявляет ручной путь безусловно работоспособным в стандартном каталоге. На BPMN оставлена как последовательность Python при успешном разрешённом read, так и явная boundary-ошибка 403. Эта страница не объявляет ручной путь безусловно работоспособным в стандартном каталоге.
Строка 185: Строка 384:
 <sharix-bpmn> <sharix-bpmn>
 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_neg_pending_logic" targetNamespace="urn:sharix:knowledge:handlers">+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:ns2="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:ns3="http://www.omg.org/spec/DD/20100524/DC" xmlns:ns4="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_neg_pending_logic" targetNamespace="urn:sharix:knowledge:handlers">
   <bpmn:process id="neg_Process_neg" name="open_neg_request_pending: принятие запроса на Relationship и граница API capability" isExecutable="false">   <bpmn:process id="neg_Process_neg" name="open_neg_request_pending: принятие запроса на Relationship и граница API capability" isExecutable="false">
     <bpmn:documentation>{"notes": ["Git built-in и внешние контракты, без выполнения обработчика.", "BPMN isExecutable=false. End event — конец показанного прохода, не предоставление права.", "deferred_until — символ локального срока, не настройка сервера.", "Известное расхождение базового каталога: ручное уведомление требует related.relationship.read, отсутствующего у NEG_PENDING. 403 возникает до notify/defer. Фактическая server identity проверяется отдельно."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_neg_request_pending.py", "repository": "sharix-open-handlers-examples", "sha256": "c1ce289487c6dcf04cdf76740721e12744dd62423e29605c556e0daac1e140b2"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_neg_request_pending.json", "repository": "sharix-open-handlers-examples", "sha256": "b9d64844c92e7002c77a1b2ff225bc4d72ebe3b889b85a32d664a6b7d748951e"}, {"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/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": "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"}]}</bpmn:documentation>     <bpmn:documentation>{"notes": ["Git built-in и внешние контракты, без выполнения обработчика.", "BPMN isExecutable=false. End event — конец показанного прохода, не предоставление права.", "deferred_until — символ локального срока, не настройка сервера.", "Известное расхождение базового каталога: ручное уведомление требует related.relationship.read, отсутствующего у NEG_PENDING. 403 возникает до notify/defer. Фактическая server identity проверяется отдельно."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_neg_request_pending.py", "repository": "sharix-open-handlers-examples", "sha256": "c1ce289487c6dcf04cdf76740721e12744dd62423e29605c556e0daac1e140b2"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_neg_request_pending.json", "repository": "sharix-open-handlers-examples", "sha256": "b9d64844c92e7002c77a1b2ff225bc4d72ebe3b889b85a32d664a6b7d748951e"}, {"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/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": "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"}]}</bpmn:documentation>
Строка 361: Строка 560:
     <bpmn:participant id="neg_Pool_neg" name="open_neg_request_pending: принятие запроса на Relationship и граница API capability" processRef="neg_Process_neg" />     <bpmn:participant id="neg_Pool_neg" name="open_neg_request_pending: принятие запроса на Relationship и граница API capability" processRef="neg_Process_neg" />
   </bpmn:collaboration>   </bpmn:collaboration>
-  <bpmndi:BPMNDiagram id="Diagram_neg_pending_logic"> +  <ns2:BPMNDiagram id="Diagram_neg_pending_logic"> 
-    <bpmndi:BPMNPlane id="Plane_neg_pending_logic" bpmnElement="Collaboration_neg_pending_logic"> +    <ns2:BPMNPlane id="Plane_neg_pending_logic" bpmnElement="Collaboration_neg_pending_logic"> 
-      <bpmndi:BPMNShape id="neg_DI_Pool_neg" bpmnElement="neg_Pool_neg" isHorizontal="true"> +      <ns2:BPMNShape id="neg_DI_Pool_neg" bpmnElement="neg_Pool_neg" isHorizontal="true"> 
-        <dc:Bounds x="0.0" y="0.0" width="2010" height="970" /> +        <ns3:Bounds x="0.0" y="0.0" width="2080.0" height="970.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_Lane_worker" bpmnElement="neg_Lane_worker" isHorizontal="true"> +      <ns2:BPMNShape id="neg_DI_Lane_worker" bpmnElement="neg_Lane_worker" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="0.0" width="1980" height="585.0" /> +        <ns3:Bounds x="30.0" y="0.0" width="2050.0" height="585.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_Lane_queue" bpmnElement="neg_Lane_queue" isHorizontal="true"> +      <ns2:BPMNShape id="neg_DI_Lane_queue" bpmnElement="neg_Lane_queue" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="585.0" width="1980" height="385.0" /> +        <ns3:Bounds x="30.0" y="585.0" width="2050.0" height="385.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_start" bpmnElement="neg_start"> +      <ns2:BPMNShape id="neg_DI_start" bpmnElement="neg_start"> 
-        <dc:Bounds x="132.0" y="92.0" width="36" height="36" /> +        <ns3:Bounds x="132.0" y="92.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_status" bpmnElement="neg_status"> +      <ns2:BPMNShape id="neg_DI_status" bpmnElement="neg_status"> 
-        <dc:Bounds x="325.0" y="85.0" width="50" height="50" /> +        <ns3:Bounds x="325.0" y="85.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_assigned" bpmnElement="neg_assigned"> +      <ns2:BPMNShape id="neg_DI_assigned" bpmnElement="neg_assigned"> 
-        <dc:Bounds x="555.0" y="85.0" width="50" height="50" /> +        <ns3:Bounds x="555.0" y="85.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_auto" bpmnElement="neg_auto"> +      <ns2:BPMNShape id="neg_DI_auto" bpmnElement="neg_auto"> 
-        <dc:Bounds x="805.0" y="85.0" width="50" height="50" /> +        <ns3:Bounds x="805.0" y="85.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_notify" bpmnElement="neg_notify"> +      <ns2:BPMNShape id="neg_DI_notify" bpmnElement="neg_notify"> 
-        <dc:Bounds x="1265.0" y="75.0" width="150" height="70" /> +        <ns3:Bounds x="1265.0" y="75.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_defer" bpmnElement="neg_defer"> +      <ns2:BPMNShape id="neg_DI_defer" bpmnElement="neg_defer"> 
-        <dc:Bounds x="1525.0" y="75.0" width="150" height="70" /> +        <ns3:Bounds x="1525.0" y="75.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_cleanup" bpmnElement="neg_cleanup"> +      <ns2:BPMNShape id="neg_DI_cleanup" bpmnElement="neg_cleanup"> 
-        <dc:Bounds x="275.0" y="265.0" width="150" height="70" /> +        <ns3:Bounds x="275.0" y="265.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_end" bpmnElement="neg_end"> +      <ns2:BPMNShape id="neg_DI_end" bpmnElement="neg_end"> 
-        <dc:Bounds x="562.0" y="282.0" width="36" height="36" /> +        <ns3:Bounds x="562.0" y="282.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_transition" bpmnElement="neg_transition"> +      <ns2:BPMNShape id="neg_DI_transition" bpmnElement="neg_transition"> 
-        <dc:Bounds x="755.0" y="265.0" width="150" height="70" /> +        <ns3:Bounds x="755.0" y="265.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_confirmed" bpmnElement="neg_confirmed"> +      <ns2:BPMNShape id="neg_DI_confirmed" bpmnElement="neg_confirmed"> 
-        <dc:Bounds x="1055.0" y="275.0" width="50" height="50" /> +        <ns3:Bounds x="1055.0" y="275.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_handoff" bpmnElement="neg_handoff"> +      <ns2:BPMNShape id="neg_DI_handoff" bpmnElement="neg_handoff"> 
-        <dc:Bounds x="1265.0" y="265.0" width="150" height="70" /> +        <ns3:Bounds x="1265.0" y="265.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_remove" bpmnElement="neg_remove"> +      <ns2:BPMNShape id="neg_DI_remove" bpmnElement="neg_remove"> 
-        <dc:Bounds x="1525.0" y="265.0" width="150" height="70" /> +        <ns3:Bounds x="1525.0" y="265.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_accepted" bpmnElement="neg_accepted"> +      <ns2:BPMNShape id="neg_DI_accepted" bpmnElement="neg_accepted"> 
-        <dc:Bounds x="1832.0" y="282.0" width="36" height="36" /> +        <ns3:Bounds x="1832.0" y="282.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_missing" bpmnElement="neg_missing"> +      <ns2:BPMNShape id="neg_DI_missing" bpmnElement="neg_missing"> 
-        <dc:Bounds x="1062.0" y="462.0" width="36" height="36" /> +        <ns3:Bounds x="1062.0" y="462.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_notify_error" bpmnElement="neg_notify_error"> +      <ns2:BPMNShape id="neg_DI_notify_error" bpmnElement="neg_notify_error"> 
-        <dc:Bounds x="1372.0" y="127.0" width="36" height="36" /> +        <ns3:Bounds x="1372.0" y="127.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_api_error" bpmnElement="neg_api_error"> +      <ns2:BPMNShape id="neg_DI_api_error" bpmnElement="neg_api_error"> 
-        <dc:Bounds x="862.0" y="317.0" width="36" height="36" /> +        <ns3:Bounds x="862.0" y="317.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_send_error" bpmnElement="neg_send_error"> +      <ns2:BPMNShape id="neg_DI_send_error" bpmnElement="neg_send_error"> 
-        <dc:Bounds x="1372.0" y="317.0" width="36" height="36" /> +        <ns3:Bounds x="1372.0" y="317.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_retry" bpmnElement="neg_retry"> +      <ns2:BPMNShape id="neg_DI_retry" bpmnElement="neg_retry"> 
-        <dc:Bounds x="1525.0" y="465.0" width="150" height="70" /> +        <ns3:Bounds x="1525.0" y="465.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_wait" bpmnElement="neg_wait"> +      <ns2:BPMNShape id="neg_DI_wait" bpmnElement="neg_wait"> 
-        <dc:Bounds x="1055.0" y="715.0" width="50" height="50" /> +        <ns3:Bounds x="1055.0" y="715.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_timer" bpmnElement="neg_timer"> +      <ns2:BPMNShape id="neg_DI_timer" bpmnElement="neg_timer"> 
-        <dc:Bounds x="1322.0" y="652.0" width="36" height="36" /> +        <ns3:Bounds x="1322.0" y="652.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_revision" bpmnElement="neg_revision"> +      <ns2:BPMNShape id="neg_DI_revision" bpmnElement="neg_revision"> 
-        <dc:Bounds x="1322.0" y="852.0" width="36" height="36" /> +        <ns3:Bounds x="1322.0" y="852.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_ready" bpmnElement="neg_ready"> +      <ns2:BPMNShape id="neg_DI_ready" bpmnElement="neg_ready"> 
-        <dc:Bounds x="1525.0" y="705.0" width="150" height="70" /> +        <ns3:Bounds x="1525.0" y="705.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_relationship" bpmnElement="neg_relationship"> +      <ns2:BPMNShape id="neg_DI_relationship" bpmnElement="neg_relationship"> 
-        <dc:Bounds x="1005.0" y="75.0" width="150" height="70" /> +        <ns3:Bounds x="1005.0" y="75.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="neg_DI_read_error" bpmnElement="neg_read_error"> +      <ns2:BPMNShape id="neg_DI_read_error" bpmnElement="neg_read_error"> 
-        <dc:Bounds x="1112.0" y="127.0" width="36" height="36" /> +        <ns3:Bounds x="1112.0" y="127.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_0" bpmnElement="neg_Flow_0"> +      <ns2:BPMNEdge id="neg_DI_Flow_0" bpmnElement="neg_Flow_0"> 
-        <di:waypoint x="168.0" y="110.0" /> +        <ns4:waypoint x="168.0" y="110.0" /> 
-        <di:waypoint x="325.0" y="110.0" /> +        <ns4:waypoint x="325.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_1" bpmnElement="neg_Flow_1"> +      <ns2:BPMNEdge id="neg_DI_Flow_1" bpmnElement="neg_Flow_1"> 
-        <di:waypoint x="375.0" y="110.0" /> +        <ns4:waypoint x="375.0" y="110.0" /> 
-        <di:waypoint x="555.0" y="110.0" /> +        <ns4:waypoint x="555.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_2" bpmnElement="neg_Flow_2"> +      <ns2:BPMNEdge id="neg_DI_Flow_2" bpmnElement="neg_Flow_2"> 
-        <di:waypoint x="350.0" y="135.0" /> +        <ns4:waypoint x="350.0" y="135.0" /> 
-        <di:waypoint x="350.0" y="265.0" /> +        <ns4:waypoint x="350.0" y="265.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_3" bpmnElement="neg_Flow_3"> +      <ns2:BPMNEdge id="neg_DI_Flow_3" bpmnElement="neg_Flow_3"> 
-        <di:waypoint x="605.0" y="110.0" /> +        <ns4:waypoint x="605.0" y="110.0" /> 
-        <di:waypoint x="805.0" y="110.0" /> +        <ns4:waypoint x="805.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_4" bpmnElement="neg_Flow_4"> +      <ns2:BPMNEdge id="neg_DI_Flow_4" bpmnElement="neg_Flow_4"> 
-        <di:waypoint x="605.0" y="110.0" /> +        <ns4:waypoint x="605.0" y="110.0" /> 
-        <di:waypoint x="690.0" y="110.0" /> +        <ns4:waypoint x="690.0" y="110.0" /> 
-        <di:waypoint x="690.0" y="235.0" /> +        <ns4:waypoint x="690.0" y="235.0" /> 
-        <di:waypoint x="350.0" y="235.0" /> +        <ns4:waypoint x="350.0" y="235.0" /> 
-        <di:waypoint x="350.0" y="265.0" /> +        <ns4:waypoint x="350.0" y="265.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_5" bpmnElement="neg_Flow_5"> +      <ns2:BPMNEdge id="neg_DI_Flow_5" bpmnElement="neg_Flow_5"> 
-        <di:waypoint x="425.0" y="300.0" /> +        <ns4:waypoint x="425.0" y="300.0" /> 
-        <di:waypoint x="562.0" y="300.0" /> +        <ns4:waypoint x="562.0" y="300.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_6" bpmnElement="neg_Flow_6"> +      <ns2:BPMNEdge id="neg_DI_Flow_6" bpmnElement="neg_Flow_6"> 
-        <di:waypoint x="855.0" y="110.0" /> +        <ns4:waypoint x="855.0" y="110.0" /> 
-        <di:waypoint x="1005.0" y="110.0" /> +        <ns4:waypoint x="1005.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_7" bpmnElement="neg_Flow_7"> +      <ns2:BPMNEdge id="neg_DI_Flow_7" bpmnElement="neg_Flow_7"> 
-        <di:waypoint x="1415.0" y="110.0" /> +        <ns4:waypoint x="1415.0" y="110.0" /> 
-        <di:waypoint x="1525.0" y="110.0" /> +        <ns4:waypoint x="1525.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_8" bpmnElement="neg_Flow_8"> +      <ns2:BPMNEdge id="neg_DI_Flow_8" bpmnElement="neg_Flow_8"> 
-        <di:waypoint x="1675.0" y="110.0" /> +        <ns4:waypoint x="1675.0" y="110.0" /> 
-        <di:waypoint x="1730.0" y="110.0" /> +        <ns4:waypoint x="1730.0" y="110.0" /> 
-        <di:waypoint x="1730.0" y="600.0" /> +        <ns4:waypoint x="1730.0" y="600.0" /> 
-        <di:waypoint x="1080.0" y="600.0" /> +        <ns4:waypoint x="1080.0" y="600.0" /> 
-        <di:waypoint x="1080.0" y="715.0" /> +        <ns4:waypoint x="1080.0" y="715.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_9" bpmnElement="neg_Flow_9"> +      <ns2:BPMNEdge id="neg_DI_Flow_9" bpmnElement="neg_Flow_9"> 
-        <di:waypoint x="830.0" y="135.0" /> +        <ns4:waypoint x="830.0" y="135.0" /> 
-        <di:waypoint x="830.0" y="265.0" /> +        <ns4:waypoint x="830.0" y="265.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_10" bpmnElement="neg_Flow_10"> +      <ns2:BPMNEdge id="neg_DI_Flow_10" bpmnElement="neg_Flow_10"> 
-        <di:waypoint x="905.0" y="300.0" /> +        <ns4:waypoint x="905.0" y="300.0" /> 
-        <di:waypoint x="1055.0" y="300.0" /> +        <ns4:waypoint x="1055.0" y="300.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_11" bpmnElement="neg_Flow_11"> +      <ns2:BPMNEdge id="neg_DI_Flow_11" bpmnElement="neg_Flow_11"> 
-        <di:waypoint x="1080.0" y="325.0" /> +        <ns4:waypoint x="1080.0" y="325.0" /> 
-        <di:waypoint x="1080.0" y="462.0" /> +        <ns4:waypoint x="1080.0" y="462.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_12" bpmnElement="neg_Flow_12"> +      <ns2:BPMNEdge id="neg_DI_Flow_12" bpmnElement="neg_Flow_12"> 
-        <di:waypoint x="1105.0" y="300.0" /> +        <ns4:waypoint x="1105.0" y="300.0" /> 
-        <di:waypoint x="1265.0" y="300.0" /> +        <ns4:waypoint x="1265.0" y="300.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_13" bpmnElement="neg_Flow_13"> +      <ns2:BPMNEdge id="neg_DI_Flow_13" bpmnElement="neg_Flow_13"> 
-        <di:waypoint x="1415.0" y="300.0" /> +        <ns4:waypoint x="1415.0" y="300.0" /> 
-        <di:waypoint x="1525.0" y="300.0" /> +        <ns4:waypoint x="1525.0" y="300.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_14" bpmnElement="neg_Flow_14"> +      <ns2:BPMNEdge id="neg_DI_Flow_14" bpmnElement="neg_Flow_14"> 
-        <di:waypoint x="1675.0" y="300.0" /> +        <ns4:waypoint x="1675.0" y="300.0" /> 
-        <di:waypoint x="1832.0" y="300.0" /> +        <ns4:waypoint x="1832.0" y="300.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_15" bpmnElement="neg_Flow_15"> +      <ns2:BPMNEdge id="neg_DI_Flow_15" bpmnElement="neg_Flow_15"> 
-        <di:waypoint x="1408.0" y="145.0" /> +        <ns4:waypoint x="1408.0" y="145.0" /> 
-        <di:waypoint x="1190.0" y="145.0" /> +        <ns4:waypoint x="1190.0" y="145.0" /> 
-        <di:waypoint x="1520.0" y="145.0" /> +        <ns4:waypoint x="1520.0" y="145.0" /> 
-        <di:waypoint x="1520.0" y="435.0" /> +        <ns4:waypoint x="1520.0" y="435.0" /> 
-        <di:waypoint x="1600.0" y="435.0" /> +        <ns4:waypoint x="1600.0" y="435.0" /> 
-        <di:waypoint x="1600.0" y="465.0" /> +        <ns4:waypoint x="1600.0" y="465.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_16" bpmnElement="neg_Flow_16"> +      <ns2:BPMNEdge id="neg_DI_Flow_16" bpmnElement="neg_Flow_16"> 
-        <di:waypoint x="898.0" y="335.0" /> +        <ns4:waypoint x="898.0" y="335.0" /> 
-        <di:waypoint x="940.0" y="335.0" /> +        <ns4:waypoint x="940.0" y="335.0" /> 
-        <di:waypoint x="940.0" y="415.0" /> +        <ns4:waypoint x="940.0" y="415.0" /> 
-        <di:waypoint x="1600.0" y="415.0" /> +        <ns4:waypoint x="1600.0" y="415.0" /> 
-        <di:waypoint x="1600.0" y="465.0" /> +        <ns4:waypoint x="1600.0" y="465.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_17" bpmnElement="neg_Flow_17"> +      <ns2:BPMNEdge id="neg_DI_Flow_17" bpmnElement="neg_Flow_17"> 
-        <di:waypoint x="1408.0" y="335.0" /> +        <ns4:waypoint x="1408.0" y="335.0" /> 
-        <di:waypoint x="1450.0" y="335.0" /> +        <ns4:waypoint x="1450.0" y="335.0" /> 
-        <di:waypoint x="1600.0" y="335.0" /> +        <ns4:waypoint x="1600.0" y="335.0" /> 
-        <di:waypoint x="1600.0" y="465.0" /> +        <ns4:waypoint x="1600.0" y="465.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_18" bpmnElement="neg_Flow_18"> +      <ns2:BPMNEdge id="neg_DI_Flow_18" bpmnElement="neg_Flow_18"> 
-        <di:waypoint x="1675.0" y="500.0" /> +        <ns4:waypoint x="1675.0" y="500.0" /> 
-        <di:waypoint x="1720.0" y="500.0" /> +        <ns4:waypoint x="1720.0" y="500.0" /> 
-        <di:waypoint x="1720.0" y="615.0" /> +        <ns4:waypoint x="1720.0" y="615.0" /> 
-        <di:waypoint x="1080.0" y="615.0" /> +        <ns4:waypoint x="1080.0" y="615.0" /> 
-        <di:waypoint x="1080.0" y="715.0" /> +        <ns4:waypoint x="1080.0" y="715.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_19" bpmnElement="neg_Flow_19"> +      <ns2:BPMNEdge id="neg_DI_Flow_19" bpmnElement="neg_Flow_19"> 
-        <di:waypoint x="1105.0" y="740.0" /> +        <ns4:waypoint x="1105.0" y="740.0" /> 
-        <di:waypoint x="1213.5" y="740.0" /> +        <ns4:waypoint x="1213.5" y="740.0" /> 
-        <di:waypoint x="1213.5" y="670.0" /> +        <ns4:waypoint x="1213.5" y="670.0" /> 
-        <di:waypoint x="1322.0" y="670.0" /> +        <ns4:waypoint x="1322.0" y="670.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_20" bpmnElement="neg_Flow_20"> +      <ns2:BPMNEdge id="neg_DI_Flow_20" bpmnElement="neg_Flow_20"> 
-        <di:waypoint x="1105.0" y="740.0" /> +        <ns4:waypoint x="1105.0" y="740.0" /> 
-        <di:waypoint x="1213.5" y="740.0" /> +        <ns4:waypoint x="1213.5" y="740.0" /> 
-        <di:waypoint x="1213.5" y="870.0" /> +        <ns4:waypoint x="1213.5" y="870.0" /> 
-        <di:waypoint x="1322.0" y="870.0" /> +        <ns4:waypoint x="1322.0" y="870.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_21" bpmnElement="neg_Flow_21"> +      <ns2:BPMNEdge id="neg_DI_Flow_21" bpmnElement="neg_Flow_21"> 
-        <di:waypoint x="1358.0" y="670.0" /> +        <ns4:waypoint x="1358.0" y="670.0" /> 
-        <di:waypoint x="1441.5" y="670.0" /> +        <ns4:waypoint x="1441.5" y="670.0" /> 
-        <di:waypoint x="1441.5" y="740.0" /> +        <ns4:waypoint x="1441.5" y="740.0" /> 
-        <di:waypoint x="1525.0" y="740.0" /> +        <ns4:waypoint x="1525.0" y="740.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_22" bpmnElement="neg_Flow_22"> +      <ns2:BPMNEdge id="neg_DI_Flow_22" bpmnElement="neg_Flow_22"> 
-        <di:waypoint x="1358.0" y="870.0" /> +        <ns4:waypoint x="1358.0" y="870.0" /> 
-        <di:waypoint x="1441.5" y="870.0" /> +        <ns4:waypoint x="1441.5" y="870.0" /> 
-        <di:waypoint x="1441.5" y="740.0" /> +        <ns4:waypoint x="1441.5" y="740.0" /> 
-        <di:waypoint x="1525.0" y="740.0" /> +        <ns4:waypoint x="1525.0" y="740.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_23" bpmnElement="neg_Flow_23"> +      <ns2:BPMNEdge id="neg_DI_Flow_23" bpmnElement="neg_Flow_23"> 
-        <di:waypoint x="1675.0" y="740.0" /> +        <ns4:waypoint x="1675.0" y="740.0" /> 
-        <di:waypoint x="2040.0" y="740.0" /> +        <ns4:waypoint x="2040.0" y="740.0" /> 
-        <di:waypoint x="2040.0" y="25.0" /> +        <ns4:waypoint x="2040.0" y="25.0" /> 
-        <di:waypoint x="350.0" y="25.0" /> +        <ns4:waypoint x="350.0" y="25.0" /> 
-        <di:waypoint x="350.0" y="85.0" /> +        <ns4:waypoint x="350.0" y="85.0" /> 
-        <bpmndi:BPMNLabel> +        <ns2:BPMNLabel> 
-          <dc:Bounds x="1750.0" y="5.0" width="180" height="26" /> +          <ns3:Bounds x="1750.0" y="5.0" width="180" height="26" /> 
-        </bpmndi:BPMNLabel> +        </ns2:BPMNLabel> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_24" bpmnElement="neg_Flow_24"> +      <ns2:BPMNEdge id="neg_DI_Flow_24" bpmnElement="neg_Flow_24"> 
-        <di:waypoint x="1155.0" y="110.0" /> +        <ns4:waypoint x="1155.0" y="110.0" /> 
-        <di:waypoint x="1265.0" y="110.0" /> +        <ns4:waypoint x="1265.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="neg_DI_Flow_25" bpmnElement="neg_Flow_25"> +      <ns2:BPMNEdge id="neg_DI_Flow_25" bpmnElement="neg_Flow_25"> 
-        <di:waypoint x="1148.0" y="145.0" /> +        <ns4:waypoint x="1148.0" y="145.0" /> 
-        <di:waypoint x="1190.0" y="145.0" /> +        <ns4:waypoint x="1190.0" y="145.0" /> 
-        <di:waypoint x="1520.0" y="145.0" /> +        <ns4:waypoint x="1520.0" y="145.0" /> 
-        <di:waypoint x="1520.0" y="435.0" /> +        <ns4:waypoint x="1520.0" y="435.0" /> 
-        <di:waypoint x="1600.0" y="435.0" /> +        <ns4:waypoint x="1600.0" y="435.0" /> 
-        <di:waypoint x="1600.0" y="465.0" /> +        <ns4:waypoint x="1600.0" y="465.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-    </bpmndi:BPMNPlane> +    </ns2:BPMNPlane> 
-  </bpmndi:BPMNDiagram>+  </ns2:BPMNDiagram>
 </bpmn:definitions> </bpmn:definitions>
 </sharix-bpmn> </sharix-bpmn>
  
-При отключённом autoaccept успешный read формирует текст с id Relationship, ''user_who'', ''user_whom'', company, ''neg_type'' и сохранённым статусом. Это информационные поля связи; они не являются универсальной схемой назначения ролей и сами по себе не дают права принять Ticket. Если разрешённый read вернул 404, helper может сформировать текст «Relationship не найдена»; 403 является ошибкой и таким текстом не подменяется.+При отключённом autoaccept успешный read включает в уведомление: 
 + 
 +  * ID Relationship; 
 +  * ''user_who''; 
 +  * ''user_whom''; 
 +  * ''company''; 
 +  * ''neg_type''; 
 +  * сохранённый статус. 
 + 
 +Это информационные поля связи; они не являются универсальной схемой назначения ролей и сами по себе не дают права принять Ticket. Если разрешённый read вернул 404, helper может сформировать текст «Relationship не найдена»; 403 является ошибкой и таким текстом не подменяется. 
 + 
 +После успешного уведомления: 
 + 
 +  - Записать локальную причину manual_relationship_decision. 
 +  - Назначить повтор по NEG_REQUEST_PENDING_RECHECK_SECONDS. 
 +  - Освободить worker.
  
-После уведомления записывается локальная причина ''manual_relationship_decision'', назначается повтор по ''NEG_REQUEST_PENDING_RECHECK_SECONDS'', worker освобождается. В этом пути нет durable verification ack: при повторных проходах сообщение может отправляться снова.+В этом пути нет durable verification ack: при повторных проходах сообщение может отправляться снова.
  
 Автоматическая ветвь не готовит это уведомление и не выполняет данный read. Она запрашивает ACCEPTED через scoped Ticket API, передаёт Ticket в ''open_neg_request_accepted'' и убирает прежний локальный снимок с сохранением комнаты. Это не обход доменных требований активации в следующем handler. 404 при смене статуса запрашивает локальную очистку; иные ошибки API/отправки — общий retry без отката уже committed ACCEPTED. Автоматическая ветвь не готовит это уведомление и не выполняет данный read. Она запрашивает ACCEPTED через scoped Ticket API, передаёт Ticket в ''open_neg_request_accepted'' и убирает прежний локальный снимок с сохранением комнаты. Это не обход доменных требований активации в следующем handler. 404 при смене статуса запрашивает локальную очистку; иные ошибки API/отправки — общий retry без отката уже committed ACCEPTED.
Строка 844: Строка 1058:
 | Потеря сообщения / восстановление состава | ''INTERVAL_TIME_BD_REQ'', scoped PENDING-список | | Потеря сообщения / восстановление состава | ''INTERVAL_TIME_BD_REQ'', scoped PENDING-список |
  
-Autoaccept берётся при создании HandlerContext; изменение окружения не доказывает изменения уже работающего процесса. Defer находится в памяти и не занимает worker. Новая authoritative revision может снять ожидание, тот же снимок — нет. После рестарта очередь получает актуальные Ticket. Ошибка API-списка не равна подтверждённой пустой очереди.+При диагностике времени и очереди учитывать:
  
-При ручном режиме сначала сопоставьте фактические capabilities с read Relationship и проверьте 403 в журнале. Затем различайте назначение пользователя, решение по Ticket и действительную активацию Relationship. Для автоматического режима проверяйте сохранённый ACCEPTED, доставку следующему handler и отдельный requirements gate. Смена имени настройки или ручное выставление active не исправляют расхождение контракта уведомления.+  * autoaccept берётся при создании HandlerContext; изменение окружения не доказывает изменения работающего процесса; 
 +  * defer находится в памяти и не занимает worker; 
 +  * новая authoritative revision может снять ожидание, тот же снимок — нет; 
 +  * после restart очередь получает актуальные Ticket; 
 +  * ошибка API-списка не равна подтверждённой пустой очереди.
  
-===== Проверенные источники ===== +Порядок предметной диагностики:
-Git SHA/SHA-256 закреплены в metadata и documentation BPMN. Blockly/Python совпадают; обнаруженное расхождение относится к внешнему API contract, а не к отсутствующей ветке workspace. Схемы имеют ''isExecutable=false''; handler при анализе не исполнялся.+
  
-  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_neg_request_pending.py|sharix-open-handlers-examples / handlers/open_neg_request_pending.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. +  * **Ручной режим:** сопоставить фактические capabilities с чтением Relationship и проверить 403 в журнале. 
-  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handler_blocks/open_neg_request_pending.json|sharix-open-handlers-examples / generated_handler_blocks/open_neg_request_pending.json]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. +  * Отдельно установить назначение пользователя, решение по Ticket и действительную активацию Relationship. 
-  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/catalog.py|sharix-open-handlers-examples / catalog.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. +  * **Автоматический режим:** проверить сохранённый ACCEPTED, доставку следующему handler и отдельный requirements gate. 
-  * [[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. +Смена имени настройки или ручное выставление active не исправляют расхождение контракта уведомления.
-  * [[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/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.+
  
 ===== Связанные материалы ===== ===== Связанные материалы =====
-  * [[sharixopen:knowledge:scenarios:access_request_pending|ACCESS_REQUEST/PENDING: похожая стадия, другой payload уведомления]] +  * [[sharixopen:knowledge:scenarios:neg_request_accepted|Следующая стадия ACCEPTED]]. 
-  * [[sharixopen:knowledge:modules:handlers|Каноническая разработка обработчиков]] +  * [[sharixopen:knowledge:scenarios:neg_request_declined|Отказ и контрольный срок]]. 
-  * [[sharixopen:knowledge:scenarios:start|Все сценарии]]+  * [[sharixopen:knowledge:scenarios:partner_request|Заявка партнёра и связанные запросы]]. 
 +  * [[sharixopen:knowledge:modules:handlers|Исходники и выполнение handler]]. 
 +  * [[sharixopen:knowledge:operations:runtime_health|Диагностика runtime]]. 
 + 
 +===== Исходники, сверенные 31.10.2026 ===== 
 +Проверены опубликованные исходники указанных commits. Это анализ кода, а не подтверждение состояния сервера или выполнения процесса в установленной системе. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/apiviews/handler_workflow.py|sharix-open-backend: apiviews/handler_workflow.py]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_neg_request_pending.py|sharix-open-handlers-examples: handlers/open_neg_request_pending.py]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handlers/open_neg_request_pending.py|sharix-open-handlers-examples: generated_handlers/open_neg_request_pending.py]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handler_blocks/open_neg_request_pending.json|sharix-open-handlers-examples: generated_handler_blocks/open_neg_request_pending.json]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/catalog.py|sharix-open-handlers-examples: catalog.py]]. 
 +  * [[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]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/requesters.py|sharix-open-handlers-backend: core/requesters.py]]. 
 +  * [[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]]. 
 +  * [[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]]. 
 +  * [[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]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/signals.py|sharix-open-tickets: signals.py]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/api/handler_auth.py|sharix-open-tickets: api/handler_auth.py]]. 
 +  * [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/lib/tickets.py|sharix-open-tickets: lib/tickets.py]].
  
 ~~SHARIX_KNOWLEDGE_RELATED~~ ~~SHARIX_KNOWLEDGE_RELATED~~
  
sharixopen/knowledge/scenarios/neg_request_pending.1793217363.txt.gz · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX