avfranco's picture
HF Space deploy snapshot (minimal allow-list)
557ee65
from dataclasses import dataclass, field
from typing import List, Dict, Any, Optional
from domain.training.run import Run
from domain.training.weekly_snapshot import WeeklySnapshot
from domain.training.weekly_trend import WeeklyTrend
from domain.runner.profile import RunnerProfile
from domain.training.training_recommendation import TrainingRecommendation
from domain.goals.goal_trajectory import GoalTrajectory
from core.intelligence.runner_intelligence_snapshot import RunnerIntelligenceSnapshot
from application.positioning_service import WeeklyPositioning
@dataclass
class PipelineContext:
"""
Explicit, typed data contract for the Runner pipeline.
Eliminates dynamic field attachments and implicit state.
"""
# Inputs
runs: List[Any] = field(default_factory=list)
language: str = "en"
runner_profile: Optional[RunnerProfile] = None
active_goal: Optional[Any] = None
# Session state
sessions: Dict[Any, WeeklySnapshot] = field(default_factory=dict)
# Computed training data
weekly_snapshot: Optional[WeeklySnapshot] = None
weekly_trend: Optional[WeeklyTrend] = None
# Positioning layer
positioning: Optional[WeeklyPositioning] = None
recommendation: Optional[TrainingRecommendation] = None
goal_trajectory: Optional[GoalTrajectory] = None
# Intelligence outputs
insights: Dict[str, Any] = field(default_factory=dict)
plan: Optional[str] = None
summary: Optional[Dict[str, Any]] = None
trends: Optional[Any] = None
risk_assessment: Optional[Any] = None
intelligence_snapshot: Optional[RunnerIntelligenceSnapshot] = None
# Intelligence Cache (for reuse)
last_positioning: Optional[Any] = None
last_insights: Dict[str, Any] = field(default_factory=dict)
last_plan: Optional[str] = None
last_brief: Optional[str] = None
last_focus: Optional[str] = None
# Visualization
charts: Dict[str, Any] = field(default_factory=dict)
# Comparison
period_comparison: Optional[Any] = None