[I128-2820] Реализовать общесистемную автоматизацию Automation


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2820] Реализовать общесистемную автоматизацию Automation📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Новые возможности 2026.3 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: Нет

Завершено: 08.09.2026 13:42

  1. Цель

Нужно реализовать общесистемный модуль Automation для ИРБИС 128. Модуль должен позволить администраторам настраивать правила автоматизации без написания PHP-кода: trigger -> conditions -> actions -> execution policy.

Automation должен быть владельцем правил автоматизации, trigger/condition/action model, action whitelist, dry-run, explain, execution audit, защиты от циклов и интеграции с Queue. Модуль не должен становиться вторым workflow engine, не должен обходить Security и не должен содержать частную доменную логику Tasks.

  1. Контекст

В промышленном контуре ИРБИС 128 автоматические реакции нужны задачам, workflow-проектам, событиям, очередям, согласованиям, публичным каналам и будущим доменным модулям. Если каждая предметная область будет реализовывать собственные обработчики, появятся разрозненные правила, неодинаковые проверки прав, скрытые циклы, неповторяемые retry и невозможность объяснить, почему действие было выполнено.

Automation должен быть общим rule engine поверх существующих системных контрактов:

Нужно реализовать модель правил:

Нужно реализовать triggers:

Нужно реализовать conditions:

Нужно реализовать actions:

Нужно реализовать runtime:

Нужно реализовать администрирование:

Нужно реализовать интеграцию с HealthCheck:

Нужно реализовать интеграцию с Observability:

Нужно реализовать контракт для Tasks как первого потребителя:

Automation владеет rule schema, profiles, triggers, conditions, action registry, action whitelist, execution policy, dry-run, explain, execution audit, loop prevention, idempotency и интеграцией с Queue runtime.

Automation не владеет доменной моделью задач, workflow engine, event log, Queue worker runtime, правами пользователей, HealthCheck orchestration, Observability storage, доставкой уведомлений, файлами, комментариями, публичным UI и бизнес-командами доменных модулей.

EventBus владеет событиями, outbox/inbox, delivery, retry и deadletter. Queue владеет job runtime. Security принимает решения доступа. Workflow* выполняет workflowпереходы. Доменные модули поставляют только безопасные trigger/action providers и payload resolvers.

  1. Критерии Приемки

Администратор может создать правило trigger > conditions -> actions без написания PHPкода.

Правило можно включить, выключить, перевести в dryrunonly и suspended.

Trigger ссылается на зарегистрированный EventType, workflow-факт, Queue schedule или provider доменного модуля и не раскрывает payload сверх прав.

Condition выполняет только проверку и не меняет данные.

Action выбирается из whitelist и не может вызвать произвольный PHP-код или обойти Security.

Workflow transition action выполняется через WorkflowTransition.

Длительные actions ставятся в Queue и диагностируются как Queue jobs.

Dry-run показывает matched rules, skipped conditions, planned actions, required permissions, Queue jobs и причины отказа без изменения данных.

AutomationExecution фиксирует результат выполнения, trace id, actor/system principal, trigger context, idempotency key, ошибки и ссылки на затронутые объекты.

Защита от циклов предотвращает повторный самозапуск по causation chain, depth limit, cycle key и recursion policy.

Публичные и анонимные сценарии не могут напрямую запускать произвольные actions; допускаются только безопасные whitelisted reactions через system principal и policy.

Синхронные blocking rules не входят в первый промышленный контур Automation; блокировки сохранения и переходов остаются в WorkflowTransition, ФЛК/validators, Security и доменных проверках.

Tasks использует Automation как внешний системный rule engine и поставляет только task-specific triggers/actions/profiles.

HealthCheck выявляет битые ссылки правил, отсутствующие providers, конфликтующие keys, ошибки permission/action parameters и потенциальные циклы.

Observability получает safe signals о выполнении правил, ошибках, пропусках, latency, queue lag, retry и loop prevention.

  1. Проверки И Документация

Нужно подготовить TestA-сценарии для:

В Help должны быть подготовлены:

-

PR по I1282820 добавляет первый контрактный срез общесистемного модуля Automation. В границах PR: правила AUTOMATIONRULE, системный JSON whitelist, dryrun, explainability, защита от циклов, HealthCheck-контракт, Help и TestA. Реальный запуск внешних действий не включен: Workflow, EventBus, Queue, Security, Observability и доменные модули остаются владельцами своих контрактов.

Куда смотреть:

Изменения по файлам:

modules/Automation/api.php

modules/Automation/__call/AdminModuleVariablesInit.inc

modules/Automation/__call/Variables.inc

modules/Automation/__call/GetSystemDefinitions.inc

modules/Automation/__call/NormalizeTrigger.inc

modules/Automation/__call/NormalizeCondition.inc

modules/Automation/__call/NormalizeAction.inc

modules/Automation/__call/NormalizeRule.inc

modules/Automation/__call/ListActionDefinitions.inc

modules/Automation/__call/ResolveActionDefinition.inc

modules/Automation/__call/EvaluateConditions.inc

modules/Automation/__call/CheckCycleGuard.inc

modules/Automation/__call/BuildExecutionPlan.inc

modules/Automation/__call/DryRunRule.inc

modules/Automation/__call/ExplainRule.inc

modules/Automation/__call/RecordToRuleDefinition.inc

modules/Automation/__call/ApplyRecordIndexes.inc

modules/Automation/__call/HealthCheckDefinition.inc

modules/Automation/system/automation_definitions.json

modules/Automation/Formats/brief.pft128

modules/Automation/Tests/Module.inc

modules/Automation/Help/Root.md

modules/Automation/Help/Purpose.md

modules/Automation/Help/AdminGuide.md

modules/Automation/Help/DeveloperGuide.md

modules/Automation/Help/Runbook.md

1. Связанные задачи

1.1. 🔗 blocks: I128-2840

[I128-2840] Реализовать WorkflowDesigner как единую административную студию настройки workflow-проектов Статус: Завершено | Автор: Ilya Mikhaylenko

1.2. 🔗 blocks: I128-2790

[I128-2790] Расширить Workflow* для промышленного контура задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.3. 🔗 blocks: I128-2793

[I128-2793] Ввести TraceContext для сквозной трассировки операций Статус: Завершено | Автор: Ilya Mikhaylenko

1.4. 🔗 blocks: I128-2794

[I128-2794] Реализовать системную событийную шину EventBus Статус: Завершено | Автор: Ilya Mikhaylenko

1.5. 🔗 blocks: I128-2795

[I128-2795] Расширить Queue как runtime фоновых заданий, retry и расписаний Статус: Завершено | Автор: Ilya Mikhaylenko

1.6. 🔗 blocks: I128-2797

[I128-2797] Расширить Security для проектных прав, полей, действий и аудита доступа Статус: Завершено | Автор: Ilya Mikhaylenko

1.7. 🔗 blocks: I128-2798

[I128-2798] Реализовать HealthCheck для workflow-проектов и задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.8. 🔗 blocks: I128-2799

[I128-2799] Подготовить TestA-контракты системных JSON и end-to-end сценариев Статус: Завершено | Автор: Ilya Mikhaylenko

1.9. 🔗 blocks: I128-2818

[I128-2818] Реализовать наблюдаемость Observability для промышленных модулей Статус: Завершено | Автор: Ilya Mikhaylenko