| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| sharixopen:knowledge:scenarios:neg_request_pending [2026/10/28 21:46] – [sharixknowledge] approved package sx_knowledge_api_open | sharixopen:knowledge:scenarios:neg_request_pending [2026/10/31 11:25] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open |
|---|
| "ShariXKnowledgeOpenKnowledgeModulesHandlers", | "ShariXKnowledgeOpenKnowledgeModulesHandlers", |
| "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth", | "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth", |
| "ShariXKnowledgeScenarios" | "ShariXKnowledgeScenarios", |
| | "ShariXKnowledgeHub", |
| | "ShariXKnowledgeNegRequestAcceptedBPMN", |
| | "ShariXKnowledgeNegRequestDeclinedBPMN", |
| | "ShariXKnowledgePartnerRequestScenario" |
| ] | ] |
| }, | }, |
| "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" |
| ] | ] |
| }, | }, |
| "utility": "tools/expand_bpmn_view_bounds.py", | "utility": "tools/expand_bpmn_view_bounds.py", |
| "utility_sha256": "f878658b0115773e34f6c3eec72eba5984d873e60d8e2a4336b3dfb2a8026d87" | "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": "6327e6c3b8771c0c24bdf920327d0c41ef1a0454e4aefe58739551292de6a289", | "content_sha256": "df7336be740bed2364862514e34b4e6f49892eaced52915a23f2d5b3cf07bfe6", |
| "schema": 1 | "schema": 1 |
| } | } |
| ~~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. Эта страница не объявляет ручной путь безусловно работоспособным в стандартном каталоге. |
| </sharix-bpmn> | </sharix-bpmn> |
| |
| При отключённом autoaccept успешный read формирует текст с id Relationship, ''user_who'', ''user_whom'', company, ''neg_type'' и сохранённым статусом. Это информационные поля связи; они не являются универсальной схемой назначения ролей и сами по себе не дают права принять Ticket. Если разрешённый read вернул 404, helper может сформировать текст «Relationship не найдена»; 403 является ошибкой и таким текстом не подменяется. | При отключённом autoaccept успешный read включает в уведомление: |
| |
| После уведомления записывается локальная причина ''manual_relationship_decision'', назначается повтор по ''NEG_REQUEST_PENDING_RECHECK_SECONDS'', worker освобождается. В этом пути нет durable verification ack: при повторных проходах сообщение может отправляться снова. | * ID Relationship; |
| | * ''user_who''; |
| | * ''user_whom''; |
| | * ''company''; |
| | * ''neg_type''; |
| | * сохранённый статус. |
| | |
| | Это информационные поля связи; они не являются универсальной схемой назначения ролей и сами по себе не дают права принять Ticket. Если разрешённый read вернул 404, helper может сформировать текст «Relationship не найдена»; 403 является ошибкой и таким текстом не подменяется. |
| | |
| | После успешного уведомления: |
| | |
| | - Записать локальную причину manual_relationship_decision. |
| | - Назначить повтор по NEG_REQUEST_PENDING_RECHECK_SECONDS. |
| | - Освободить worker. |
| | |
| | В этом пути нет 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. |
| | Потеря сообщения / восстановление состава | ''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~~ |
| |