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

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


sharixopen:knowledge:scenarios:st_request_done

Различия

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

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

sharixopen:knowledge:scenarios:st_request_done [2026/10/28 19:19] – [sharixknowledge] approved package sx_knowledge_api_opensharixopen:knowledge:scenarios:st_request_done [2026/10/31 14:26] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open
Строка 15: Строка 15:
             "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",             "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",
             "ShariXKnowledgeScenarios"             "ShariXKnowledgeScenarios"
 +        ],
 +        "depends_on": [
 +            "ShariXKnowledgeOpenKnowledgeModulesHandlers",
 +            "ShariXKnowledgeOpenKnowledgeModulesBackenddbsynce"
 +        ],
 +        "verified_by": [
 +            "ShariXKnowledgeVerification"
         ]         ]
     },     },
Строка 21: Строка 28:
             "domain": "business_processes",             "domain": "business_processes",
             "lifecycle": "implemented",             "lifecycle": "implemented",
-            "component": "handlers",+            "component": "handlers_examples, handlers_backend, tickets, dbsynce",
             "parents": [             "parents": [
                 "ShariXKnowledgeScenarios"                 "ShariXKnowledgeScenarios"
             ],             ],
             "terms": [             "terms": [
-                "ST_REQUEST", +                "audience_developer", 
-                "DONE", +                "audience_integrator", 
-                "DocumentVersion", +                "audience_support", 
-                "RequirementCheck", +                "audience_reviewer", 
-                "BPMN"+                "audience_ai", 
 +                "product_sharix_open", 
 +                "material_scenario", 
 +                "topic_handlers_support", 
 +                "topic_security_requirements", 
 +                "topic_handlers_blockly", 
 +                "st_request", 
 +                "ticket_done", 
 +                "verification_workflow", 
 +                "requirement_check", 
 +                "document_version", 
 +                "verification_completed", 
 +                "notification_ack", 
 +                "bpmn", 
 +                "ticket", 
 +                "blockly", 
 +                "generated_python"
             ]             ]
         },         },
Строка 169: Строка 192:
                 "path": "lib/activation.py",                 "path": "lib/activation.py",
                 "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"                 "sha256": "f78d4e219a5b83c7952bd366a4e7a711589b1d382af653a0c453c0524e4220f7"
 +            },
 +            {
 +                "repository": "sharix-open-tickets",
 +                "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
 +                "path": "models/ticket.py",
 +                "sha256": "4768d9ef47b61bf3ae98bf2749ed142adc477978b44de29177363ba9664baa43"
             }             }
         ],         ],
Строка 182: Строка 211:
                 "complete": "2a776584735b60aa745eec11fbb27260dec2907abce0de21221a9dbdb0fd6385"                 "complete": "2a776584735b60aa745eec11fbb27260dec2907abce0de21221a9dbdb0fd6385"
             }             }
 +        },
 +        "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_done",
 +                "verification_workflow",
 +                "requirement_check",
 +                "document_version",
 +                "verification_completed",
 +                "notification_ack",
 +                "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": 23,
 +            "original_source_evidence_recheck": "После git fetch все исходные commits/SHA-256 совпали; дополнительные функциональные источники включены в source_evidence",
 +            "canonical_regeneration": {
 +                "kind": "ticket",
 +                "compared_python_paths": [
 +                    "handlers/open_st_request_done.py",
 +                    "generated_handlers/open_st_request_done.py"
 +                ],
 +                "generator_sources_verified": 11,
 +                "handler_executed": false
 +            },
 +            "runtime_checked": false
         }         }
     },     },
-    "content_sha256": "8fa8a384acc4252e52818581c0baf803e5a90505024446e76e491879f8968a25",+    "content_sha256": "6f3ca23bd4a1e1d21027e966364d3e3a2d67d4101f56aeb0146a87093d4f33dd",
     "schema": 1     "schema": 1
 } }
Строка 191: Строка 280:
 ~~NOCACHE~~ ~~NOCACHE~~
  
