Skip to content

6. Runtime View (MVP)

6.1 Runtime Scenario: Develop Standardized Pop-Up Workshop (US-001)

Use Case: US-001 - Strategic Migration Planner develops standardized workshop designs

Goal: Test different workshop configurations to find optimal standardized design

Scenario Description

Strategic planner creates multiple workshop configuration variants (2 stations, 4 stations, 6 stations) and runs simulations to compare throughput and identify optimal design.

Runtime Interaction

sequenceDiagram
    participant Planner as Strategic Planner
    participant CLI as CLI
    participant Config as Configuration Context
    participant Retrofit as Retrofit Workflow Context
    participant Railway as Railway Infrastructure Context
    participant External as External Trains Context
    participant Files as File System

    Planner->>Files: Create workshop_2stations.json
    Planner->>Files: Create workshop_4stations.json
    Planner->>Files: Create workshop_6stations.json

    loop For each configuration
        Planner->>CLI: python main.py --config workshop_Xstations.json
        CLI->>Config: load_configuration()
        Config->>Files: Read JSON/CSV
        Config->>Config: Validate with Pydantic
        Config-->>CLI: Validated scenario

        CLI->>Railway: build_tracks(scenario)
        Railway-->>CLI: Track infrastructure ready

        CLI->>External: initialize_trains(scenario)
        External-->>CLI: Train arrivals scheduled

        CLI->>Retrofit: initialize(scenario, railway, external)
        Retrofit-->>CLI: Workflow ready

        CLI->>Retrofit: run_simulation(24h)

        loop Simulation time (24h)
            External->>Retrofit: TrainArrivedEvent
            Retrofit->>Railway: Query track capacity
            Retrofit->>Retrofit: Process wagons
            Retrofit->>Retrofit: Calculate KPIs
        end

        Retrofit->>Retrofit: Aggregate results
        Retrofit->>Files: Write simulation_results_Xstations.csv
        Retrofit->>Files: Write kpi_charts_Xstations.png
        Retrofit-->>CLI: Simulation complete
        CLI-->>Planner: Results available
    end

    Planner->>Files: Compare CSV results
    Planner->>Planner: Select optimal configuration

Key Runtime Aspects

Aspect Description Quality Goal
Configuration Validation Pydantic validates workshop parameters before simulation starts Reliability
Iterative Testing Planner runs multiple configurations sequentially Usability
Real-time KPI Calculation Analysis Engine calculates metrics during simulation Accuracy
File-based Comparison Results exported to CSV for manual comparison Simplicity

Performance Characteristics

Note: Performance metrics will be measured during MVP implementation. Estimates are placeholders for architecture documentation.


6.2 Runtime Scenario: Estimate Workshop Throughput (US-002)

Use Case: US-002 - Strategic planner estimates throughput capacity

Goal: Determine maximum wagon throughput for a given workshop layout

Scenario Description

Strategic planner runs simulation with increasing wagon arrival rates to find throughput limits and identify bottlenecks.

Runtime Interaction

