Config Rendering
flowchart TB
%% ===================== PLUGIN LOADING =====================
subgraph PLUGIN["🔌 Plugin Loading Phase"]
direction TB
EntryPoints["Entry Points"]
PluginLoader["PluginLoader"]:::critical
Plugins["Plugin Instances"]
EntryPoints -->|Load via importlib| PluginLoader
PluginLoader -->|Instantiate| Plugins
end
%% ===================== COMPONENT REGISTRY =====================
subgraph REGISTRY["📦 Component Registry Phase"]
direction TB
ComponentRegistry["ComponentRegistry"]:::critical
Injectables["Registered Injectables"]
Plugins -->|plugin . on_load| ComponentRegistry
ComponentRegistry -->|Store by identifier| Injectables
end
%% ===================== CONFIGURATION LOADING =====================
subgraph LOAD["📁 Configuration Loading"]
direction TB
YAML["config.yml"]
RawConfig["OpenTicketAIConfig"]
YAML -->|Read & Parse| RawConfig
end
%% ===================== DEPENDENCY INJECTION =====================
subgraph DI["🔧 Dependency Injection"]
direction TB
AppModule["AppModule"]:::critical
TemplateRenderer["TemplateRenderer"]
AppModule -->|Provides| TemplateRenderer
end
%% ===================== SERVICE RENDERING PHASE =====================
subgraph RENDER["🎨 Service Rendering Phase"]
direction TB
Factory["PipeFactory"]
ServiceDefs["Service Definitions"]
TemplateRenderer -.->|Injected| Factory
ServiceDefs --> Factory
end
%% ===================== RUNTIME OBJECTS =====================
subgraph RUNTIME["⚡ Runtime Objects"]
direction TB
Orchestrator["Orchestrator"]
Factory -->|Render & instantiate| Orchestrator
end
%% ===================== MAIN FLOW =====================
ComponentRegistry ==>|Lookup types| RawConfig
Injectables -.->|Available for resolution| ServiceDefs
RawConfig ==>|Extract services| ServiceDefs
RawConfig ==>|Extract orchestrator| Orchestrator
%% ===================== STYLES =====================
classDef critical fill: #8c2626, stroke: #b91c1c, stroke-width: 3px, color: #fff, font-weight: bold
%% ===================== SUBGRAPH STYLES =====================
style PLUGIN fill: #f3e8ff, stroke: #9333ea, stroke-width: 2px
style REGISTRY fill: #fce7f3, stroke: #db2777, stroke-width: 2px
style LOAD fill: #f8fafc, stroke: #64748b, stroke-width: 2px
style DI fill: #fef3c7, stroke: #d97706, stroke-width: 2px
style RENDER fill: #dbeafe, stroke: #2563eb, stroke-width: 2px
style RUNTIME fill: #dcfce7, stroke: #16a34a, stroke-width: 2px