{ "id": "ShariXKnowledgeSTRequestReopenedBPMN", "page": "sharixopen:knowledge:scenarios:st_request_reopened", "area": "open", "type": "procedure", "title": "Повторно открытая ST_REQUEST: ожидание назначения", "status": "review", "schema_version": 1, "relations": { "related_to": [ "ShariXKnowledgeSTRequestDoneBPMN", "ShariXKnowledgeSTRequestWontfixBPMN", "ShariXKnowledgeOpenKnowledgeModulesHandlers", "ShariXKnowledgeOpenKnowledgeDomainStrequest", "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth", "ShariXKnowledgeScenarios" ], "depends_on": [ "ShariXKnowledgeOpenKnowledgeModulesHandlers" ], "verified_by": [ "ShariXKnowledgeVerification" ] }, "extensions": { "taxonomy": { "domain": "business_processes", "lifecycle": "implemented", "component": "handlers_examples, handlers_backend, tickets", "parents": [ "ShariXKnowledgeScenarios" ], "terms": [ "audience_developer", "audience_support", "audience_reviewer", "audience_ai", "product_sharix_open", "material_scenario", "topic_handlers_support", "topic_handlers_runtime", "st_request", "ticket_reopened", "bpmn", "ticket", "blockly", "generated_python", "verification_workflow" ] }, "diagram": { "format": "bpmn", "executable": false }, "source_evidence": [ { "repository": "sharix-open-handlers-examples", "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_reopened.py", "sha256": "3a90597fd04397c49f5c801ce2a37a882bcc17269768d90e59db5121359f327d" }, { "repository": "sharix-open-handlers-examples", "commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_reopened.json", "sha256": "09edcb4f5451c480c96ce22822e5cd22dd158db0d7e30189dab947d7ba0df77a" }, { "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": "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": "utils.py", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5" }, { "repository": "sharix-open-tickets", "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59" }, { "repository": "sharix-open-tickets", "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368" }, { "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-tickets", "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "models/ticket.py", "sha256": "4768d9ef47b61bf3ae98bf2749ed142adc477978b44de29177363ba9664baa43" } ], "handler_process": { "handler_id": "open_st_request_reopened", "source_kind": "git_builtin", "canonical_python_verified": true, "reviewed_on": "2026-10-28", "adapter": "tools/build_st_observer_scenario.py", "adapter_sha256": "7bf292e35defb3f5675a29d3de3981beeaef1df3c004177ba6257d957bf6613e", "generator": "tools/generate_handler_bpmn.py", "generator_sha256": "ca837a7b9e55bf58184bdf408a8035d25667ed9c5d3068ca52380b2ff5682f95", "models": { "logic": "1ebf95619e472a57a1f448b754efc09882cf999280e4f20ebe27f72424a65a39", "external": "f5dd71cdd8149681caab5d859438910353ee09d5348808565a33da5ff234db44" } }, "diagram_view_bounds": { "reviewed_on": "2026-10-29", "models": [ "logic" ], "semantics_unchanged": true, "utility": "tools/expand_bpmn_view_bounds.py", "utility_sha256": "f878658b0115773e34f6c3eec72eba5984d873e60d8e2a4336b3dfb2a8026d87" }, "classification": { "schema": "sharix.knowledge.classification.v1", "products": [ "sharix_open" ], "audiences": [ "developer", "support", "reviewer", "ai" ], "material": "scenario", "topics": [ "handlers/support", "handlers/runtime" ], "tag_terms": [ "audience_developer", "audience_support", "audience_reviewer", "audience_ai", "product_sharix_open", "material_scenario", "topic_handlers_support", "topic_handlers_runtime", "st_request", "ticket_reopened", "bpmn", "ticket", "blockly", "generated_python", "verification_workflow" ], "registry_document": "ShariXKnowledgeClassification", "state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста" }, "editorial_review": { "date": "2026-10-31", "scope": "Конкретизация шагов, участников, условий, результатов и диагностики; перечисления; BPMN сохранены побайтово", "current_source_records_verified": 14, "original_source_evidence_recheck": "Все исходные commits и SHA-256 повторно совпали после git fetch; дополнительные функциональные источники включены в source_evidence", "canonical_regeneration": { "both_python_copies_match": true, "generator_sources_verified": 11, "handler_executed": false }, "runtime_checked": false } }, "content_sha256": "04b9c674b51b830ef0fa6361d62385b1930428591c919b2e4082fc983eb9b5e4", "schema": 1 } ====== Повторно открытая ST_REQUEST: ожидание назначения ====== ~~NOCACHE~~ **Назначение:** [[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#st_request|Обработчики → ST_REQUEST]] · [[sharixopen:knowledge:classification:topics#runtime|Обработчики → Runtime]]. **Область:** ShariX Open. **Обработчик:** ''open_st_request_reopened'', тип ''ST_REQUEST'' (1), рабочий статус ''REOPENED'' (110). 31.10.2026 исходники повторно получены из Git: обе Python-копии совпали с новой канонической генерацией Blockly, проверены 11 исходников генераторов. Сам handler не исполнялся. Выбранная серверная версия, её настройки и работающие API/XMPP проверяются отдельно. ===== Назначение и границы ===== Вход — уже переоткрытое обращение. Обработчик: * ждёт повторного назначения; * не выбирает человека и не заполняет assigned_to; * не переводит Ticket в ASSIGNED самостоятельно; * не возобновляет автоматически исполнение содержания заявки. STREQ_AUTOACCEPT в этой ветви не используется. Для профильной проверки само переоткрытие не создаёт: * новую попытку RequirementCheck; * новую редакцию документа; * очистку прежнего verification_runtime.completed. Повторное подтверждение оформляют с учётом доменной попытки и редакции. Прохождение старого Ticket ещё раз не гарантирует нового результата. Граница marker описана в [[sharixopen:knowledge:scenarios:st_request_done|DONE]] и [[sharixopen:knowledge:scenarios:st_request_wontfix|WONTFIX]]. ===== Проход и локальное ожидание (BPMN) ===== {"notes": ["Опубликованная встроенная реализация; не доказательство выбранной версии на сервере.", "Процесс isExecutable=false, никакой handler при генерации не исполняется.", "deferred_until — символ локального срока, не имя параметра окружения."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_reopened.py", "repository": "sharix-open-handlers-examples", "sha256": "3a90597fd04397c49f5c801ce2a37a882bcc17269768d90e59db5121359f327d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_reopened.json", "repository": "sharix-open-handlers-examples", "sha256": "09edcb4f5451c480c96ce22822e5cd22dd158db0d7e30189dab947d7ba0df77a"}, {"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/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": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}]} reopened_start reopened_status reopened_reason reopened_defer reopened_cleanup reopened_end reopened_defer_error reopened_error reopened_wait reopened_timer reopened_revision reopened_ready reopened_Flow_0 reopened_Flow_0 reopened_Flow_12 reopened_Flow_1 reopened_Flow_2 reopened_Flow_1 reopened_Flow_4 ST_REQUEST_REOPENED_RECHECK_SECONDS; пустой аргумент reason использует сохранённую локальную причину. reopened_Flow_4 reopened_Flow_5 reopened_Flow_2 reopened_Flow_3 reopened_Flow_3 reopened_Flow_6 DEFERRED_TICKET_RECHECK_SECONDS reopened_Flow_6 reopened_Flow_7 reopened_Flow_5 reopened_Flow_7 reopened_Flow_8 reopened_Flow_9 reopened_Flow_8 reopened_Flow_10 deferred_until reopened_Flow_9 reopened_Flow_11 Дубликат ревизии не снимает defer; при новом статусе очистка в следующем проходе/по ticket.moved. reopened_Flow_10 reopened_Flow_11 reopened_Flow_12 Один проход в своём рабочем статусе: - Записать локальную причину support_reassignment. - Назначить defer по ST_REQUEST_REOPENED_RECHECK_SECONDS. Пустой reason использует ранее сохранённую причину. - Завершить проход и освободить worker. Причина относится к runtime и журналу. Она не добавляет комментарий в Ticket и не уведомляет пользователя. Worker после прохода освобождается. Когда срок ''deferred_until'' наступает либо получена новая authoritative revision, Ticket становится готов к повторной проверке; одинаковый снимок не сбрасывает ожидание. Фактический запуск зависит от свободного worker и соединения XMPP. Defer хранится в памяти; после рестарта состав очереди сверяется с backend заново. При чужом статусе запрашивается удаление локального Ticket и комнаты. Одного возврата None недостаточно для удаления: runtime учитывает явный запрос очистки. Неожиданное исключение обрабатывается общим ''processing_error'' с defer по ''DEFERRED_TICKET_RECHECK_SECONDS''; автоматическое бизнес-решение вместо пользователя не принимается. ===== Внешний пользователь и смена владельца (BPMN) ===== {"notes": ["Опубликованная встроенная реализация; не доказательство выбранной версии на сервере.", "Процесс isExecutable=false, никакой handler при генерации не исполняется.", "deferred_until — символ локального срока, не имя параметра окружения.", "Изменение статуса и best-effort XMPP доставка — отдельные операции. При потере события есть periodic reconciliation."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_reopened.py", "repository": "sharix-open-handlers-examples", "sha256": "3a90597fd04397c49f5c801ce2a37a882bcc17269768d90e59db5121359f327d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_reopened.json", "repository": "sharix-open-handlers-examples", "sha256": "09edcb4f5451c480c96ce22822e5cd22dd158db0d7e30189dab947d7ba0df77a"}, {"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/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": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}]} person_start person_choose person_send person_end person_Flow_0 person_Flow_0 person_Flow_1 person_Flow_1 person_Flow_2 person_Flow_2 {"notes": ["Опубликованная встроенная реализация; не доказательство выбранной версии на сервере.", "Процесс isExecutable=false, никакой handler при генерации не исполняется.", "deferred_until — символ локального срока, не имя параметра окружения.", "Изменение статуса и best-effort XMPP доставка — отдельные операции. При потере события есть periodic reconciliation."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_reopened.py", "repository": "sharix-open-handlers-examples", "sha256": "3a90597fd04397c49f5c801ce2a37a882bcc17269768d90e59db5121359f327d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_reopened.json", "repository": "sharix-open-handlers-examples", "sha256": "09edcb4f5451c480c96ce22822e5cd22dd158db0d7e30189dab947d7ba0df77a"}, {"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/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": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}]} backend_request backend_acl backend_allowed backend_commit backend_publish backend_end backend_reject backend_Flow_0 backend_Flow_0 backend_Flow_1 backend_Flow_1 backend_Flow_2 backend_Flow_3 backend_Flow_2 backend_Flow_4 backend_Flow_4 backend_Flow_5 backend_Flow_5 backend_Flow_3 Для внешнего решения проверяются отдельно: * право чтения конкретного Ticket; * право менять его статус; * разрешённый переход текущего lifecycle; * доменная граница: связанный заказ должен изменяться через действия заказа. Авторство обращения само по себе не даёт права смены статуса. Из REOPENED допустимы: * **ASSIGNED:** вернуть обращение на стадию назначения; выбранного человека проверить отдельно. * **WONTFIX:** зафиксировать отказ от выполнения, далее действует соответствующий сценарий. * **DUPLICATE:** признать обращение дубликатом, далее действует сценарий ожидания закрытия. Переход в ASSIGNED сам по себе не заполняет assigned_to. Handler REOPENED не выбирает исход за пользователя. После commit backend направляет: * **ticket.moved прежнему handler:** локальный снимок исключается; для выполняющегося worker удаление откладывается до завершения прохода. * **ticket.changed новому зарегистрированному handler:** новое состояние ставится в его очередь. У CLOSED нет отдельного open_st_request_closed в каталоге. Сохранение статуса и доставка события — разные операции. XMPP-доставка best effort и не является частью транзакции сохранения Ticket. Потерю сообщения восстанавливает scoped periodic reconciliation по ''INTERVAL_TIME_BD_REQ''. Успешный список без Ticket позволяет убрать прежний снимок; ошибка списка не должна трактоваться как пустая очередь. Новый локальный проход не заменяет проверку актуального backend-состояния. ===== Настройки и диагностика ===== Именованный интервал — ''ST_REQUEST_REOPENED_RECHECK_SECONDS'', минимум одна секунда; реальное значение конкретного сервера здесь не предполагается. Обработчик не содержит фиксированного срока автоматического закрытия. Для общего восстановления используется ''DEFERRED_TICKET_RECHECK_SECONDS'', для сверки состава — ''INTERVAL_TIME_BD_REQ''. Порядок диагностики долгого ожидания: - Прочитать актуальные статус и ревизию Ticket. - Сверить выбранные Python/workspace с канонической генерацией. - Проверить именованный интервал, локальную причину и момент готовности defer. - Проверить доступность внешнего действия и права принимающего решение. - Проверить scoped API, ready-очередь, XMPP и periodic reconciliation. Повтор таймера без изменения статуса штатен, пока внешнее решение не принято. Неопределённый ответ записи требует чтения сохранённого состояния перед повтором. ===== Проверенные источники ===== Алгоритм извлечён узким адаптером известной структуры Blockly и сверен реальным renderer с Python. Неизвестная структура или изменение изученных runtime/ACL-источников блокируют такую генерацию до повторного анализа. Это авторский инструмент для двух известных observer-сценариев, не общий автоматический hook обновления Wiki. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_st_request_reopened.py|sharix-open-handlers-examples / handlers/open_st_request_reopened.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb. * [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handler_blocks/open_st_request_reopened.json|sharix-open-handlers-examples / generated_handler_blocks/open_st_request_reopened.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/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/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/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/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. ===== Связанные материалы ===== * [[sharixopen:knowledge:scenarios:st_request_done|DONE]] * [[sharixopen:knowledge:scenarios:st_request_wontfix|WONTFIX]] * [[sharixopen:knowledge:modules:handlers|Обработчики и канонический Python]] * [[sharixopen:knowledge:scenarios:start|Все сценарии]] ~~SHARIX_KNOWLEDGE_RELATED~~