sequenceDiagram
    participant Planner as Strategic Planner
    participant CLI as CLI
    participant Config as Configuration Context
    participant Retrofit as Retrofit Workflow Context
    participant Railway as Railway Infrastructure Context
    participant External as External Trains Context
    participant Metrics as Metrics Collection
    participant Files as File System

    Planner->>Files: Create scenario_high_load.json
    Note over Files: 30 wagons/hour arrival rate

    Planner->>CLI: python main.py --config scenario_high_load.json
    CLI->>Config: load_configuration()
    Config-->>CLI: Validated scenario

    CLI->>Railway: build_tracks(scenario)
    Railway-->>CLI: Track infrastructure ready

    CLI->>External: initialize_trains(scenario)
    External-->>CLI: Train arrivals scheduled

    CLI->>Retrofit: initialize(scenario, railway, external)
    Retrofit-->>CLI: Workflow ready

    CLI->>Retrofit: run_simulation(24h)

    loop Every simulation hour
        External->>Retrofit: TrainArrivedEvent (30 wagons)
        Retrofit->>Railway: Query workshop capacity

        alt Workshop available
            Retrofit->>Retrofit: Start retrofit process
            Retrofit->>Metrics: Record: wagon_processing_started
        else All workshops busy
            Retrofit->>Retrofit: Add to queue
            Retrofit->>Metrics: Record: wagon_queued
            Metrics->>Metrics: Calculate queue length
        end

        Retrofit->>Retrofit: Complete retrofits
        Retrofit->>Metrics: Record: wagon_completed
        Metrics->>Metrics: Calculate throughput
        Metrics->>Metrics: Calculate utilization

        alt Queue length > threshold
            Metrics->>Metrics: Flag: bottleneck detected
        end
    end

    Retrofit->>Metrics: Get aggregated KPIs
    Metrics-->>Retrofit: Throughput, utilization, bottlenecks

    Retrofit->>Files: Write throughput_analysis.csv
    Retrofit->>Files: Write bottleneck_chart.png
    Retrofit-->>CLI: Analysis complete

    CLI-->>Planner: Results with bottleneck identification
    Planner->>Files: Review bottleneck_chart.png
    Planner->>Planner: Decide: Add stations or optimize layout

Key Runtime Aspects

Aspect Description Quality Goal
Real-time Bottleneck Detection Analysis Engine identifies bottlenecks during simulation Accuracy
Queue Monitoring Tracks queue length at each station Reliability
Utilization Tracking Calculates station utilization continuously Accuracy
Threshold-based Alerts Flags when queue exceeds acceptable limits Usability

State Transitions: Wagon Processing

stateDiagram-v2
    [*] --> Arrived: Train arrival
    Arrived --> Queued: No station available
    Arrived --> InRetrofit: Station available
    Queued --> InRetrofit: Station becomes available
    InRetrofit --> Completed: Retrofit finished
    Completed --> [*]

    note right of Queued
        Analysis Engine tracks
        queue length here
    end note

    note right of InRetrofit
        Analysis Engine calculates
        utilization here
    end note

Note: This needs to be updated since it does not reflect the process correctly.

Performance Characteristics

Note: Performance metrics will be measured during MVP implementation. Actual timing depends on hardware and simulation complexity.


6.3 Runtime Scenario: Import Infrastructure Data (US-003)

Use Case: US-003 - Company Planner imports existing infrastructure data

Goal: Import track topology and workshop layout from existing railway infrastructure data

Scenario Description

Company planner has existing infrastructure data (track layouts, station locations) in CSV format and wants to import it into PopUpSim for capacity assessment.

Runtime Interaction

sequenceDiagram
    participant Planner as Company Planner
    participant CLI as CLI
    participant Config as Configuration Context
    participant Parser as CSV Parser
    participant Validator as Pydantic Validator
    participant Files as File System

    Planner->>Files: Prepare infrastructure_topology.csv
    Note over Files: Contains: track_id, length, connections
    Planner->>Files: Prepare workshop_layout.csv
    Note over Files: Contains: station_id, location, capacity

    Planner->>CLI: python main.py --import-infra infrastructure_topology.csv workshop_layout.csv
    CLI->>Config: import_infrastructure()

    Config->>Files: Read infrastructure_topology.csv
    Files-->>Config: CSV data (tracks)
    Config->>Parser: Parse track data
    Parser->>Parser: Convert to Track objects
    Parser-->>Config: Parsed tracks

    Config->>Files: Read workshop_layout.csv
    Files-->>Config: CSV data (workshops)
    Config->>Parser: Parse workshop data
    Parser->>Parser: Convert to Workshop objects
    Parser-->>Config: Parsed workshops

    Config->>Validator: Validate infrastructure consistency
    Validator->>Validator: Check track connections valid
    Validator->>Validator: Check workshop locations on tracks
    Validator->>Validator: Check capacity constraints

    alt Validation successful
        Validator-->>Config: Infrastructure valid
        Config->>Files: Write validated_scenario.json
        Config-->>CLI: Import successful
        CLI-->>Planner: Infrastructure imported, ready for simulation
    else Validation failed
        Validator--xConfig: ValidationError: Invalid track connections
        Config-->>CLI: Import failed with errors
        CLI-->>Planner: Error summary + data issues
    end

