Spaces:
Running
Running
File size: 2,642 Bytes
d64fd55 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 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 ..intelligence.runner_intelligence_snapshot import RunnerIntelligenceSnapshot
from domain.runner_positioning import RunnerPositioning
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)
week_runs: List[Any] = field(default_factory=list)
language: str = "en"
target_monday: Optional[Any] = None # date
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
runner_positioning: Optional[RunnerPositioning] = None
positioning: Optional[WeeklyPositioning] = None
positioning_view: Optional[Any] = None
recommendation: Optional[TrainingRecommendation] = None
goal_trajectory: Optional[GoalTrajectory] = None
# Intelligence outputs
insights: Optional[Dict[str, Any]] = None
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_runner_positioning: Optional[Any] = None
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
visualization_scope: str = "weekly" # "full" | "weekly"
charts: Dict[str, Any] = field(default_factory=dict)
# Context control
enable_intelligence: bool = True
intelligence_cache: Dict[str, bool] = field(default_factory=dict)
# Comparison
period_comparison: Optional[Any] = None
# Goal progress
goal_progress: Optional[Dict[str, Any]] = None
goal_view: Optional[Dict[str, Any]] = None
|