Wire dashboard context into Hearthkeeper

This commit is contained in:
2026-05-12 10:28:33 -05:00
parent c1d6032eb2
commit 74e3c0dcaa
7 changed files with 117 additions and 31 deletions

View File

@@ -1,7 +1,6 @@
"""FastAPI main application."""
import asyncio
import json
import secrets
from contextlib import suppress
from pydantic import BaseModel, Field
@@ -210,26 +209,7 @@ async def test_loop_inactivity(
def serialize_dashboard(dashboard) -> dict:
"""Serialize a dashboard database model into an API response."""
session_goals = []
if dashboard.session_goals:
try:
session_goals = json.loads(dashboard.session_goals)
except json.JSONDecodeError:
session_goals = []
return {
"session_id": dashboard.session_id,
"raw_markdown": dashboard.raw_markdown,
"stream_title": dashboard.stream_title,
"game": dashboard.game,
"mood": dashboard.mood,
"go_live_notification": dashboard.go_live_notification,
"social_post": dashboard.social_post,
"session_goals": session_goals,
"content_angle": dashboard.content_angle,
"created_at": dashboard.created_at.isoformat(),
"updated_at": dashboard.updated_at.isoformat(),
}
return Repository.serialize_dashboard(dashboard)
@app.post("/admin/session/dashboard", dependencies=[Depends(require_admin)])
@@ -253,6 +233,14 @@ async def save_session_dashboard(request: DashboardRequest) -> dict:
content_angle=request.content_angle,
)
if orchestrator and request.session_id in orchestrator.active_sessions:
orchestrator.active_sessions[request.session_id]["dashboard"] = (
serialize_dashboard(dashboard)
)
orchestrator.active_sessions[request.session_id]["theme"] = (
request.content_angle or request.stream_title
)
return {
"status": "dashboard_saved",
"dashboard": serialize_dashboard(dashboard),