mirror of
https://github.com/zvx-echo6/meshai.git
synced 2026-06-10 17:04:45 +02:00
fix: periodic health broadcast missing pillars — add full score payload + validity gate
The periodic health_update in main.py only sent score/tier/totals but no pillars dict. Dashboard setHealth() replaced the full REST response with this incomplete object, causing all pillar bars to drop to 0.0. Now sends the complete payload matching mesh_routes.py and ws.py (pillars, util_percent, flagged_nodes, battery_warnings, recommendations) and gates on composite > 0 + infra_total > 0 to skip partial state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a119de7d86
commit
6989a49f64
1 changed files with 24 additions and 10 deletions
|
|
@ -126,16 +126,30 @@ class MeshAI:
|
|||
if self.broadcaster and self.health_engine.mesh_health:
|
||||
try:
|
||||
mh = self.health_engine.mesh_health
|
||||
health_dict = {
|
||||
"score": round(mh.score.composite, 1),
|
||||
"tier": mh.score.tier,
|
||||
"total_nodes": mh.total_nodes,
|
||||
"total_regions": mh.total_regions,
|
||||
"infra_online": mh.score.infra_online,
|
||||
"infra_total": mh.score.infra_total,
|
||||
"last_computed": mh.last_computed,
|
||||
}
|
||||
await self.broadcaster.broadcast("health_update", health_dict)
|
||||
sc = mh.score
|
||||
if sc.composite > 0 and sc.infra_total > 0:
|
||||
health_dict = {
|
||||
"score": round(sc.composite, 1),
|
||||
"tier": sc.tier,
|
||||
"pillars": {
|
||||
"infrastructure": round(sc.infrastructure, 1),
|
||||
"utilization": round(sc.utilization, 1),
|
||||
"coverage": round(sc.coverage, 1),
|
||||
"behavior": round(sc.behavior, 1),
|
||||
"power": round(sc.power, 1),
|
||||
},
|
||||
"infra_online": sc.infra_online,
|
||||
"infra_total": sc.infra_total,
|
||||
"util_percent": round(sc.util_percent, 1),
|
||||
"flagged_nodes": sc.flagged_nodes,
|
||||
"battery_warnings": sc.battery_warnings,
|
||||
"total_nodes": mh.total_nodes,
|
||||
"total_regions": mh.total_regions,
|
||||
"unlocated_count": getattr(mh, "unlocated_count", 0),
|
||||
"last_computed": mh.last_computed,
|
||||
"recommendations": getattr(mh, "recommendations", []),
|
||||
}
|
||||
await self.broadcaster.broadcast("health_update", health_dict)
|
||||
except Exception as e:
|
||||
logger.debug("Dashboard broadcast error: %s", e)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue