Update backend/workers/control_tick.py
Browse files
backend/workers/control_tick.py
CHANGED
|
@@ -60,6 +60,17 @@ def main():
|
|
| 60 |
safe = json.loads(json.dumps(result_dict, default=str))
|
| 61 |
redis.set_json("control:last_tick", safe, ttl=1200) # 20 min TTL
|
| 62 |
log.info("Tick result saved to Redis")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
else:
|
| 64 |
log.warning("Redis not available — tick result not persisted")
|
| 65 |
|
|
|
|
| 60 |
safe = json.loads(json.dumps(result_dict, default=str))
|
| 61 |
redis.set_json("control:last_tick", safe, ttl=1200) # 20 min TTL
|
| 62 |
log.info("Tick result saved to Redis")
|
| 63 |
+
|
| 64 |
+
# Also persist budget state for the /control/budget endpoint
|
| 65 |
+
budget_info = {
|
| 66 |
+
"energy_cost_kwh": result_dict.get("energy_cost_kwh", 0),
|
| 67 |
+
"budget_spent_kwh": result_dict.get("budget_spent_kwh", 0),
|
| 68 |
+
"budget_remaining_kwh": result_dict.get("budget_remaining_kwh", 0),
|
| 69 |
+
"daily_budget_kwh": 25.0 * 5.0 / 100.0, # MAX_ENERGY_REDUCTION_PCT
|
| 70 |
+
"stage": result_dict.get("stage_id", "unknown"),
|
| 71 |
+
"last_updated": datetime.now(timezone.utc).isoformat(),
|
| 72 |
+
}
|
| 73 |
+
redis.set_json("control:budget", budget_info, ttl=1800) # 30 min TTL
|
| 74 |
else:
|
| 75 |
log.warning("Redis not available — tick result not persisted")
|
| 76 |
|