model toggles

This commit is contained in:
Dobromir Popov
2025-08-09 23:03:54 +03:00
parent 31a41785d6
commit b17d53510a
3 changed files with 127 additions and 31 deletions

View File

@ -1662,20 +1662,42 @@ class CleanTradingDashboard:
if self.orchestrator and hasattr(self.orchestrator, 'set_model_toggle_state'):
# Map dashboard names to orchestrator names
model_mapping = {
'dqn_agent': 'dqn_agent',
'enhanced_cnn': 'enhanced_cnn',
'cob_rl_model': 'cob_rl_model',
'dqn_agent': 'dqn',
'enhanced_cnn': 'cnn',
'cob_rl_model': 'cob_rl',
'extrema_trainer': 'extrema_trainer',
'transformer': 'transformer',
'decision_fusion': 'decision_fusion'
}
orchestrator_name = model_mapping.get(model_name, model_name)
self.orchestrator.set_model_toggle_state(
orchestrator_name,
toggle_type + '_enabled',
is_enabled
)
# Support three toggles: inference_enabled, training_enabled, routing_enabled
if toggle_type == 'inference':
self.orchestrator.set_model_toggle_state(
orchestrator_name,
inference_enabled=is_enabled
)
elif toggle_type == 'training':
self.orchestrator.set_model_toggle_state(
orchestrator_name,
training_enabled=is_enabled
)
elif toggle_type == 'routing':
# New: whether the model output is routed into decision making
if hasattr(self.orchestrator, 'set_model_routing_state'):
self.orchestrator.set_model_routing_state(orchestrator_name, routing_enabled=is_enabled)
else:
# Fallback: store in orchestrator.model_toggle_states under 'routing_enabled'
if not hasattr(self.orchestrator, 'model_toggle_states'):
self.orchestrator.model_toggle_states = {}
if orchestrator_name not in self.orchestrator.model_toggle_states:
self.orchestrator.model_toggle_states[orchestrator_name] = {}
self.orchestrator.model_toggle_states[orchestrator_name]['routing_enabled'] = is_enabled
if hasattr(self.orchestrator, '_save_ui_state'):
try:
self.orchestrator._save_ui_state()
except Exception:
pass
logger.info(f"Updated {orchestrator_name} {toggle_type}_enabled = {is_enabled}")
# Return all current values (no change needed)

View File

@ -215,6 +215,7 @@ class ModelsTrainingPanel:
if isinstance(toggle_state, dict):
model_data['training_enabled'] = toggle_state.get('training_enabled', True)
model_data['inference_enabled'] = toggle_state.get('inference_enabled', True)
model_data['routing_enabled'] = toggle_state.get('routing_enabled', True)
# Get model statistics
if hasattr(self.orchestrator, 'get_model_statistics'):
@ -584,6 +585,16 @@ class ModelsTrainingPanel:
className="form-check-input",
style={"transform": "scale(0.7)"}
)
], className="d-flex align-items-center me-2"),
html.Div([
html.Label("Route", className="text-muted small me-1", style={"font-size": "10px"}),
dcc.Checklist(
id={'type': 'model-toggle', 'model': model_name, 'toggle_type': 'routing'},
options=[{"label": "", "value": True}],
value=[True] if model_data.get('routing_enabled', True) else [],
className="form-check-input",
style={"transform": "scale(0.7)"}
)
], className="d-flex align-items-center")
], className="d-flex")
], className="d-flex align-items-center mb-2"),