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

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


sharixopen:knowledge:modules:handler_discovery

Registry обработчиков и доступность capabilities

Как собирается каталог ShariX Open

Готовые first-party handlers задаются каталогом handlers_examples.catalog. Optional-модули регистрируют contribution в Django; standalone runtime читает материализованный manifest и не должен импортировать их ORM ради discovery.

  • App/provider registration — приложение действительно загрузило свой callback.
  • HandlerContribution — проверенное описание handler и его narrow операций.
  • Manifest — сохранённый каталог установленной сборки для независимого runtime.
  • Mode/version — server-local выбор, что исполнять.
  • Provenance/health — происхождение кода и наблюдаемое выполнение; это разные проверки.

Наличие Python-класса либо строки в Wiki не заменяет ни одну из следующих стадий.

Что объявляет contribution

  • handler_id, provider_code, title/category;
  • необязательные ticket_type/status и стабильные contracts;
  • capabilities и список операций с capability каждой;
  • callback_path;
  • builtin_code_path и builtin_workspace_path;
  • default_mode/default_version, API key env name и metadata.

Пути проверяются как безопасные project-relative paths. builtin_available требует code path, blockly_editable — workspace path; операция не может требовать необъявленный capability. Дубли handler ID и некорректные manifests вызывают ошибку, а не молча выбирают последнюю запись.

Optional contribution не получает широкие ticket.transition/relationship.write/permission.write/requirements.write: для своего бизнес-действия объявляется narrow operation. Это граница API, не способ скрыто обрабатывать чужой статус.

Materialization и read-only проверка

Из корня собранной установки под назначенным пользователем:

./venv/bin/python manage.py sync_handler_contributions --check --list

Команда проверяет совпадение manifest с зарегистрированными installed contributions и выводит ID. Без –check команда записывает conf-real/handler_contributions.json через canonical config I/O; такая запись относится к штатной подготовке установки, а не обычному чтению статуса.

Если manifest отсутствует, low-level loader возвращает пустой набор optional contributions; это не доказательство, что optional-модули не нужны. Строгая sync-check должна выявить отсутствие/устаревание manifest.

От workspace к исполнению

  1. Измените typed Blockly workspace и соответствующие зарегистрированные блоки/операции.
  2. Сгенерируйте Python; ручная бизнес-ветка только в generated-файле не является каноническим изменением.
  3. Сверьте source hashes/provenance и declared program.
  4. Для optional берите module-owned code/workspace paths из contribution/provenance; не навязывайте всем один каталог generated.
  5. Проверьте выбранную runtime version: обновление builtin-файла не означает переключение локальной версии.

Open provider привязывает core builtin paths к handlers_examples/handlers и handlers_examples/generated_handler_blocks, local versions — к conf-real/handlers/local_versions. Modes — handler/disabled; прежний auto_transition не является текущим mode.

Диагностика по порядку

  • Source доступен, но app не загружен → проверьте конфигурацию и materialization/restart state.
  • App загружен, contribution отсутствует → проверьте регистрацию provider и её ошибку.
  • Contribution есть, manifest stale → штатная подготовка manifest, затем повтор check.
  • Catalog есть, процесс disabled/другая version → проверьте выбранный runtime режим.
  • Процесс запущен → отдельно проверьте identity/capability, необходимый XMPP/API и domain result.

Общий runtime может использоваться Platform; его собственный каталог и маршруты сохраняют отдельную assembly-привязку. Shared-изменение передаётся ответственному Platform для проверки по его внутренним инструкциям.

Проверенные источники

Проверено по Git-исходникам 31.10.2026. Состояние исходников отделено от состояния конкретной установки; команды ниже при редакционной проверке не выполнялись, бизнес-данные и значения секретов не читались.

sharixopen/knowledge/modules/handler_discovery.txt · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX