{
"id": "ShariXKnowledgeSTRequestWontfixBPMN",
"page": "sharixopen:knowledge:scenarios:st_request_wontfix",
"area": "open",
"type": "procedure",
"title": "ST_REQUEST в WONTFIX: отрицательный результат и решение о закрытии",
"status": "review",
"schema_version": 1,
"relations": {
"related_to": [
"ShariXKnowledgeSTRequestInProcessBPMN",
"ShariXKnowledgeSTRequestDoneBPMN",
"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_support",
"audience_reviewer",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_handlers_support",
"topic_security_requirements",
"topic_handlers_blockly",
"st_request",
"ticket_wontfix",
"requirement_check",
"verification_workflow",
"bpmn",
"ticket",
"blockly",
"generated_python"
]
},
"diagram": {
"format": "bpmn",
"executable": false
},
"source_evidence": [
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_st_request_wontfix.py",
"sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "generated_handler_blocks/open_st_request_wontfix.json",
"sha256": "7958fd121808a70fa27191b81222906f326d5ec8b5a2653f88436c7b19a08d6a"
},
{
"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": "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": "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-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/document_verification.py",
"sha256": "1692ec40fb8503368a38e154dc4c53644c25a825efc91a87b34bde8065b387bb"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/verification_responsibility.py",
"sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/verification_algorithms.py",
"sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/requirement_checks.py",
"sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"
},
{
"repository": "sharix-open-backend",
"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093",
"path": "lib/activation.py",
"sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"
}
],
"handler_process": {
"handler_id": "open_st_request_wontfix",
"source_kind": "git_builtin",
"canonical_python_verified": true,
"reviewed_on": "2026-10-28",
"generator": "tools/generate_handler_bpmn.py",
"generator_sha256": "ca837a7b9e55bf58184bdf408a8035d25667ed9c5d3068ca52380b2ff5682f95",
"models": {
"logic": "33213870ee653c96b28dc0af5dc41bb7566b123e28b2f7e26fb491b9902281f6",
"complete": "64e14afe814c90d92e630b6a861ee915caacf371934eff683996c2fa0aeea502"
}
},
"classification": {
"schema": "sharix.knowledge.classification.v1",
"products": [
"sharix_open"
],
"audiences": [
"developer",
"support",
"reviewer",
"ai"
],
"material": "scenario",
"topics": [
"handlers/support",
"security/requirements",
"handlers/blockly"
],
"tag_terms": [
"audience_developer",
"audience_support",
"audience_reviewer",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_handlers_support",
"topic_security_requirements",
"topic_handlers_blockly",
"st_request",
"ticket_wontfix",
"requirement_check",
"verification_workflow",
"bpmn",
"ticket",
"blockly",
"generated_python"
],
"registry_document": "ShariXKnowledgeClassification",
"state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста"
},
"editorial_review": {
"date": "2026-10-31",
"scope": "Конкретизация действий, условий, результатов и диагностики; перечисления; исходные BPMN сохранены",
"current_source_records_verified": 22,
"original_source_evidence_recheck": "После git fetch все исходные SHA-256 совпали; source_evidence содержит текущие проверенные commits",
"canonical_regeneration": {
"kind": "ticket",
"compared_python_paths": [
"handlers/open_st_request_wontfix.py",
"generated_handlers/open_st_request_wontfix.py"
],
"generator_sources_verified": 11,
"handler_executed": false
},
"runtime_checked": false
}
},
"content_sha256": "ac76d35524d99e33e2cc9f664186a8b7fdf8802b4d7d3eb449844a8464519b91",
"schema": 1
}
====== ST_REQUEST в WONTFIX: отрицательный результат и решение о закрытии ======
~~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#trebovanija|Доступ → Требования]] · [[sharixopen:knowledge:classification:topics#blockly|Обработчики → Blockly]].
**Область:** ShariX Open. **Обработчик:** ''open_st_request_wontfix'', тип ''ST_REQUEST'' (1), рабочий статус ''WONTFIX'' (149). 31.10.2026 исходники повторно получены из Git. Обе Python-копии совпали с новой канонической генерацией Blockly. Сам обработчик и его внешние действия при анализе не запускались. Выбранная версия, настройки и работоспособность конкретной установки проверяются отдельно.
===== Назначение и границы =====
Для обычной заявки WONTFIX:
* фиксирует уже принятое решение «не будет исправлено»;
* ожидает отдельного решения о закрытии;
* не выбирает основание отказа и не добавляет объяснение в карточку;
* не закрывает заявку по таймеру.
STREQ_AUTOACCEPT здесь не используется.
Для document-verification-v1 и requirement-check-v1 действует профильное завершение:
- Backend фиксирует отрицательный результат конкретной проверки.
- Пересчитывает связанных потребителей.
- Runtime отправляет итоговое уведомление.
- Отдельно запрашивает CLOSED.
Это не глобальное удаление документов, отзыв всех прежних подтверждений или деактивация связанных объектов.
Оба BPMN-процесса имеют ''isExecutable=false''. Это описание реализации, а не исполняемый workflow Wiki. Runtime выполняет выбранный проверенный Python из Blockly. End event завершает показанную операцию, а не утверждает успех всего продукта.
===== Один проход, ожидание и закрытие (BPMN) =====
{"notes": ["Только опубликованный Git built-in. Никакой код обработчика при генерации не исполняется.", "End event — конец показанной операции; процесс isExecutable=false.", "deferred_until — символ срока в локальной памяти runtime."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_wontfix.json", "repository": "sharix-open-handlers-examples", "sha256": "7958fd121808a70fa27191b81222906f326d5ec8b5a2653f88436c7b19a08d6a"}, {"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": "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": "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"}, {"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/document_verification.py", "repository": "sharix-open-backend", "sha256": "1692ec40fb8503368a38e154dc4c53644c25a825efc91a87b34bde8065b387bb"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/activation.py", "repository": "sharix-open-backend", "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"}]}
wontfix_start
wontfix_status
wontfix_special
wontfix_complete
wontfix_notify
wontfix_close
wontfix_confirmed
wontfix_remove
wontfix_end
wontfix_stale
wontfix_stale_end
wontfix_manual
wontfix_missing
wontfix_complete_error
wontfix_completion_retry
wontfix_notify_error
wontfix_close_error
wontfix_generic
wontfix_wait
wontfix_timer
wontfix_revision
wontfix_ready
wontfix_Flow_0
wontfix_Flow_0
wontfix_Flow_22
wontfix_Flow_1
wontfix_Flow_2
wontfix_Flow_1
wontfix_Flow_4
wontfix_Flow_5
Доменный результат + marker completed + consumer_evaluations. Разбор — на отдельной схеме.
wontfix_Flow_4
wontfix_Flow_6
wontfix_Flow_6
wontfix_Flow_7
В текущем runtime после успешного ответа complete. Не требует consumer_evaluations=all ok.
wontfix_Flow_7
wontfix_Flow_8
wontfix_Flow_8
wontfix_Flow_9
wontfix_Flow_11
wontfix_Flow_9
wontfix_Flow_10
wontfix_Flow_10
wontfix_Flow_2
wontfix_Flow_3
wontfix_Flow_3
ST_REQUEST_WONTFIX_RECHECK_SECONDS, журнал st_request_wontfix; autoaccept здесь не проверяется.
wontfix_Flow_5
wontfix_Flow_12
wontfix_Flow_11
wontfix_Flow_13
wontfix_Flow_13
wontfix_Flow_14
wontfix_Flow_15
wontfix_Flow_16
DEFERRED_TICKET_RECHECK_SECONDS. Завершённый backend complete не откатывается.
wontfix_Flow_15
wontfix_Flow_16
wontfix_Flow_17
wontfix_Flow_12
wontfix_Flow_14
wontfix_Flow_17
wontfix_Flow_18
wontfix_Flow_19
wontfix_Flow_18
wontfix_Flow_20
deferred_until
wontfix_Flow_19
wontfix_Flow_21
При смене владельца убрать локальный снимок; при той же стадии повторить проход.
wontfix_Flow_20
wontfix_Flow_21
wontfix_Flow_22
* Снимок уже не в ''WONTFIX'' — запросить удаление Ticket из локальной очереди и удаление комнаты.
* Обычный Ticket — записать локальную причину ''support_closure_decision'', назначить defer по ''ST_REQUEST_WONTFIX_RECHECK_SECONDS'' и освободить worker. Причина в журнале defer — ''st_request_wontfix''; сохранённая локальная причина остаётся ''support_closure_decision''.
* Профильный контракт — вызвать ''complete_verification_workflow''. Scoped backend API требует handler identity, capability ''verification.workflow'' и доступ к данному Ticket. Успешный ответ обрабатывается отдельно от смены статуса: уведомления, журнал, затем запрос ''CLOSED'' через scoped Ticket API.
404 при переходе в ''CLOSED'' запрашивает локальную очистку как для устаревшего контекста. Ошибки отправки/перехода вне локального catch приводят к общему ''processing_error'' и ''DEFERRED_TICKET_RECHECK_SECONDS''; уже committed доменный результат не откатывается.
===== Отрицательное завершение в backend (BPMN) =====
{"notes": ["Показана ветвь первого complete для WONTFIX, а не для DONE.", "Процесс isExecutable=false. Источники закреплены по Git SHA и SHA-256.", "Отрицательная проверка не аннулирует автоматически предыдущие DocumentVersion и не отменяет чужие одобрения."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_wontfix.json", "repository": "sharix-open-handlers-examples", "sha256": "7958fd121808a70fa27191b81222906f326d5ec8b5a2653f88436c7b19a08d6a"}, {"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": "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": "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"}, {"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/document_verification.py", "repository": "sharix-open-backend", "sha256": "1692ec40fb8503368a38e154dc4c53644c25a825efc91a87b34bde8065b387bb"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/activation.py", "repository": "sharix-open-backend", "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"}]}
complete_start
complete_acl
complete_seen
complete_cached
complete_cached_end
complete_check_status
complete_doc
complete_document
complete_check
complete_pending
complete_apply
complete_existing
complete_consumers
complete_mark
complete_response
complete_check_error
complete_apply_error
complete_mismatch
complete_error
complete_Flow_0
complete_Flow_0
complete_Flow_1
complete_Flow_1
complete_Flow_2
complete_Flow_4
Без повторного применения результата и пересчёта потребителей.
complete_Flow_2
complete_Flow_3
complete_Flow_3
Явный actor → reviewer_user_id → assigned_to. В handler API actor не передаётся.
complete_Flow_4
complete_Flow_5
complete_Flow_5
complete_Flow_6
complete_Flow_7
В WONTFIX не создаётся DocumentVersion, существующая проверенная версия этим вызовом не удаляется. Ветвь не проверяет draft_revision как положительная проверка.
complete_Flow_6
complete_Flow_8
complete_Flow_7
complete_Flow_9
complete_Flow_9
complete_Flow_10
complete_Flow_11
passed=False: отрицательный результат не превращается в успех из-за высокого балла. Требуются допустимая попытка и обязательный ответственный.
complete_Flow_10
complete_Flow_12
complete_Flow_11
complete_Flow_13
evaluate_requirements; при ok вызвать resume_approved_activation. Нет новой выдачи прав или отмены прежних отказов.
complete_Flow_8
complete_Flow_12
complete_Flow_13
complete_Flow_14
complete_Flow_14
complete_Flow_15
complete_Flow_15
complete_Flow_16
complete_Flow_17
complete_Flow_18
complete_Flow_16
complete_Flow_17
complete_Flow_18
Complete на dbsynce/api/handler/ticket/{ticket_id}/verification/:
- Прочитать marker verification_runtime.completed.
- Если результата ещё нет — потребовать DONE либо WONTFIX. Для WONTFIX выбрать отрицательный результат.
- Определить actor: явный аргумент, затем reviewer_user_id ручного результата, затем assigned_to.
- Применить соответствующий контракт документа либо RequirementCheck.
Handler API явный actor не передаёт. Повтор с marker имеет отдельное поведение, описанное ниже.
==== Отказ в проверке документа ====
Для ''document-verification-v1'' отрицательная ветвь сохраняет ''outcome=failed'' и комментарий результата. Она не создаёт ''DocumentVersion'', не удаляет существующую проверенную версию и не меняет её на «отрицательную версию». Проверки актуальности ''draft_revision'', которые выполняются при положительном создании версии, в этой отрицательной ветви не запускаются.
Отказ по новой заявке не следует трактовать как автоматическое аннулирование старого проверенного документа. Если нужен отзыв прежнего подтверждения или замена документа, это отдельное доменное действие; текущий обработчик не выполняет его скрыто.
==== Отказ по RequirementCheck ====
Для requirement-check-v1:
* связанная попытка должна существовать;
* у PENDING применяется passed=False, actor, комментарий и применимые поля баллов через доменную операцию;
* проверяются связь с Ticket, допустимость завершения попытки и обязательный ответственный.
Высокий балл не превращает явный отрицательный результат в положительный.
Если попытка уже завершена:
* **FAILED:** совместимо с WONTFIX.
* **PASSED или иное несовместимое состояние:** ошибка, прежний результат не перезаписывается.
* **Попытка отсутствует:** ошибка связи.
Нужно сверить Ticket и фактическую попытку, а не считать complete успешным по самому запуску handler.
==== Пересчёт потребителей ====
После отрицательного результата backend всё равно вызывает ''reevaluate_ticket_consumers'': собирает найденных потребителей, вычисляет требования, при ''ok=true'' вызывает ''resume_approved_activation''. Это не отмена отказа. Другие действительные подтверждения и требования могут сохраняться, поэтому итог ''ok'' не выводится только из одного ''WONTFIX''.
Возобновление следует канонической границе ранее одобренной активации. Для ''ACCESS_REQUEST''/''NEG_REQUEST'' будится текущий handler; для исторического ''ST_REQUEST'' проверяется соответствующий gate. Отрицательная проверка не выдаёт новое одобрение, не обходит требования и не означает автоматическую деактивацию.
Backend сохраняет marker, outcome и ''consumer_evaluations'', возвращает итоговое сообщение автору. Runtime после успешного ответа запрашивает ''CLOSED''; он не требует положительного outcome или успеха всех consumer evaluations перед закрытием Ticket. Закрытие отрицательной проверки является штатным поведением.
===== Повтор и частично выполненная последовательность =====
Повторный ''complete'' при сохранённом marker возвращает прежние outcome/details и ещё не подтверждённое уведомление. Результат и consumer evaluations заново не вычисляются. Поэтому marker — граница идемпотентности этого Ticket, а не команда пересмотреть ранее сохранённое решение после переоткрытия.
Частично выполненную последовательность разбирать по отдельным фактам:
* результат сохранён в backend, но ответ мог потеряться;
* уведомление отправлено, но ack мог не сохраниться;
* CLOSED мог ещё не сохраниться после успешного доменного результата.
Сначала перечитать эти состояния. Стирание marker или повтор отрицательного решения вслепую не исправляют транспортную ошибку.
===== Внешнее решение для обычной заявки =====
Обычный Ticket в ''WONTFIX'' остаётся на ожидании. Пользователь с доступом и правом смены статуса может выбрать ''CLOSED'' либо ''REOPENED'' согласно текущему lifecycle. Авторство само по себе не разрешает переход. Ветка autoaccept и автоматический таймер закрытия отсутствуют; очередной срок defer лишь разрешает новый проход.
После commit канонический backend направляет события смены владельца; прежний handler исключает локальный снимок по ''ticket.moved''. При переоткрытии новый владелец — ''open_st_request_reopened''. Отдельного ''open_st_request_closed'' в текущем каталоге нет. При потере события scoped periodic reconciliation восстанавливает состав очереди. Внешний пользовательский переход, commit и best-effort доставка XMPP разобраны также в [[sharixopen:knowledge:scenarios:st_request_inprocess|сценарии IN_PROCESS]].
===== Уведомления и интервалы =====
Итоговое уведомление получает автор через защищённый API получателей. Подтверждение ключа ''ack_notification'' сохраняется после попытки отправки; оно не доказывает прочтение человеком. Потеря ack может вызвать повтор сообщения, но не должна создавать второй доменный результат при сохранённом marker.
^ Ситуация ^ Ожидание / причина ^
| Обычная заявка | ''ST_REQUEST_WONTFIX_RECHECK_SECONDS''; ''support_closure_decision'', журнал ''st_request_wontfix'' |
| Ошибка HTTP/разбора ''complete'' | 300 секунд; ''verification_completion_error'' |
| Иное исключение отправки/перехода | ''DEFERRED_TICKET_RECHECK_SECONDS''; ''processing_error'' |
| Периодическая сверка | ''INTERVAL_TIME_BD_REQ''; scoped список |
300 секунд — текущая константа Python. Defer находится в памяти и не занимает worker. Новая authoritative revision может снять ожидание; дубликат того же снимка — нет. После рестарта runtime заново сверяется с backend. Фактический запуск зависит также от соединения и свободного worker.
===== Что различать при диагностике =====
При диагностике сверить:
- Контракт и выбранную версию handler.
- Статус Ticket и состояние связанной попытки/документа.
- Marker completed, outcome и consumer_evaluations.
- Ключ ack уведомления.
- Отдельный результат перехода CLOSED.
Для обычной заявки ожидание решения штатно. Для профильной несовместимый терминальный результат требует разбора решения, а не только сетевой проверки.
===== Проверенные источники =====
Git SHA и SHA-256 закреплены в metadata и documentation BPMN. Изменение источников требует повторного сопоставления алгоритма и внешних контрактов.
* [[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/generated_handler_blocks/open_st_request_wontfix.json|sharix-open-handlers-examples / generated_handler_blocks/open_st_request_wontfix.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/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/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.
* [[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/document_verification.py|sharix-open-backend / lib/document_verification.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/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/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/activation.py|sharix-open-backend / lib/activation.py]] — Git 778a3280cee115ba0efe3fdff7b0e708b0c10093.
===== Связанные материалы =====
* [[sharixopen:knowledge:scenarios:st_request_inprocess|IN_PROCESS: выполнение и профильная проверка]]
* [[sharixopen:knowledge:scenarios:st_request_done|DONE: положительная ветвь и подтверждение закрытия]]
* [[sharixopen:knowledge:modules:handlers|Обработчики и канонический Python]]
* [[sharixopen:knowledge:scenarios:start|Все сценарии]]
~~SHARIX_KNOWLEDGE_RELATED~~