-**Область:** ShariX Open. **Обработчик:** ''open_st_request_done'', тип ''ST_REQUEST'' (1), рабочий статус ''DONE'' (141). Текущая встроенная реализация изучена по опубликованному Git на 28.10.2026; Python побайтово сверен с каноническим renderer Blockly workspace. На сервере отдельно проверяются выбранная версия и доступность runtime/API.+**Назначение:** [[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_done'', тип ''ST_REQUEST'' (1), рабочий статус ''DONE'' (141). 31.10.2026 исходники повторно получены из Git. Обе Python-копии совпали с новой канонической генерацией Blockly; проверены 11 исходников генераторов. Сам обработчик и его внешние действия не запускались. Выбранная версия и работающая установка проверяются отдельно.
  
 ===== Назначение и границы ===== ===== Назначение и границы =====
-''DONE'' — стадия Ticket, а не универсальное доказательство успешного завершения всего процесса. Для обычного обращения обработчик ждёт подтверждения закрытия. Для стабильных контрактов ''document-verification-v1'' и ''requirement-check-v1'' он вызывает backend ''complete'', отправляет итоговое уведомление и запрашивает ''CLOSED''. В этом handler нет развилки по ''STREQ_AUTOACCEPT'' и нет автоматического закрытия обычной заявки по истечении таймера.+DONE — стадия Ticket. Дальнейшее поведение зависит от контракта: 
 + 
 +  * **Обычное обращение:** ждать отдельного подтверждения закрытия. 
 +  * **document-verification-v1 / requirement-check-v1:** вызвать backend complete, отправить итоговое уведомление и запросить CLOSED. 
 + 
 +STREQ_AUTOACCEPT здесь не используется; таймер обычной заявки не выбирает решение за пользователя.
  
 Просмотрщик Wiki показывает описание, а не исполняет обработчик. Схемы помечены ''isExecutable=false''; runtime исполняет выбранный проверенный Python, сгенерированный из Blockly. End event завершает конкретный проход, а не объявляет успех всех связанных требований. Просмотрщик Wiki показывает описание, а не исполняет обработчик. Схемы помечены ''isExecutable=false''; runtime исполняет выбранный проверенный Python, сгенерированный из Blockly. End event завершает конкретный проход, а не объявляет успех всех связанных требований.
Строка 890: Строка 992:
 </sharix-bpmn> </sharix-bpmn>
  
-Backend хранит доменный результат отдельно от статуса Ticket. При первом вызове он требует ''DONE'' или ''WONTFIX'', получает metadata ручного результата и выбирает actor: явно переданный actor, иначе существующий пользователь ''reviewer_user_id'', иначе ''assigned_to''. Штатный вызов handler API явного actor не передаёт. Это выбор источника атрибуции; он не выдаёт пользователю новые права.+Первое профильное завершение в backend: 
 + 
 +  - Проверить DONE либо WONTFIX. 
 +  - Получить metadata ручного результата. 
 +  - Определить actor: явный аргумент, затем существующий reviewer_user_id, затем assigned_to. 
 +  - Применить доменный результат отдельно от статуса Ticket. 
 + 
 +Handler API явный actor не передаёт. Атрибуция результата не выдаёт новые права.
  
 ==== Документ ==== ==== Документ ====
 Для ''document-verification-v1'' в ''DONE'' backend находит документ по public id и создаёт проверенную ''DocumentVersion''. Проверяются соответствие документа Ticket, точная ''draft_revision'' и совместимость identity с уже проверенной версией. Изменившийся после запроса черновик отклоняется: требуется новая заявка проверки, а не подтверждение старой редакции. Для ''document-verification-v1'' в ''DONE'' backend находит документ по public id и создаёт проверенную ''DocumentVersion''. Проверяются соответствие документа Ticket, точная ''draft_revision'' и совместимость identity с уже проверенной версией. Изменившийся после запроса черновик отклоняется: требуется новая заявка проверки, а не подтверждение старой редакции.
  
-В версию входят структурированные данные, срок действия, уровень/источник проверки, actor, ссылка на Ticket и снимки файлов. Обновляется указатель на текущую проверенную версию; планируется синхронизация документа. Сохранение формы Ticket само по себе этих действий не выполняет.+В проверенную DocumentVersion входят: 
 + 
 +  * структурированные данные и снимки файлов; 
 +  * срок действия; 
 +  * уровень и источник проверки; 
 +  * actor и ссылка на Ticket. 
 + 
 +Затем обновляется указатель текущей проверенной версии и планируется синхронизация документа. Сохранение формы Ticket само этого не делает.
  
 ==== RequirementCheck ==== ==== RequirementCheck ====
-Для ''requirement-check-v1'' backend загружает связанную попытку. Если она ''PENDING'', вызывается доменное применение результата с ''passed=True'', actor, комментарием и применимыми баллами. Проверяются связь с попыткой, возможность завершить её, обязательный ответственный и правила результата. Для уже завершённой попытки в ''DONE'' допустим только ''PASSED''; несовместимое терминальное состояние приводит к ошибке.+Для requirement-check-v1: 
 + 
 +  * загрузить связанную попытку; 
 +  * у PENDING применить passed=True, actor, комментарий и применимые баллы через доменную операцию; 
 +  * проверить связь, допустимость завершения, обязательного ответственного и правила результата; 
 +  * для уже завершённой попытки требовать PASSED, иначе вернуть ошибку.
  
 Есть существенная граница текущей реализации: у автоматического алгоритма, использующего баллы и минимальный порог, положительное ''passed=True'' не отменяет порог. Низкий результат может сохранить ''FAILED'', хотя Ticket пришёл в ''DONE''. После первого применения backend возвращает фактический outcome; runtime всё равно переходит к ''CLOSED'' после успешного ответа. Поэтому надпись ''DONE'' или ''CLOSED'' не заменяет проверку outcome и состояния ''RequirementCheck''. В схеме это отражено как доменная политика результата, а не как безусловное «DONE → PASSED». Есть существенная граница текущей реализации: у автоматического алгоритма, использующего баллы и минимальный порог, положительное ''passed=True'' не отменяет порог. Низкий результат может сохранить ''FAILED'', хотя Ticket пришёл в ''DONE''. После первого применения backend возвращает фактический outcome; runtime всё равно переходит к ''CLOSED'' после успешного ответа. Поэтому надпись ''DONE'' или ''CLOSED'' не заменяет проверку outcome и состояния ''RequirementCheck''. В схеме это отражено как доменная политика результата, а не как безусловное «DONE → PASSED».
  
 ==== Потребители и активация ==== ==== Потребители и активация ====
-После применения результата backend собирает найденных потребителей из reason проверки либо области документа, убирает повторы и вызывает ''evaluate_requirements''. Для каждого потребителя с ''ok=true'' вызывается ''resume_approved_activation''.+Пересчёт потребителей: 
 + 
 +  - Собрать найденных потребителей из reason проверки либо области документа. 
 +  - Исключить повторы. 
 +  - Вызвать evaluate_requirements для каждого. 
 +  - При ok=true вызвать resume_approved_activation. 
 + 
 +Это возобновление ранее одобренного процесса; выполнение одной проверки не отменяет остальные требования.
  
 Это возобновление ранее одобренного процесса. Для ''ACCESS_REQUEST''/''NEG_REQUEST'' оно будит текущий handler, оставляя решение в его Blockly-алгоритме. Для исторической активации через ''ST_REQUEST'' допускается повтор канонического gate при ''DONE''/''CLOSED''. Завершение одной проверки не выдаёт новое одобрение и не обходит оставшиеся обязательные требования. Это возобновление ранее одобренного процесса. Для ''ACCESS_REQUEST''/''NEG_REQUEST'' оно будит текущий handler, оставляя решение в его Blockly-алгоритме. Для исторической активации через ''ST_REQUEST'' допускается повтор канонического gate при ''DONE''/''CLOSED''. Завершение одной проверки не выдаёт новое одобрение и не обходит оставшиеся обязательные требования.
Строка 912: Строка 1040:
 Если marker ''verification_runtime.completed'' уже сохранён, backend возвращает записанные outcome/details и ещё не подтверждённое итоговое уведомление. Повторное создание версии документа, применение результата и пересчёт потребителей в этой ветви не выполняются. Это идемпотентность по marker конкретного Ticket, а не разрешение автоматически пересмотреть прежнее решение после переоткрытия. Если marker ''verification_runtime.completed'' уже сохранён, backend возвращает записанные outcome/details и ещё не подтверждённое итоговое уведомление. Повторное создание версии документа, применение результата и пересчёт потребителей в этой ветви не выполняются. Это идемпотентность по marker конкретного Ticket, а не разрешение автоматически пересмотреть прежнее решение после переоткрытия.
  
-Между ''complete'', уведомлением и сменой статуса в ''CLOSED'' нет одной общей транзакции. При потере ответа backend мог уже сохранить результат, а Ticket ещё оставаться в ''DONE''. Последующий проход использует marker; нельзя считать ошибку HTTP доказательством того, что результата нет. Если требуется новая попытка проверки, её следует оформлять по доменному сценарию с учётом редакции/попытки, а не стирать marker ради повторного исполнения.+При неопределённом результате различать: 
 + 
 +  * backend уже мог сохранить complete и marker; 
 +  * Ticket ещё может оставаться DONE; 
 +  * уведомление могло уйти без сохранённого ack; 
 +  * CLOSED — отдельный запрос. 
 + 
 +Общей транзакции этой последовательности нет. Сначала перечитать состояние; HTTP-ошибка не доказывает отсутствие результата. Для новой проверки оформляют доменную попытку/редакцию, а не стирают marker.
  
 ===== Внешнее действие для обычного обращения ===== ===== Внешнее действие для обычного обращения =====
Строка 931: Строка 1066:
  
 ===== Диагностика ===== ===== Диагностика =====
-Для зависшего профильного Ticket различайте: статус Ticket, состояние документа/попытки, marker ''completed'', outcome, consumer evaluations, ack уведомления и переход в ''CLOSED''. Проверьте, не изменился ли черновик, не конфликтует ли терминальное состояние попытки с Ticket, хватает ли ответственного/баллов и работает ли scoped API. Для обычного обращения ожидание подтверждения закрытия является штатным поведением.+Диагностика профильного DONE: 
 + 
 +  - Сверить статус Ticket и состояние документа/попытки. 
 +  - Проверить draft_revision и совместимость терминального состояния. 
 +  - Прочитать marker completed, outcome и consumer_evaluations. 
 +  - Сверить ответственного, применимые баллы и scoped API. 
 +  - Отдельно проверить ack и переход CLOSED. 
 + 
 +Для обычного обращения ожидание подтверждения закрытия штатно. Для профильного DONE/CLOSED сами по себе не доказывают положительный outcome или готовность всех потребителей.
  
 ===== Проверенные источники ===== ===== Проверенные источники =====
sharixopen/knowledge/scenarios/st_request_done.txt · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX