{
"id": "ShariXKnowledgeSTRequestInProcessBPMN",
"page": "sharixopen:knowledge:scenarios:st_request_inprocess",
"area": "open",
"type": "procedure",
"title": "ST_REQUEST в работе: обычное обращение и профильная проверка",
"status": "review",
"schema_version": 1,
"relations": {
"related_to": [
"ShariXKnowledgeSTRequestAssignedBPMN",
"ShariXKnowledgeSTRequestWaitingBPMN",
"ShariXKnowledgeOpenKnowledgeModulesHandlers",
"ShariXKnowledgeOpenKnowledgeDomainStrequest",
"ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",
"ShariXKnowledgeScenarios"
],
"depends_on": [
"ShariXKnowledgeOpenKnowledgeModulesHandlers"
],
"verified_by": [
"ShariXKnowledgeVerification"
]
},
"extensions": {
"taxonomy": {
"domain": "business_processes",
"lifecycle": "implemented",
"component": "handlers_examples, handlers_backend, tickets, dbsynce",
"parents": [
"ShariXKnowledgeScenarios"
],
"terms": [
"audience_developer",
"audience_integrator",
"audience_support",
"audience_reviewer",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_handlers_support",
"topic_security_requirements",
"topic_handlers_blockly",
"st_request",
"ticket_in_process",
"verification_workflow",
"bpmn",
"ticket",
"blockly",
"generated_python",
"provenance",
"requirements"
]
},
"diagram": {
"format": "bpmn",
"executable": false
},
"source_evidence": [
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "generated_handler_blocks/open_st_request_inprocess.json",
"sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_st_request_inprocess.py",
"sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_st_request_done.py",
"sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_st_request_wontfix.py",
"sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"
},
{
"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": "services/verification_results.py",
"sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "services/st_request_contracts.py",
"sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "views/ticket_detail.py",
"sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "utils.py",
"sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"
},
{
"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": "api/views/handler_workflow.py",
"sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "apiviews/handler_workflow.py",
"sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/verification_workflow.py",
"sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/verification_algorithms.py",
"sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/verification_responsibility.py",
"sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/requirement_checks.py",
"sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/integration_ports.py",
"sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"
},
{
"repository": "sharix-open-tickets",
"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
"path": "models/ticket.py",
"sha256": "4768d9ef47b61bf3ae98bf2749ed142adc477978b44de29177363ba9664baa43"
}
],
"handler_process": {
"handler_id": "open_st_request_inprocess",
"source_kind": "git_builtin",
"canonical_python_verified": true,
"reviewed_on": "2026-10-28",
"generator": "tools/generate_handler_bpmn.py",
"generator_sha256": "ca837a7b9e55bf58184bdf408a8035d25667ed9c5d3068ca52380b2ff5682f95",
"models": {
"logic": "3b0b6e129600124d7b1b11d0bae99e7f4d173d101d4695bb36597272ce5519c3",
"verification": "83e3add11cccb5abc695995ed7168405b22a79471fba00ea0b0236df8862710a",
"external": "3e5e98157d24f8d5033e64a74ed0b80e9f1d04b5ef996b83dd4b4f5ff822f114"
}
},
"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",
"integrator",
"support",
"reviewer",
"ai"
],
"material": "scenario",
"topics": [
"handlers/support",
"security/requirements",
"handlers/blockly"
],
"tag_terms": [
"audience_developer",
"audience_integrator",
"audience_support",
"audience_reviewer",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_handlers_support",
"topic_security_requirements",
"topic_handlers_blockly",
"st_request",
"ticket_in_process",
"verification_workflow",
"bpmn",
"ticket",
"blockly",
"generated_python",
"provenance",
"requirements"
],
"registry_document": "ShariXKnowledgeClassification",
"state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста"
},
"editorial_review": {
"date": "2026-10-31",
"scope": "Конкретизация шагов, участников, условий, результатов и диагностики; перечисления; BPMN сохранены побайтово",
"current_source_records_verified": 23,
"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": "82b312aaaadefb1e5d8f9d650327088b0327bfd6489c4ad6fee60c61cb29d93f",
"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#integrator|Интегратор]] · [[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#trebovanija|Доступ → Требования]] · [[sharixopen:knowledge:classification:topics#blockly|Обработчики → Blockly]].
**Область:** ShariX Open. **Обработчик:** ''open_st_request_inprocess'', тип ''ST_REQUEST'' (1), рабочий статус ''IN_PROCESS''. 31.10.2026 исходники повторно получены из Git: обе Python-копии совпали с новой канонической генерацией Blockly, проверены 11 исходников генераторов. Сам handler не исполнялся. Выбранная серверная версия, её настройки и работающие API/XMPP проверяются отдельно.
===== Назначение и границы =====
Обработчик сопровождает обращение на стадии выполнения. Порядок выбора ветви:
- Проверить, что локальный снимок имеет рабочий статус IN_PROCESS.
- Прочитать стабильный контракт из Ticket.json: document-verification-v1 или requirement-check-v1.
- Для профильного контракта вызвать организацию проверки и advance; до STREQ_AUTOACCEPT эта ветвь не доходит.
- Для обычного обращения использовать STREQ_AUTOACCEPT: ожидать действия пользователя либо запросить DONE.
В REST-снимке контракт читается непосредственно из metadata, в первоначальном XMPP-конверте учитывается вложенное поле json. Заголовок обращения не определяет контракт.
Результат зависит от вида обращения:
* **Обычное, STREQ_AUTOACCEPT выключен:** ожидание работы пользователя.
* **Обычное, STREQ_AUTOACCEPT включён:** запрос DONE; содержание обращения при этом не исполняется и исправление проблемы не доказывается.
* **Профильная проверка:** решение определяется состоянием документа/попытки проверки и доменными правилами; autoaccept не заменяет проверяющего.
End event на схемах завершает показанный проход или операцию. Все процессы помечены ''isExecutable=false'': просмотрщик Wiki их не запускает. Runtime исполняет выбранный проверенный Python, полученный из Blockly; XML BPMN служит описанием реализации.
===== Алгоритм одного прохода и ожидание (BPMN) =====
{"notes": ["Опубликованный Git built-in; не подтверждение выбранной версии на любом сервере.", "Процессы не исполняются просмотрщиком. End event завершает показанную операцию, не всю заявку.", "deferred_until — символ локального срока, не имя параметра конфигурации."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_inprocess.json", "repository": "sharix-open-handlers-examples", "sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_inprocess.py", "repository": "sharix-open-handlers-examples", "sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_done.py", "repository": "sharix-open-handlers-examples", "sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"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": "services/verification_results.py", "repository": "sharix-open-tickets", "sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/st_request_contracts.py", "repository": "sharix-open-tickets", "sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"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": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/integration_ports.py", "repository": "sharix-open-backend", "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"}]}
ip_start
ip_status
ip_contract
ip_organize
ip_advance
ip_special_end
ip_stale
ip_stale_end
ip_auto
ip_manual
ip_transition
ip_confirmed
ip_remove
ip_done
ip_not_found
ip_api_error
ip_workflow_error
ip_notify_error
ip_retry
ip_wait
ip_timer
ip_revision
ip_ready
ip_Flow_0
ip_Flow_0
ip_Flow_23
ip_Flow_1
ip_Flow_2
ip_Flow_1
ip_Flow_4
ip_Flow_7
Только requirement-check-v1; документ — no-op. Ошибка API/JSON логируется, затем advance всё равно вызывается.
ip_Flow_4
ip_Flow_5
Scoped verification API, уведомления, ожидание либо DONE/WONTFIX. Подробно — на следующей схеме.
ip_Flow_5
ip_Flow_6
ip_Flow_6
ip_Flow_2
ip_Flow_3
ip_Flow_3
ip_Flow_7
ip_Flow_8
ip_Flow_9
ST_REQUEST_IN_PROCESS_RECHECK_SECONDS. В журнале defer: st_request_in_process. Содержание обращения не выполняется.
ip_Flow_8
ip_Flow_14
Без явного send_to_handler: новый владелец получает backend wakeup, с periodic fallback.
ip_Flow_9
ip_Flow_10
ip_Flow_10
ip_Flow_11
ip_Flow_13
ip_Flow_11
ip_Flow_12
ip_Flow_12
ip_Flow_13
ip_Flow_15
ip_Flow_16
ip_Flow_17
DEFERRED_TICKET_RECHECK_SECONDS; исключение не откатывает уже committed доменные изменения или статус.
ip_Flow_15
ip_Flow_16
ip_Flow_17
ip_Flow_18
ip_Flow_14
ip_Flow_18
ip_Flow_19
ip_Flow_20
ip_Flow_19
ip_Flow_21
deferred_until
ip_Flow_20
ip_Flow_22
Дубликат ревизии не снимает ожидание. Запуск при готовом XMPP и свободном worker.
ip_Flow_21
ip_Flow_22
ip_Flow_23
* Снимок уже не в ''IN_PROCESS'' — запросить удаление Ticket из локальной очереди и удаление комнаты.
* Профильный контракт — явно вызвать подготовку организации, затем ''advance_verification_workflow'' и завершить этот проход.
* Обычное обращение, autoaccept отключён — записать локальную причину ''support_execution'', назначить повтор по ''ST_REQUEST_IN_PROCESS_RECHECK_SECONDS'' и освободить worker. Строка ''st_request_in_process'' передаётся как причина для журнала defer; она не подменяет сохранённую локальную ''support_execution'' и не является комментарием Ticket.
* Обычное обращение, autoaccept включён — запросить ''DONE'' через scoped Ticket API. При подтверждённом переходе удалить локальный Ticket и комнату. В этой ветви **нет явного** ''send_to_handler'': новый владелец получает backend wakeup; periodic reconciliation восстанавливает очередь при потере сообщения.
404 при scoped смене статуса означает, что текущий контекст больше не может продолжать работу с Ticket: runtime запрашивает очистку. Остальные ошибки перехода, отправки либо неожиданные исключения передаются общему восстановлению ''processing_error'' и ''DEFERRED_TICKET_RECHECK_SECONDS''. Уже committed статус или доменный результат от этого не откатывается.
===== Профильный workflow: backend и ответ обработчику (BPMN) =====
{"notes": ["Опубликованный Git built-in; не подтверждение выбранной версии на любом сервере.", "Процессы не исполняются просмотрщиком. End event завершает показанную операцию, не всю заявку.", "deferred_until — символ локального срока, не имя параметра конфигурации.", "Это раскрытие примитива advance и backend-контракта. Ошибки organize не подавляют advance.", "60/300 секунд — текущие константы Python, а не обещание точного времени запуска."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_inprocess.json", "repository": "sharix-open-handlers-examples", "sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_inprocess.py", "repository": "sharix-open-handlers-examples", "sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_done.py", "repository": "sharix-open-handlers-examples", "sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"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": "services/verification_results.py", "repository": "sharix-open-tickets", "sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/st_request_contracts.py", "repository": "sharix-open-tickets", "sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"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": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/integration_ports.py", "repository": "sharix-open-backend", "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"}]}
backend_request
backend_acl
backend_doc
backend_manual
backend_check
backend_terminal
backend_pending
backend_algorithm
backend_outcome
backend_completed
backend_other
backend_waiting
backend_missing
backend_Flow_0
backend_Flow_0
backend_Flow_1
backend_Flow_1
backend_Flow_2
backend_Flow_3
DocumentVersion здесь не создаётся.
backend_Flow_2
backend_Flow_3
backend_Flow_4
backend_Flow_4
backend_Flow_5
backend_Flow_6
backend_Flow_6
backend_Flow_7
backend_Flow_8
Ручной режим/нет алгоритма/ответственного/исполнителя → manual_required. Нетерминальный результат → pending. Доменные правила могут отклонить результат.
backend_Flow_7
backend_Flow_9
backend_Flow_9
backend_Flow_10
backend_Flow_11
backend_Flow_5
backend_Flow_10
Не-PENDING и не PASSED/FAILED не превращается автоматически в отрицательный результат.
backend_Flow_8
backend_Flow_11
{"notes": ["Опубликованный Git built-in; не подтверждение выбранной версии на любом сервере.", "Процессы не исполняются просмотрщиком. End event завершает показанную операцию, не всю заявку.", "deferred_until — символ локального срока, не имя параметра конфигурации.", "Это раскрытие примитива advance и backend-контракта. Ошибки organize не подавляют advance.", "60/300 секунд — текущие константы Python, а не обещание точного времени запуска."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_inprocess.json", "repository": "sharix-open-handlers-examples", "sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_inprocess.py", "repository": "sharix-open-handlers-examples", "sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_done.py", "repository": "sharix-open-handlers-examples", "sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"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": "services/verification_results.py", "repository": "sharix-open-tickets", "sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/st_request_contracts.py", "repository": "sharix-open-tickets", "sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"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": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/integration_ports.py", "repository": "sharix-open-backend", "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"}]}
runtime_receive
runtime_notify
runtime_complete
runtime_status
runtime_ok
runtime_handoff
runtime_remove
runtime_end
runtime_defer
runtime_wait_end
runtime_false
runtime_api_error
runtime_retry
runtime_error_end
runtime_Flow_0
Подробно в тексте: ack не подтверждает прочтение человеком.
runtime_Flow_0
runtime_Flow_1
runtime_Flow_1
runtime_Flow_2
runtime_Flow_3
runtime_Flow_2
runtime_Flow_5
runtime_Flow_5
runtime_Flow_6
runtime_Flow_7
runtime_Flow_6
runtime_Flow_8
runtime_Flow_8
runtime_Flow_9
runtime_Flow_9
Причина журнала verification_<state>, пустое состояние → verification_waiting. completed без target_status тоже ждёт 300 с.
runtime_Flow_3
runtime_Flow_4
runtime_Flow_4
runtime_Flow_7
runtime_Flow_10
runtime_Flow_10
runtime_Flow_11
runtime_Flow_11
Схема раскрывает ''advance''; подготовка организации предшествует ему и описана ниже. Внешний вызов проходит через ''dbsynce/api/handler/ticket/{ticket_id}/verification/''. Backend требует handler identity, capability ''verification.workflow'' и доступ к конкретному Ticket в scope обработчика; состояние хранится на стороне backend. Доверенный ключ не означает произвольный доступ ко всем Ticket.
==== Проверка документа ====
Для document-verification-v1:
* advance возвращает manual_required и первоначальные уведомления;
* новая DocumentVersion не создаётся этим вызовом;
* проверяющий вносит решение через доступный интерфейс;
* ожидаемая редакция документа и применение результата проверяются отдельным DONE/WONTFIX workflow.
Наличие уведомления или статус IN_PROCESS не означают, что документ подтверждён.
==== Проверка требования ====
Для ''requirement-check-v1'' backend загружает конкретную попытку ''RequirementCheck'' по стабильному public id из Ticket. Отсутствующая попытка — ошибка, а не положительный результат.
* Уже ''PASSED'' или ''FAILED'' — вернуть ''completed'', outcome и целевой статус соответственно ''DONE'' или ''WONTFIX''.
* ''PENDING'' — вызвать зарегистрированный алгоритм подтверждения. Ручной режим, отсутствующий/недоступный алгоритм, необходимый неназначенный ответственный либо неподключённый executor ведут к ''manual_required''. Ответственный, когда он требуется политикой, должен быть активным пользователем.
* Нетерминальный результат алгоритма оставляет ожидание. При терминальном результате backend применяет доменные правила: баллы и порог, ответственного, допустимость завершения попытки. Ошибка валидации не становится успехом: возвращается ожидание с ошибкой. Фактически сохранённый ''PASSED''/''FAILED'' имеет приоритет над одним словом outcome, полученным от алгоритма.
* Иное уже сохранённое состояние попытки возвращается как состояние ожидания; оно не приравнивается автоматически к ''FAILED''.
Runtime сначала доставляет возвращённые уведомления. При ''state=completed'' и непустом ''target_status'' он запрашивает указанный переход, затем явно передаёт Ticket: ''outcome=passed'' — в ''open_st_request_done'', остальные outcome — в ''open_st_request_wontfix''. После успешной передачи Ticket удаляется из текущей очереди с сохранением комнаты. Backend текущего контракта возвращает согласованные пары ''passed/DONE'' и ''failed/WONTFIX''; схема не вводит дополнительного ручного решения по статусу.
Если ''completed'' пришёл без ''target_status'', переход не выполняется: остаётся повторная проверка. Не следует по одному слову ''completed'' считать заявку окончательно закрытой.
===== Организация встречи не является результатом проверки =====
Подготовка организации проверки выполняется явно перед advance:
* **document-verification-v1:** примитив ничего не меняет.
* **requirement-check-v1:** вызывается organize и публичный интеграционный порт подготовки встречи.
* **Провайдер не подключён либо available=false:** advance всё равно продолжается; это не отрицательный результат проверки.
При доступной организации сохраняются:
* booking в RequirementCheck.organization_data;
* организационные данные в Ticket.json.organization;
* при отсутствии активной записи — уведомление автору о self-booking URL, если оно предусмотрено;
* уведомление проверяющим об assignment URL, если оно предусмотрено.
Это организация встречи, а не изменение результата RequirementCheck. Ссылка не доказывает запись, состоявшуюся встречу или успешную проверку.
Ошибка HTTP/разбора ответа ''organize'' логируется; проход продолжается с ''advance''. Ошибка отправки уведомления вне этого локального catch может попасть в общий retry. Внутреннее устройство необязательного провайдера встреч здесь не описывается: закреплён именно публичный порт backend.
===== Внешнее решение и смена владельца (BPMN) =====
{"notes": ["Опубликованный Git built-in; не подтверждение выбранной версии на любом сервере.", "Процессы не исполняются просмотрщиком. End event завершает показанную операцию, не всю заявку.", "deferred_until — символ локального срока, не имя параметра конфигурации.", "XMPP — best effort; acknowledge означает сохранение ключа после send, не прочтение.", "Два wakeup-события публикуются после commit. Потерю доставки восстанавливает scoped periodic reconciliation."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_inprocess.json", "repository": "sharix-open-handlers-examples", "sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_inprocess.py", "repository": "sharix-open-handlers-examples", "sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_done.py", "repository": "sharix-open-handlers-examples", "sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"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": "services/verification_results.py", "repository": "sharix-open-tickets", "sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/st_request_contracts.py", "repository": "sharix-open-tickets", "sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"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": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/integration_ports.py", "repository": "sharix-open-backend", "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"}]}
reviewer_start
reviewer_form
reviewer_send
reviewer_end
reviewer_Flow_0
В форме специализированной проверки — комментарий и применимые баллы. Авторство Ticket само по себе не даёт право менять статус.
reviewer_Flow_0
reviewer_Flow_1
reviewer_Flow_1
reviewer_Flow_2
reviewer_Flow_2
{"notes": ["Опубликованный Git built-in; не подтверждение выбранной версии на любом сервере.", "Процессы не исполняются просмотрщиком. End event завершает показанную операцию, не всю заявку.", "deferred_until — символ локального срока, не имя параметра конфигурации.", "XMPP — best effort; acknowledge означает сохранение ключа после send, не прочтение.", "Два wakeup-события публикуются после commit. Потерю доставки восстанавливает scoped periodic reconciliation."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_inprocess.json", "repository": "sharix-open-handlers-examples", "sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_inprocess.py", "repository": "sharix-open-handlers-examples", "sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_done.py", "repository": "sharix-open-handlers-examples", "sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"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": "services/verification_results.py", "repository": "sharix-open-tickets", "sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/st_request_contracts.py", "repository": "sharix-open-tickets", "sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"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": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/integration_ports.py", "repository": "sharix-open-backend", "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"}]}
ticket_request
ticket_acl
ticket_allowed
ticket_save
ticket_publish
ticket_end
ticket_denied
ticket_Flow_0
ticket_Flow_0
ticket_Flow_1
ticket_Flow_1
ticket_Flow_2
ticket_Flow_3
В одной atomic-секции; это ещё не применение доменного результата проверки.
ticket_Flow_2
ticket_Flow_4
ticket_Flow_4
ticket_Flow_5
ticket_Flow_5
ticket_Flow_3
Ручной результат вносится через карточку Ticket:
- Пользователь выбирает доступный DONE либо WONTFIX.
- Передаёт комментарий; для requirement-check-v1 при необходимости указывает применимые баллы.
- View проверяет разрешение перехода и в atomic-секции сохраняет metadata результата вместе со сменой статуса.
- Следующий профильный handler применяет доменный результат.
Форма Tickets не импортирует dbsynce и не подтверждает проверку сама. Произвольный API-клиент может не сохранять поля результата так же, как эта форма.
Чтение Ticket и право менять его статус проверяются отдельно. Авторство само по себе не даёт право менять статус; учитываются права управления Ticket и доступные переходы. Связанные с заказом Ticket не должны обходить lifecycle заказа через универсальную форму. Наличие API для смены статуса не доказывает, что произвольный API-клиент сохраняет все поля ручной проверки так же, как эта форма.
После commit канонический backend направляет ''ticket.changed'' новому владельцу и ''ticket.moved'' прежнему ''IN_PROCESS''. Прежний runtime исключает локальный снимок; для in-flight worker удаление откладывается до его завершения. Потеря XMPP-события восстанавливается периодическим scoped списком. Действие пользователя и доставка wakeup — разные операции: сохранённый статус не означает мгновенного запуска следующего worker.
Следующий ''DONE''/''WONTFIX'' handler для профильного контракта вызывает ''complete'': применяет/сверяет доменный результат, переоценивает связанные требования и при успешном завершении переводит Ticket в ''CLOSED''. Для обычного обращения эти стадии имеют другое поведение. Поэтому переход из ''IN_PROCESS'' в ''DONE'' нельзя трактовать как безусловное завершение всех связанных проверок и активаций.
===== Уведомления и подтверждение отправки =====
Для уведомления backend возвращает audience, текст и ключ:
* **creator:** runtime получает JID автора через защищённый API.
* **reviewers:** JID активных участников группы списка Ticket возвращает отдельный защищённый endpoint; повторяющиеся адреса исключаются.
* **Подтверждение:** после фактической попытки отправки runtime вызывает ack_notification для ключа; подтверждённые ключи backend больше не возвращает.
Если получателя нет, доставка не подтверждается. Членство в списке получателей не выдаёт прав на Ticket.
Это защита от обычных повторных отправок, а не гарантия exactly-once или прочтения человеком. Ошибка сохранения ack после отправки может привести к повтору уведомления. Отсутствие получателя не превращается в подтверждённую доставку. Сообщение проверяющему не выдаёт ему права на Ticket и не заменяет его решение.
===== Таймеры и восстановление =====
^ Ситуация ^ Повтор / причина ^
| Обычное обращение в ручном режиме | ''ST_REQUEST_IN_PROCESS_RECHECK_SECONDS''; локальная ''support_execution'', журнал defer ''st_request_in_process'' |
| Ошибка HTTP/разбора ''advance'' | 60 секунд; ''verification_backend_error'' |
| Ответ ''pending'' | 60 секунд; ''verification_pending'' |
| ''manual_required'' и другие нетерминальные состояния | 300 секунд; ''verification_''; при пустом state — ''verification_waiting'' |
| ''completed'' без target_status | 300 секунд; ''verification_completed'' |
| Необработанное локальными catch исключение | ''DEFERRED_TICKET_RECHECK_SECONDS''; ''processing_error'' |
| Сверка состава очереди | ''INTERVAL_TIME_BD_REQ''; scoped список текущего владельца |
60 и 300 секунд — константы изученной версии Python, а не отдельные настройки окружения. Все интервалы задают момент готовности к новому проходу; свободный worker, соединение XMPP и доступность backend влияют на фактический запуск. Defer хранится в памяти процесса. После рестарта runtime заново получает актуальное состояние. Новая authoritative revision может снять прежний defer, повтор того же снимка — нет. Ошибка scoped списка не должна очищать локальную очередь как будто backend вернул пустой результат.
===== Что проверить при зависшем IN_PROCESS =====
* Какая опубликованная/локальная версия действительно выбрана, совпадают ли её workspace и сгенерированный Python.
* Верно ли указан стабильный контракт, существует ли связанный документ или попытка RequirementCheck.
* Для обычного обращения — режим autoaccept и значение именованного интервала; для профильного — состояние проверки, алгоритм, ответственный и необходимость ручного решения.
* Для встречи — подключён ли провайдер и есть ли реальная запись; наличие организации не считать результатом проверки.
* Успешны ли scoped API, отправка и ack, получает ли runtime новые снимки и wakeup-события. Уже committed результат после сетевой ошибки сначала перечитать, не принимать повторное бизнес-решение вслепую.
* После DONE/WONTFIX — завершился ли отдельный ''complete'' и прошли ли доменные проверки. Статус Ticket и факт закрытия workflow различать.
===== Проверенные источники =====
Версии и SHA-256 файлов сохранены в metadata страницы и documentation BPMN. Алгоритм сверяется по workspace и каноническому Python, внешние действия — по view/API/ACL, runtime и доменным операциям. При изменении источников требуется повторный анализ; изменение одних хешей не доказывает актуальность схемы.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handler_blocks/open_st_request_inprocess.json|sharix-open-handlers-examples / generated_handler_blocks/open_st_request_inprocess.json]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_st_request_inprocess.py|sharix-open-handlers-examples / handlers/open_st_request_inprocess.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_st_request_done.py|sharix-open-handlers-examples / handlers/open_st_request_done.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_st_request_wontfix.py|sharix-open-handlers-examples / handlers/open_st_request_wontfix.py]] — 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/services/verification_results.py|sharix-open-tickets / services/verification_results.py]] — Git fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-tickets/src/commit/fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14/services/st_request_contracts.py|sharix-open-tickets / services/st_request_contracts.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/utils.py|sharix-open-tickets / utils.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-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-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/apiviews/handler_workflow.py|sharix-open-backend / apiviews/handler_workflow.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/verification_workflow.py|sharix-open-backend / lib/verification_workflow.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/verification_algorithms.py|sharix-open-backend / lib/verification_algorithms.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/verification_responsibility.py|sharix-open-backend / lib/verification_responsibility.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/requirement_checks.py|sharix-open-backend / lib/requirement_checks.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-backend/src/commit/778a3280cee115ba0efe3fdff7b0e708b0c10093/lib/integration_ports.py|sharix-open-backend / lib/integration_ports.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
===== Связанные материалы =====
* [[sharixopen:knowledge:scenarios:st_request_assigned|Предыдущая стадия ASSIGNED]]
* [[sharixopen:knowledge:modules:handlers|Обработчики и граница исполнения Blockly/Python]]
* [[sharixopen:knowledge:operations:runtime_health|Диагностика runtime]]
* [[sharixopen:knowledge:scenarios:start|Все сценарии]]
~~SHARIX_KNOWLEDGE_RELATED~~