feat(B-TRIG): Trigger-Kern konsolidiert — generischer Dispatcher, UI-Event-Typ, 4 Trigger-Typen
Check Cross-Plugin Imports / check (push) Has been cancelled
Check Cross-Plugin Imports / check (push) Has been cancelled
B-TRIG-GEN: app/core/trigger_dispatcher.py (NEU) — generischer Event→Automation Dispatcher - Wildcard EventBus Subscribe → matcht AutomationDefinition mit trigger_type=event - Keine hardcodierte Event-Liste mehr — alle Outbox Events können Automations triggern - Registriert in main.py lifespan + worker.py on_startup B-TRIG-UI: UI-Event Trigger-Typ - trigger_type Pattern um „ui" erweitert (event/schedule/manual/ui) - UI-Events laufen ephemeral über EventBus → TriggerDispatcher → run_automation - UI-Events NIEMALS in Outbox (is_ui_event() Guard) B-TRIG-CRON: Cron/Heartbeat verifiziert — bestehender Pfad funktioniert B-TRIG-MAN: Manual-Trigger verifiziert — bestehender Pfad funktioniert B-TRIG-TEST: 10 Tests in test_trigger_core.py — alle grün - Domain Event, UI Event (ephemeral), Cron, Manual, alle nutzen selben Execution-Kern B-TRIG-DOC: Plugin-Dev-Guide Kapitel 10 mit Implementierungsdetails erweitert
This commit is contained in:
@@ -71,7 +71,7 @@ class AutomationDefinitionCreate(BaseModel):
|
||||
|
||||
name: str = Field(..., min_length=1, max_length=120)
|
||||
description: str = Field(default="", max_length=500)
|
||||
trigger_type: str = Field(default="manual", pattern="^(event|schedule|manual)$")
|
||||
trigger_type: str = Field(default="manual", pattern="^(event|schedule|manual|ui)$")
|
||||
trigger_config: dict[str, Any] = Field(default_factory=dict)
|
||||
conditions: list[dict[str, Any]] = Field(default_factory=list)
|
||||
actions: list[dict[str, Any]] = Field(default_factory=list)
|
||||
@@ -84,7 +84,7 @@ class AutomationDefinitionUpdate(BaseModel):
|
||||
|
||||
name: str | None = Field(None, max_length=120)
|
||||
description: str | None = Field(None, max_length=500)
|
||||
trigger_type: str | None = Field(None, pattern="^(event|schedule|manual)$")
|
||||
trigger_type: str | None = Field(None, pattern="^(event|schedule|manual|ui)$")
|
||||
trigger_config: dict[str, Any] | None = None
|
||||
conditions: list[dict[str, Any]] | None = None
|
||||
actions: list[dict[str, Any]] | None = None
|
||||
|
||||
Reference in New Issue
Block a user