| |
| sharixopen:knowledge:scenarios:basic_bot [2026/10/28 21:31] – [sharixknowledge] approved package sx_knowledge_api_open | sharixopen:knowledge:scenarios:basic_bot [2026/10/31 12:14] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open |
|---|
| "ShariXKnowledgeOpenKnowledgeModulesHandlers", | "ShariXKnowledgeOpenKnowledgeModulesHandlers", |
| "ShariXKnowledgeScenarios" | "ShariXKnowledgeScenarios" |
| | ], |
| | "depends_on": [ |
| | "ShariXKnowledgeOpenKnowledgeModulesHandlers" |
| | ], |
| | "verified_by": [ |
| | "ShariXKnowledgeVerification" |
| ] | ] |
| }, | }, |
| "extensions": { | "extensions": { |
| "taxonomy": { | "taxonomy": { |
| "domain": "business_processes", | "domain": "integrations", |
| "lifecycle": "implemented", | "lifecycle": "implemented", |
| "component": "handlers", | "component": "handlers_examples, handlers_backend", |
| "parents": [ | "parents": [ |
| "ShariXKnowledgeScenarios" | "ShariXKnowledgeScenarios" |
| ], | ], |
| "terms": [ | "terms": [ |
| "XMPP", | "audience_developer", |
| "diagnostics", | "audience_operator", |
| "first-party", | "audience_administrator", |
| "BPMN" | "audience_support", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "material_scenario", |
| | "topic_operations_diagnostics", |
| | "topic_handlers_blockly", |
| | "topic_handlers_runtime", |
| | "xmpp", |
| | "first_party_handler", |
| | "bpmn", |
| | "blockly", |
| | "generated_python" |
| ] | ] |
| }, | }, |
| "xmpp_diagnostic_basic" | "xmpp_diagnostic_basic" |
| ] | ] |
| | }, |
| | "classification": { |
| | "schema": "sharix.knowledge.classification.v1", |
| | "products": [ |
| | "sharix_open" |
| | ], |
| | "audiences": [ |
| | "developer", |
| | "operator", |
| | "administrator", |
| | "support", |
| | "ai" |
| | ], |
| | "material": "scenario", |
| | "topics": [ |
| | "operations/diagnostics", |
| | "handlers/blockly", |
| | "handlers/runtime" |
| | ], |
| | "tag_terms": [ |
| | "audience_developer", |
| | "audience_operator", |
| | "audience_administrator", |
| | "audience_support", |
| | "audience_ai", |
| | "product_sharix_open", |
| | "material_scenario", |
| | "topic_operations_diagnostics", |
| | "topic_handlers_blockly", |
| | "topic_handlers_runtime", |
| | "xmpp", |
| | "first_party_handler", |
| | "bpmn", |
| | "blockly", |
| | "generated_python" |
| | ], |
| | "registry_document": "ShariXKnowledgeClassification", |
| | "state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста" |
| | }, |
| | "editorial_review": { |
| | "date": "2026-10-31", |
| | "scope": "Конкретизация действий, условий, результатов и диагностики; перечисления; исходные BPMN сохранены", |
| | "current_source_records_verified": 10, |
| | "original_source_evidence_recheck": "После git fetch все исходные SHA-256 совпали; source_evidence содержит текущие проверенные commits", |
| | "canonical_regeneration": { |
| | "kind": "first_party", |
| | "compared_python_paths": [ |
| | "handlers/open_basic_bot.py" |
| | ], |
| | "generator_sources_verified": 11, |
| | "handler_executed": false |
| | }, |
| | "runtime_checked": false, |
| | "correction": "Строка «Сообщение отправлено» пишется до send_message; сам лог не подтверждает успех вызова или доставку" |
| } | } |
| }, | }, |
| "content_sha256": "75b0e55119ab5614c793a5fca696e0add5401a1d33735f34933549418e91d338", | "content_sha256": "99b71eade93ad4d4af93f813d564096d2e108df5998d317b939246b5792894f4", |
| "schema": 1 | "schema": 1 |
| } | } |
| ~~NOCACHE~~ | ~~NOCACHE~~ |
| |
| **Область:** ShariX Open. **Обработчик:** ''open_basic_bot''. Это системный first-party handler без типа/рабочего статуса Ticket. Проверено 29.10.2026: опубликованный Python побайтово совпадает с каноническим first-party Blockly renderer. Выбранная версия, XMPP-сервер и runtime config конкретной установки проверяются отдельно. | **Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]]. |
| | |
| | **Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#operator_razvjortyvanija|Оператор развёртывания]] · [[sharixopen:knowledge:classification:audiences#administrator|Администратор]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. |
| | |
| | **Темы:** [[sharixopen:knowledge:classification:topics#diagnostika|Эксплуатация → Диагностика]] · [[sharixopen:knowledge:classification:topics#blockly|Обработчики → Blockly]] · [[sharixopen:knowledge:classification:topics#runtime|Обработчики → Runtime]]. |
| | |
| | |
| | |
| | **Область:** ShariX Open. **Обработчик:** ''open_basic_bot''. Это системный first-party handler без типа/рабочего статуса Ticket. 31.10.2026 исходники повторно получены из Git. First-party Python совпал с каноническим renderer; отдельно проверены операция xmpp_diagnostic_basic и общий launcher. Сам обработчик и его внешние действия при анализе не запускались. Выбранная версия, настройки и работоспособность конкретной установки проверяются отдельно. |
| |
| ===== Назначение и канонический контракт ===== | ===== Назначение и канонический контракт ===== |
| Бот выполняет минимальную диагностику XMPP: при запуске отправляет сообщение самому себе и умеет записывать факт получения разрешённых входящих сообщений. Он не обрабатывает заказ, не меняет Ticket, не собирает отчёты других handlers и не реализует диалог поддержки. | Бот предназначен для минимальной диагностики XMPP: |
| | |
| | * при запуске вызывает отправку сообщения самому себе; |
| | * callback записывает факт получения разрешённых входящих сообщений; |
| | * заказ и Ticket этим обработчиком не изменяются; |
| | * сбор отчётов других handlers и диалог поддержки здесь не реализованы. |
| | |
| | Каноническая цепочка: |
| | |
| | - Blockly workspace содержит typed root и операцию xmpp_diagnostic_basic. |
| | - Из workspace генерируется Python с bind_first_party_handler. |
| | - Runtime сверяет program tuple с каталогом builtin handler. |
| | - Проверяет runtime module, build_binding и полноту XMPP binding. |
| |
| Blockly workspace содержит typed root и операцию ''xmpp_diagnostic_basic''. Из него генерируется обычный Python, вызывающий ''bind_first_party_handler''. Runtime сверяет program tuple с каталогом builtin handler, проверяет runtime module/build_binding и полноту XMPP binding. При несовпадении контракт отклоняется, а не исполняется произвольная другая операция. | Несовпадение контракта отклоняется. Реализацию операции анализируют отдельно от короткого generated wrapper. |
| |
| Реализация typed operation находится в ''first_party_operations/open_basic_bot.py'' и тоже включена в закреплённые источники. Побайтовое совпадение маленького generated wrapper не заменяет анализа этого файла и общего launcher. BPMN описательные, isExecutable=false; Blockly XML/JSON при запуске не интерпретируется. | Реализация typed operation находится в ''first_party_operations/open_basic_bot.py'' и тоже включена в закреплённые источники. Побайтовое совпадение маленького generated wrapper не заменяет анализа этого файла и общего launcher. BPMN описательные, isExecutable=false; Blockly XML/JSON при запуске не интерпретируется. |
| </sharix-bpmn> | </sharix-bpmn> |
| |
| Общий launcher загружает конкретную выбранную Python version, регистрирует message callback, запускает XMPP loop и ждёт connected_event в пределах ''TIME_TO_CONNECT''. При неуспехе возвращается ненулевой результат, применяются общие ограничения внутренних перезапусков. Наличие импортированного модуля ещё не означает установленное соединение. | Общий launcher: |
| |
| После подключения operation записывает диагностические логи и отправляет на собственный JID строку с JID и локальным datetime. Нет ожидания echo, receipt или ответа пользователя. Затем start_handler возвращает. В текущем launcher нормальный возврат приводит к остановке XMPP loop и успешному выходу, а не к постоянному ожиданию входящих сообщений. Возможный повтор со стороны внешнего service manager зависит от его конфигурации, не от бесконечного цикла в этой operation. | - Загружает выбранную Python version. |
| | - Регистрирует message callback и запускает XMPP loop. |
| | - Ждёт connected_event не дольше TIME_TO_CONNECT. |
| | - Если соединение не установлено — возвращает ненулевой результат; далее действует общая политика внутренних перезапусков. |
| |
| Поэтому лог «Сообщение отправлено» и успешный выход подтверждают прохождение соответствующего вызова, но не доказывают получение сообщения, устойчивость соединения или готовность всех бизнес-handler API. Отсутствие собственного echo до остановки не следует автоматически считать отказом XMPP. | Успешный import ещё не означает соединение. |
| | |
| | После подключения операция: |
| | |
| | - Записывает диагностические строки в журнал. |
| | - Вызывает send_message на собственный JID с JID и локальным datetime в тексте. |
| | - Возвращает управление без ожидания echo, receipt или ответа пользователя. |
| | - При нормальном возврате launcher останавливает XMPP loop и завершает запуск. |
| | |
| | Постоянного listener в этой операции нет. Повтор со стороны внешнего service manager определяется его конфигурацией. |
| | |
| | Что подтверждают наблюдаемые признаки: |
| | |
| | * **Строка «Сообщение отправлено»:** записана до send_message, поэтому сама не подтверждает даже успешный возврат этого вызова. |
| | * **Нормальный возврат операции:** вызов отправки не бросил исключение; доставка и прочтение этим не доказаны. |
| | * **Успешное завершение launcher:** относится к этому диагностическому запуску, а не к готовности всех бизнес-handler API. |
| | |
| | Отсутствие собственного echo до остановки само по себе не доказывает отказ XMPP. |
| |
| ===== Что делает входящий callback (BPMN) ===== | ===== Что делает входящий callback (BPMN) ===== |
| </sharix-bpmn> | </sharix-bpmn> |
| |
| Принимаются только типы chat и normal. Resource часть JID отбрасывается; bare sender должен совпасть с техническим allowlist: open_basic_bot или test_user в настроенном EJ_HOST. Body проверяется на None, а не на непустой текст. При прохождении фильтра записывается только «Сообщение получено». | Входящий callback: |
| |
| Callback не выполняет текст как команду, не отсылает echo, не сохраняет бизнес-объект и не выдаёт права. Наличие такого диагностического callback не означает долговременного listener: время его работы ограничено жизненным циклом текущего launcher, описанным выше. | - Пропускает только chat и normal. |
| | - Отбрасывает resource у JID отправителя. |
| | - Проверяет bare sender по allowlist: open_basic_bot или test_user в настроенном EJ_HOST. |
| | - Проверяет body is not None, без требования непустой строки. |
| | - Записывает только «Сообщение получено». |
| | |
| | Callback не выполняет текст как команду и не отправляет echo. Время его работы ограничено жизненным циклом launcher. |
| |
| ===== Настройка и диагностика ===== | ===== Настройка и диагностика ===== |
| JID строится из botname и EJ_HOST; credentials загружает штатная конфигурация, значения секретов в Wiki не публикуются. Используйте существующий путь управления runtime version/config и штатные журналы. Не подменяйте его отдельным интерпретатором Blockly. | JID строится из botname и EJ_HOST; credentials загружает штатная конфигурация, значения секретов в Wiki не публикуются. Используйте существующий путь управления runtime version/config и штатные журналы. Не подменяйте его отдельным интерпретатором Blockly. |
| |
| Разделяйте bootstrap/версию, binding contract, установление XMPP, вызов send и фактическое получение. Для ошибки подключения смотрите TIME_TO_CONNECT, состояние XMPP и общую политику перезапусков; для отсутствующего inbound-лога — тип сообщения, bare JID, allowlist и то, оставался ли процесс ещё запущен. Здесь нет Ticket recheck timer или waiting reason: переносить диагностику SERVICE_REQUEST на этого бота нельзя. | Диагностику разделить на этапы: |
| | |
| | - Выбранная версия и bootstrap. |
| | - Binding contract. |
| | - Установление XMPP в пределах TIME_TO_CONNECT. |
| | - Вызов send и его ошибка/нормальный возврат. |
| | - Фактическое получение: тип, bare JID, allowlist и работающий в этот момент процесс. |
| | |
| | У этого бота нет Ticket recheck timer и waiting reason; параметры ожидания SERVICE_REQUEST к нему неприменимы. |
| |
| ===== Проверенные источники ===== | ===== Проверенные источники ===== |