feat(simple_metrics): use frequency_alert while adaptive_state is escalated (SIENTIAPDE-2190)
This commit is contained in:
@@ -85,6 +85,9 @@ def simple_metrics(config: dict[str, Any]):
|
||||
- interval_minutes (int, optional): Computation interval in minutes (default: 60)
|
||||
- metrics (list[str], optional): List of metrics to compute
|
||||
(default: ['rmse', 'mse', 'mae', 'r2'])
|
||||
- frequency_alert (str, optional): Frequency used while `adaptive_state.escalated`
|
||||
is true; same format as `frequency`. Absent = adaptive frequency off.
|
||||
- adaptive_state (dict, optional): `{escalated, healthy_streak}`, written by laborious.
|
||||
- Additional fields from common_config
|
||||
|
||||
Returns:
|
||||
@@ -92,14 +95,23 @@ def simple_metrics(config: dict[str, Any]):
|
||||
actual data), target table, time interval, and metrics list. Results stored in
|
||||
'simple_metrics' table
|
||||
"""
|
||||
base = common_config(config)
|
||||
frequency_alert = config.get('frequency_alert')
|
||||
# SIENTIAPDE-1995: laborious flips `adaptive_state.escalated` on a threshold breach (and back
|
||||
# after the window is renewed without one) and bumps `updated_at`, which makes this tick
|
||||
# rewrite the schedule.
|
||||
if frequency_alert and (config.get('adaptive_state') or {}).get('escalated'):
|
||||
base['frequency'] = frequency_alert
|
||||
return {
|
||||
**common_config(config),
|
||||
**base,
|
||||
'schema': 'sientia_data',
|
||||
'predictions_table_name': 'predictions',
|
||||
'data_table_name': 'laborious_data',
|
||||
'target_table_name': 'simple_metrics',
|
||||
'interval_minutes': config.get('interval_minutes', 60),
|
||||
'metrics': config.get('metrics', ['rmse', 'mse', 'mae', 'r2']),
|
||||
# Forwarded so create_schedule_config can warn on a value below the floor.
|
||||
'frequency_alert': frequency_alert,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user