Key Runtime Aspects

Aspect Description Quality Goal
CSV Parsing Flexible parsing of company-specific CSV formats Usability
Data Validation Validates infrastructure consistency (track connections, locations) Reliability
Error Reporting Clear feedback on data quality issues Usability
JSON Export Converts imported data to PopUpSim format Accessibility

Data Validation Checks

Infrastructure Consistency: - Track connections form valid network (no orphaned tracks) - Workshop locations reference existing tracks - Station capacities are positive integers - Track lengths are positive values

Business Rules: - At least one workshop station defined - Track network is connected (no isolated segments) - Workshop locations don't overlap

Performance Characteristics

Note: Import performance depends on infrastructure size. Will be measured during MVP implementation.


6.4 Runtime Scenario: Assess Planned Workshop Capacity (US-004)

Use Case: US-004 - Company Planner assesses capacity for planned workshop

Goal: Evaluate if planned workshop layout meets company's retrofit capacity requirements

Scenario Description

Company planner has imported infrastructure data (US-003) and now runs simulation with company-specific wagon schedules to assess if planned workshop meets capacity targets.

Runtime Interaction

sequenceDiagram
    participant Planner as Company Planner
    participant CLI as CLI
    participant Config as Configuration Context
    participant Railway as Railway Infrastructure Context
    participant External as External Trains Context
    participant Retrofit as Retrofit Workflow Context
    participant Metrics as Metrics Collection
    participant Files as File System

    Note over Planner: Has imported infrastructure (US-003)

    Planner->>Files: Create company_wagon_schedule.csv
    Note over Files: Company-specific arrival patterns
    Planner->>Files: Update validated_scenario.json
    Note over Files: Add capacity target: 500 wagons/week

    Planner->>CLI: python main.py --config validated_scenario.json --schedule company_wagon_schedule.csv
    CLI->>Config: load_configuration()
    Config->>Files: Read validated_scenario.json
    Config->>Files: Read company_wagon_schedule.csv
    Config-->>CLI: Configuration with capacity target

    CLI->>Railway: build_tracks(scenario)
    Railway->>Railway: Create imported infrastructure
    Railway-->>CLI: Track infrastructure ready

    CLI->>External: initialize_trains(scenario)
    External->>External: Load company wagon schedule
    External-->>CLI: Train arrivals scheduled

    CLI->>Retrofit: initialize(scenario, railway, external)
    Retrofit-->>CLI: Workflow ready

    CLI->>Retrofit: run_simulation(168h)
    Note over Retrofit: 1 week simulation

    loop Every hour (168 hours)
        External->>Retrofit: Process scheduled arrivals
        Retrofit->>Retrofit: Wagon processing
        Retrofit->>Metrics: Record wagon events
        Metrics->>Metrics: Track throughput
    end

    Retrofit->>Metrics: Get capacity
    Metrics->>Metrics: Calculate: actual vs target

    alt Capacity target met
        Metrics-->>Retrofit: Throughput: 520 wagons (target: 500)
        Retrofit->>Files: Write capacity_assessment_PASS.csv
        Retrofit->>Files: Write capacity_chart.png
        Retrofit-->>CLI: Capacity target achieved
        CLI-->>Planner: Workshop layout sufficient
    else Capacity target not met
        Metrics-->>Retrofit: Throughput: 450 wagons (target: 500)
        Retrofit->>Files: Write capacity_assessment_FAIL.csv
        Retrofit->>Files: Write bottleneck_analysis.png
        Retrofit-->>CLI: Capacity target missed
        CLI-->>Planner: Workshop needs optimization
        Planner->>Planner: Review bottlenecks, adjust layout
    end

Key Runtime Aspects

Aspect Description Quality Goal
Company-Specific Schedules Uses actual wagon arrival patterns from company data Accuracy
Capacity Target Comparison Compares simulation results against company requirements Reliability
Pass/Fail Assessment Clear indication if workshop meets capacity needs Usability
Bottleneck Identification Identifies specific constraints when target not met Accuracy

