| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| sharixopen:knowledge:scenarios:service_request_booked [2026/10/28 21:46] – [sharixknowledge] approved package sx_knowledge_api_open | sharixopen:knowledge:scenarios:service_request_booked [2026/10/31 11:25] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open |
|---|
| "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", |
| "BOOKED", | "audience_support", |
| "Provider", | "audience_reviewer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "material_scenario", |
| | "topic_orders_assignment", |
| | "topic_orders_lifecycle", |
| | "topic_handlers_runtime", |
| | "service_request", |
| | "ticket_booked", |
| | "provider_offer", |
| "pending_at", | "pending_at", |
| "BPMN" | "bpmn", |
| | "ticket", |
| | "blockly", |
| | "generated_python", |
| | "order" |
| ] | ] |
| }, | }, |
| "utility": "tools/expand_bpmn_view_bounds.py", | "utility": "tools/expand_bpmn_view_bounds.py", |
| "utility_sha256": "f878658b0115773e34f6c3eec72eba5984d873e60d8e2a4336b3dfb2a8026d87" | "utility_sha256": "f878658b0115773e34f6c3eec72eba5984d873e60d8e2a4336b3dfb2a8026d87" |
| | }, |
| | "classification": { |
| | "schema": "sharix.knowledge.classification.v1", |
| | "products": [ |
| | "sharix_open" |
| | ], |
| | "audiences": [ |
| | "developer", |
| | "support", |
| | "reviewer", |
| | "ai" |
| | ], |
| | "material": "scenario", |
| | "topics": [ |
| | "orders/assignment", |
| | "orders/lifecycle", |
| | "handlers/runtime" |
| | ], |
| | "tag_terms": [ |
| | "audience_developer", |
| | "audience_support", |
| | "audience_reviewer", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "material_scenario", |
| | "topic_orders_assignment", |
| | "topic_orders_lifecycle", |
| | "topic_handlers_runtime", |
| | "service_request", |
| | "ticket_booked", |
| | "provider_offer", |
| | "pending_at", |
| | "bpmn", |
| | "ticket", |
| | "blockly", |
| | "generated_python", |
| | "order" |
| | ], |
| | "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": "e520121176352cf614b6204e83f2755cb4e3c46248962423b2e205b1c40a1673", | "content_sha256": "c273252e44e75a0c3bcd5d4dad510295e15f494c25c22e9c7ef7d3e89414903a", |
| "schema": 1 | "schema": 1 |
| } | } |
| ~~NOCACHE~~ | ~~NOCACHE~~ |
| |
| **Область:** ShariX Open. **Обработчик:** ''open_service_request_booked'', тип ''SERVICE_REQUEST'' (2), рабочий статус ''BOOKED'' (211). Опубликованный Python на 28.10.2026 побайтово совпадает с каноническим renderer Blockly workspace. Выбор версии на конкретном сервере проверяется отдельно. | **Назначение:** [[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#naznachenie|Заказы → Назначение]] · [[sharixopen:knowledge:classification:topics#zhiznennyj_cikl|Заказы → Жизненный цикл]] · [[sharixopen:knowledge:classification:topics#runtime|Обработчики → Runtime]]. |
| | |
| | |
| | |
| | **Область:** ShariX Open. **Обработчик:** ''open_service_request_booked'', тип ''SERVICE_REQUEST'' (2), рабочий статус ''BOOKED'' (211). 31.10.2026 опубликованные исходники повторно получены из Git. Обе Python-копии заново сопоставлены с результатом генерации Blockly; проверены 11 исходников генераторов. Сам handler не исполнялся. Выбранную версию, конфигурацию и внешние подключения сервера проверяют отдельно. |
| |
| ===== Назначение и границы ===== | ===== Назначение и границы ===== |
| Handler сопровождает размещённый заказ до назначения исполнителя либо перехода в PENDING. Сначала он пытается применить одно разрешённое пользовательское намерение ''take''/''cancel'', затем проверяет текущее окно автоматического перехода. Он не выбирает кандидатов, не рассылает предложения и не проводит раунд победителя в BOOKED: это отдельная стадия PENDING. | Handler сопровождает размещённый заказ в таком порядке: |
| | |
| | - Попытаться применить одно разрешённое намерение take/cancel. |
| | - Если проход не завершён — загрузить актуальный контекст заказа. |
| | - Проверить окно автоматического перехода в PENDING. |
| | - При отсутствии завершённого перехода назначить повтор. |
| | |
| | В BOOKED handler не выбирает кандидатов, не рассылает предложения и не проводит раунд победителя. Это отдельная стадия PENDING. |
| | |
| | Условие перехода зависит от заказа: |
| | |
| | * **ASAP:** попытка PENDING сразу после проверки intent и загрузки контекста. |
| | * **Плановый заказ:** ждать pending_at. |
| |
| Для ASAP попытка перехода в PENDING начинается сразу после проверки пользовательского intent и загрузки контекста. Для планового заказа — по ''pending_at''. Универсальный autoaccept этой стадии не используется. | Универсальный autoaccept здесь не используется. |
| |
| BPMN имеют ''isExecutable=false''. Wiki не исполняет процесс: runtime выполняет выбранный проверенный Python из Blockly. End event завершает показанную операцию; он не означает завершения услуги. | BPMN имеют ''isExecutable=false''. Wiki не исполняет процесс: runtime выполняет выбранный проверенный Python из Blockly. End event завершает показанную операцию; он не означает завершения услуги. |
| После контекста записывается локальная причина ''awaiting_pending_window''. ASAP идёт к ''move-booked-to-pending'' без ожидания планового окна. Иначе ''pending_at'' сравнивается с текущим временем runtime. Подтверждённый успех/stale исключает Ticket из очереди; обработанный доменный отказ оставляет его для повтора по ''SERVICE_REQUEST_BOOKED_RECHECK_SECONDS''. | После контекста записывается локальная причина ''awaiting_pending_window''. ASAP идёт к ''move-booked-to-pending'' без ожидания планового окна. Иначе ''pending_at'' сравнивается с текущим временем runtime. Подтверждённый успех/stale исключает Ticket из очереди; обработанный доменный отказ оставляет его для повтора по ''SERVICE_REQUEST_BOOKED_RECHECK_SECONDS''. |
| |
| 404 контекста/action означает устаревший scope и запрашивает локальную очистку. Отсутствующий либо неоднозначный связанный Orders — конфликт API, а не выбор одной записи. Ошибки авторизации, 5xx и неожиданные ответы идут в общий ''processing_error'' и ''DEFERRED_TICKET_RECHECK_SECONDS''. | Ошибки контекста и action трактуются отдельно: |
| | |
| | * **404:** устаревший scope, запрашивается локальная очистка. |
| | * **Нет единственного связанного Orders:** конфликт API, а не выбор произвольной записи. |
| | * **Auth, 5xx или неожиданный ответ:** processing_error с DEFERRED_TICKET_RECHECK_SECONDS. |
| |
| ===== Временная граница ===== | ===== Временная граница ===== |
| Defer хранится в памяти и освобождает worker. Новая authoritative revision либо разрешённый queued intent могут сделать Ticket готовым раньше; повтор того же снимка не сбрасывает обычное ожидание. Фактический запуск зависит от соединения и свободного worker. Ошибка API-списка не равна подтверждённой пустой очереди. | Defer хранится в памяти и освобождает worker. Новая authoritative revision либо разрешённый queued intent могут сделать Ticket готовым раньше; повтор того же снимка не сбрасывает обычное ожидание. Фактический запуск зависит от соединения и свободного worker. Ошибка API-списка не равна подтверждённой пустой очереди. |
| |
| При долгом BOOKED проверьте ASAP, planned_start/pending_at, именованные настройки и актуальный provider. BOOKED с уже заполненным provider может получать доменный отказ перехода в PENDING и требует разбора согласованности, а не удаления provider ради успешной проверки. Для пользовательского take различайте relay, окончательный результат, подготовленные проверки и сохранённый ASSIGNED. Само ожидание планового окна штатно; отсутствие предложений кандидатам в этой стадии не доказывает поломку раунда PENDING. | При долгом BOOKED проверить: |
| | |
| | * ASAP, planned_start и pending_at; |
| | * действующие именованные параметры времени; |
| | * актуальный provider; |
| | * для take — результат relay, канонического действия, подготовленных проверок и сохранённый ASSIGNED. |
| | |
| | BOOKED с заполненным provider требует разбора согласованности; удалять provider ради успешного PENDING нельзя. Ожидание планового окна штатно. Предложения кандидатам относятся к PENDING, поэтому их отсутствие в BOOKED само по себе не означает поломку. |
| |
| ===== Проверенные источники ===== | ===== Проверенные источники ===== |