""" LifeFlow AI - Session Management ✅ 新增 final_report 欄位,用於在 Step 3 和 Step 4 之間傳遞報告內容 """ import uuid from typing import Dict, Any, Optional from src.agent.base import UserState from src.infra.config import get_settings class UserSession: def __init__(self): self.session_id: Optional[str] = None self.planner_agent = None self.core_team = None self.user_state: Optional[UserState] = None self.task_list: list = [] self.reasoning_messages: list = [] self.chat_history: list = [] self.planning_completed: bool = False # 🔥 新增:儲存 Step 3 生成的完整報告 self.final_report: str = "" self.lat: Optional[float] = None self.lng: Optional[float] = None self.custom_settings: Dict[str, Any] = {} self.agno_settings = get_settings() def to_dict(self) -> Dict[str, Any]: return { 'session_id': self.session_id, 'task_list': self.task_list, 'reasoning_messages': self.reasoning_messages, 'chat_history': self.chat_history, 'planning_completed': self.planning_completed, 'final_report': self.final_report, # 🔥 序列化 'lat': self.lat, 'lng': self.lng, 'custom_settings': self.custom_settings } @classmethod def from_dict(cls, data: Dict[str, Any]) -> 'UserSession': session = cls() session.session_id = data.get('session_id') session.task_list = data.get('task_list', []) session.reasoning_messages = data.get('reasoning_messages', []) session.chat_history = data.get('chat_history', []) session.planning_completed = data.get('planning_completed', False) session.final_report = data.get('final_report', "") # 🔥 反序列化 session.lat = data.get('lat') session.lng = data.get('lng') session.custom_settings = data.get('custom_settings', {}) return session