candle-annotator/openspec/changes/archive/2026-02-18-ml-ui-connection/specs/training-ui/spec.md
2026-02-18 10:21:05 +01:00

3.4 KiB

ADDED Requirements

Requirement: Training panel

The system SHALL display a collapsible "Training" panel in the sidebar. The panel SHALL contain model type selection, a "Start Training" button, and training run history. The panel SHALL be usable independently of the prediction panel.

Scenario: Display training panel

  • WHEN the user expands the Training panel
  • THEN the panel shows model type selector, training action button, and recent training history

Requirement: Model type selection

The system SHALL provide a dropdown to select the ML model type for training. Available options SHALL be "Random Forest" and "XGBoost". The selection SHALL default to "Random Forest".

Scenario: Select model type

  • WHEN the user opens the model type dropdown
  • THEN "Random Forest" and "XGBoost" are listed as options

Scenario: Default selection

  • WHEN the training panel loads
  • THEN "Random Forest" is pre-selected

Requirement: Training execution

The system SHALL trigger a training run via POST /api/training/start when the user clicks "Start Training". The request SHALL include the selected model type. The system SHALL show a progress indicator and poll for status updates every 5 seconds while training is active. The "Start Training" button SHALL be disabled while a training run is in progress.

Scenario: Start training

  • WHEN the user selects "XGBoost" and clicks "Start Training"
  • THEN the system sends POST /api/training/start with {model_type: "xgboost"}, disables the button, and shows a "Training in progress..." indicator

Scenario: Training completes

  • WHEN a training run status changes from "running" to "completed"
  • THEN the system shows a success message with key metrics (accuracy, F1 score), re-enables the button, and adds the run to training history

Scenario: Training fails

  • WHEN a training run status changes to "failed"
  • THEN the system shows an error message with the failure reason and re-enables the button

Scenario: Prevent concurrent training

  • WHEN a training run is already in progress and the user tries to start another
  • THEN the "Start Training" button remains disabled

Requirement: Training run history

The system SHALL display a list of recent training runs fetched from GET /api/training/runs. Each entry SHALL show: model type, status, date, and key metrics (accuracy, F1 macro). The list SHALL be sorted by date descending (most recent first). The list SHALL show the 5 most recent runs.

Scenario: Display training history

  • WHEN the training panel loads
  • THEN the system fetches training runs and displays them with model type, status badge, date, and metrics

Scenario: No training runs

  • WHEN no training runs exist
  • THEN the panel shows "No training runs yet"

Requirement: Dataset info display

The system SHALL display information about the training dataset before training starts. This SHALL include the dataset file path and whether it exists. The user SHALL be informed that training uses the exported annotation dataset.

Scenario: Dataset available

  • WHEN the training panel loads and the labeled dataset exists
  • THEN the panel shows the dataset path and a ready indicator

Scenario: Dataset missing

  • WHEN the training panel loads and no labeled dataset exists
  • THEN the panel shows a warning "No training dataset found. Export annotations first." and the "Start Training" button is disabled