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

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


sharixopen:knowledge:scenarios:service_request_done

Различия

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

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

Следующая версия
Предыдущая версия
sharixopen:knowledge:scenarios:service_request_done [2026/10/28 21:21] – [sharixknowledge] approved package sx_knowledge_api_opensharixopen:knowledge:scenarios:service_request_done [2026/10/31 11:25] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open
Строка 13: Строка 13:
             "ShariXKnowledgeOpenKnowledgeModulesHandlers",             "ShariXKnowledgeOpenKnowledgeModulesHandlers",
             "ShariXKnowledgeScenarios"             "ShariXKnowledgeScenarios"
 +        ],
 +        "depends_on": [
 +            "ShariXKnowledgeOpenKnowledgeDomainOrderticket",
 +            "ShariXKnowledgeOpenKnowledgeModulesHandlers"
         ]         ]
     },     },
Строка 19: Строка 23:
             "domain": "business_processes",             "domain": "business_processes",
             "lifecycle": "implemented",             "lifecycle": "implemented",
-            "component": "handlers",+            "component": "handlers_examples, handlers_backend, dbsynce",
             "parents": [             "parents": [
                 "ShariXKnowledgeScenarios"                 "ShariXKnowledgeScenarios"
             ],             ],
             "terms": [             "terms": [
-                "SERVICE_REQUEST", +                "audience_developer", 
-                "DONE", +                "audience_support", 
-                "CLOSED", +                "audience_integrator", 
-                "payment", +                "audience_reviewer", 
-                "BPMN"+                "audience_ai", 
 +                "product_sharix_open", 
 +                "material_scenario", 
 +                "topic_orders_payments", 
 +                "topic_orders_lifecycle", 
 +                "service_request", 
 +                "ticket_done", 
 +                "ticket_closed", 
 +                "payment_state", 
 +                "bpmn", 
 +                "order", 
 +                "ticket"
             ]             ]
         },         },
Строка 198: Строка 213:
                 "payment": "423a6991dee4f350c2f333f2bd1f0355786f3f6fd791112e3cdf4e59dcbfc26b"                 "payment": "423a6991dee4f350c2f333f2bd1f0355786f3f6fd791112e3cdf4e59dcbfc26b"
             }             }
 +        },
 +        "classification": {
 +            "schema": "sharix.knowledge.classification.v1",
 +            "products": [
 +                "sharix_open"
 +            ],
 +            "audiences": [
 +                "developer",
 +                "support",
 +                "integrator",
 +                "reviewer",
 +                "ai"
 +            ],
 +            "material": "scenario",
 +            "topics": [
 +                "orders/payments",
 +                "orders/lifecycle"
 +            ],
 +            "tag_terms": [
 +                "audience_developer",
 +                "audience_support",
 +                "audience_integrator",
 +                "audience_reviewer",
 +                "audience_ai",
 +                "product_sharix_open",
 +                "material_scenario",
 +                "topic_orders_payments",
 +                "topic_orders_lifecycle",
 +                "service_request",
 +                "ticket_done",
 +                "ticket_closed",
 +                "payment_state",
 +                "bpmn",
 +                "order",
 +                "ticket"
 +            ],
 +            "registry_document": "ShariXKnowledgeClassification",
 +            "state_meaning": "lifecycle относится к описываемому коду, а status к редакции документа; implemented не означает успешный runtime тест"
 +        },
 +        "classification_review": {
 +            "date": "2026-10-31",
 +            "source": "Содержание текущей страницы и проверенный словарь классификации",
 +            "body_scope": "rewrite"
 +        },
 +        "source_review_20261031": {
 +            "kind": "source_analysis_not_runtime_acceptance",
 +            "evidence_field": "extensions.source_evidence",
 +            "checked_on": "2026-10-31",
 +            "all_original_evidence_hashes_match_fresh_git": true,
 +            "canonical_generation": "Both runnable and generated copies match; no handler executed."
         }         }
     },     },
-    "content_sha256": "a1a92c1cbf6725f4bb7939f96a423e6fea603419a1b894dcc5b8951d262a593e",+    "content_sha256": "1640bd75f0901467edbbfb6dc00633aec4a13afb1f384adb7d24344bb64382f0",
     "schema": 1     "schema": 1
 } }
Строка 207: Строка 272:
 ~~NOCACHE~~ ~~NOCACHE~~
  