Capacity Assessment Logic

stateDiagram-v2
    [*] --> RunSimulation: Load config + schedule
    RunSimulation --> CalculateCapacity: Simulation complete
    CalculateCapacity --> CompareTarget: Throughput calculated

    CompareTarget --> CapacityMet: Actual >= Target
    CompareTarget --> CapacityMissed: Actual < Target

    CapacityMet --> GenerateReport: PASS
    CapacityMissed --> AnalyzeBottlenecks: FAIL
    AnalyzeBottlenecks --> GenerateReport: With recommendations

    GenerateReport --> [*]

    note right of CompareTarget
        Target from company requirements
        Actual from simulation results
    end note

    note right of AnalyzeBottlenecks
        Identify limiting factors:
        - Station capacity
        - Track congestion
        - Resource availability
    end note

Performance Characteristics

Note: Performance will be measured during MVP implementation.


6.5 Error Scenarios

6.5.1 Invalid Configuration

Trigger: User provides configuration with multiple validation errors

sequenceDiagram
    participant User
    participant CLI
    participant Config as Configuration Context
    participant Validator as Pydantic Validator
    participant Files as File System

    User->>CLI: python main.py --config invalid.json
    CLI->>Config: load_configuration()
    Config->>Files: Read invalid.json
    Files-->>Config: JSON data

    Config->>Validator: Validate all fields
    Validator->>Validator: Collect all validation errors
    Note over Validator: Does NOT stop at first error
    Validator->>Validator: Check station_count <= 0
    Validator->>Validator: Check workers_per_station > 10
    Validator->>Validator: Check retrofit_time < 0
    Validator-->>Config: ValidationError with 3 errors

    Config->>Config: Format error summary
    Config--xCLI: ValidationError with error list

    CLI->>CLI: Print validation summary:
    Note over CLI: Configuration validation failed (3 errors):<br/>1. station_count must be > 0 (got: -1)<br/>2. workers_per_station must be <= 10 (got: 15)<br/>3. retrofit_time must be > 0 (got: -5)

    CLI-->>User: Complete error summary + example config
    Note over User: User fixes all errors at once

Key Behavior: - Pydantic collects ALL validation errors before reporting - User sees complete list of issues in one summary - Enables fixing all problems in single iteration

Recovery: User corrects all configuration errors based on comprehensive error summary

6.5.2 Simulation Failure

Trigger: Unexpected error during simulation execution

sequenceDiagram
    participant CLI
    participant Control as Analysis & Reporting Context
    participant Domain as Workshop Operations Context
    participant Files as File System

    CLI->>Control: run_simulation()
    Control->>Domain: Start SimPy
    Domain->>Domain: Processing...
    Domain--xControl: SimulationError: Resource conflict
    Control->>Control: Catch exception
    Control->>Files: Write partial_results.csv
    Control->>Files: Write error_log.json
    Control-->>CLI: Simulation failed (partial results saved)
    CLI-->>CLI: Log error details

Recovery: Partial results saved for debugging, user can adjust configuration

6.6 Performance Considerations

Note: Performance requirements and actual measurements will be determined during MVP implementation. The following aspects will be evaluated:

Performance Aspects to Measure

Aspect Measurement Goal Rationale
Configuration Loading Time to load and validate JSON/CSV files Affects user experience for iterative testing
Domain Setup Time to create simulation entities Impacts startup time
Simulation Execution Time to run 24h simulation with varying wagon counts Core performance metric
Output Generation Time to create CSV files and charts Affects result availability

Scalability Testing Plan

Test scenarios to evaluate: - Small workshop (one Workshop with two retrofit stations, low wagon volume) - Standard workshop (two workshops with three retrofit stations, medium wagon volume) - High-load scenario (four workshops with three, high wagon volume)

Success criteria: - Simulation completes without errors - Results are accurate and reproducible - User experience is acceptable for iterative testing (see Quality Goal 1: Rapid development)