-**Область:** ShariX Open. **Обработчик:** ''open_service_request_done'', тип ''SERVICE_REQUEST'' (2), статус ''DONE''. Проверено 29.10.2026: опубликованный Python побайтово совпадает с результатом канонического renderer Blockly workspace. Реальная выбранная версия и платёжный backend установки проверяются отдельно.+**Назначение:** [[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#integrator|Интегратор]] · [[sharixopen:knowledge:classification:audiences#recenzent_i_prijomschik|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. 
 + 
 +**Темы:** [[sharixopen:knowledge:classification:topics#finalizacija_oplaty|Заказы → Финализация оплаты]] · [[sharixopen:knowledge:classification:topics#zhiznennyj_cikl|Заказы → Жизненный цикл]]. 
 + 
 + 
 + 
 +**Область:** ShariX Open. **Обработчик:** ''open_service_request_done'', тип ''SERVICE_REQUEST'' (2), статус ''DONE''. 31.10.2026 опубликованные исходники повторно получены из Git. Обе Python-копии заново сопоставлены с результатом генерации Blockly; проверены 11 исходников генераторов. Сам handler не исполнялся. Выбранную версию, конфигурацию и внешние подключения сервера проверяют отдельно.
  
 ===== Назначение и границы ===== ===== Назначение и границы =====
 Работа по заказу уже завершена. Handler повторяет платёжную финализацию и отдельно проверяет возможность перевести Ticket **DONE→CLOSED**. Он не просит исполнителя снова выполнить работу, не повторяет round finish, не пересчитывает фактическое окончание и не создаёт следующий повторный заказ своим processing. Работа по заказу уже завершена. Handler повторяет платёжную финализацию и отдельно проверяет возможность перевести Ticket **DONE→CLOSED**. Он не просит исполнителя снова выполнить работу, не повторяет round finish, не пересчитывает фактическое окончание и не создаёт следующий повторный заказ своим processing.
  
-DONE, успешный результат платёжного retry и разрешение закрытия — разные состояния. BPMN описательные, ''isExecutable=false''; исполняется выбранный проверенный Python, сгенерированный из Blockly, а не схема Wiki.+Здесь нужно различать: 
 + 
 +  * **DONE** — работа по заказу завершена; 
 +  * **Результат платёжного retry** — ответ конкретной попытки финализации; 
 +  * **Разрешение закрытия** — самостоятельный gate перед DONE → CLOSED. 
 + 
 +BPMN описательные, isExecutable=false. Runtime исполняет выбранный Python, сгенерированный из Blockly; схема Wiki процесс не запускает.
  
 ===== Порядок вызовов (BPMN) ===== ===== Порядок вызовов (BPMN) =====
Строка 367: Строка 446:
 </sharix-bpmn> </sharix-bpmn>
  
-При своём статусе последовательно выполняются ''retry_done_payment'' и ''close_after_done''. Boolean-результат первого вызова **не используется для ветвления**. Даже после обработанного retry success=false handler пробует закрытие: решающее условие проверяет отдельный gate.+В своём статусе handler выполняет: 
 + 
 +  - Вызвать ''retry_done_payment''. 
 +  - Если первый вызов не бросил исключение — вызвать ''close_after_done''. 
 +  - При success=true у close — завершить локальную обработку. 
 +  - При неуспешном close — сохранить payment_finalization и defer по SERVICE_REQUEST_DONE_PAYMENT_RETRY_SECONDS. 
 + 
 +Boolean первого вызова не выбирает следующую ветвь: обработанный retry success=false не запрещает попытку close. Решающее условие проверяет отдельный backend gate.
  
 Если close возвращает success=true, runtime локально устанавливает CLOSED, очищает waiting reason и исключает Ticket из очереди. Иначе записывает ''payment_finalization'' и назначает defer по ''SERVICE_REQUEST_DONE_PAYMENT_RETRY_SECONDS''. Если close возвращает success=true, runtime локально устанавливает CLOSED, очищает waiting reason и исключает Ticket из очереди. Иначе записывает ''payment_finalization'' и назначает defer по ''SERVICE_REQUEST_DONE_PAYMENT_RETRY_SECONDS''.
  
-Исключение API/транспорта первого вызова прерывает проход, поэтому close после него в том же проходе не выполняется. Исключение второго вызова также идёт в общий processing_error. Это отличается от штатного доменного «оплата ещё не завершена», допускающего обычный повтор.+Обработанный ответ и исключение имеют разные последствия: 
 + 
 +  * **Первый вызов бросил исключение:** close в этом проходе не выполняется; ошибка идёт в общий processing_error. 
 +  * **Второй вызов бросил исключение:** общий processing_error. 
 +  * **Доменный close не разрешён:** обычное ожидание финализации с именованным повтором.
  
 В processing нет отдельной загрузки order context и нет раунда ответа: каждый backend action самостоятельно проверяет текущий scope и заказ. При чужом локальном статусе handler запрашивает удаление из очереди и комнаты. В processing нет отдельной загрузки order context и нет раунда ответа: каждый backend action самостоятельно проверяет текущий scope и заказ. При чужом локальном статусе handler запрашивает удаление из очереди и комнаты.
Строка 559: Строка 649:
 Defer освобождает worker; событие может сделать Ticket ready раньше. Причина payment_finalization — локальное состояние, не отдельное поле оплаченности в БД. После успешного close причина очищается. Backend commit и доставка wakeup разделены: потеря ticket.changed/ticket.moved не откатывает CLOSED, periodic reconciliation восстанавливает состав очереди. Defer освобождает worker; событие может сделать Ticket ready раньше. Причина payment_finalization — локальное состояние, не отдельное поле оплаченности в БД. После успешного close причина очищается. Backend commit и доставка wakeup разделены: потеря ticket.changed/ticket.moved не откатывает CLOSED, periodic reconciliation восстанавливает состав очереди.
  
-При диагностике сначала прочитайте фактический DONE/CLOSED, затем отдельно результат retry и причину блокировки close. Auth/transport/5xx не приравнивайте к ожидаемому платёжному ожиданию. Не меняйте Ticket вручную на CLOSED лишь ради снятия очереди и не повторяйте finish, если работа уже DONE. Повтор платёжного действия после неопределённого ответа требует сверки в каноническом платёжном состоянии, а не предположения по журналу handler.+Порядок диагностики: 
 + 
 +  - Прочитать фактический Ticket: DONE или CLOSED. 
 +  - Отдельно записать результат retry-done-payment. 
 +  - Прочитать ответ close-after-done и причину блокировки gate. 
 +  - Если ответ записи был неопределённым — сверить каноническое платёжное состояние до повтора. 
 + 
 +Auth/transport/5xx не приравнивают к ожидаемому платёжному ожиданию. Не менять Ticket на CLOSED ради снятия очереди и не повторять finish уже выполненной работы.
  
 ===== Проверенные источники ===== ===== Проверенные источники =====
sharixopen/knowledge/scenarios/service_request_done.1793222494.txt.gz · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX