feat: add TalibPatternPanel, TrainingPanel, ModelSelector UI components (tasks 5-8)

- TalibPatternPanel: pattern checkboxes, detect button, results summary, clear-all and per-pattern delete
- TrainingPanel: model type selector, dataset info, start training, polling, run history
- ModelSelector: dropdown of completed runs, wired into PredictionPanel for model switching
- page.tsx: integrate all three panels into sidebar, wire callbacks (model load, annotations refresh)
- tasks.md: mark all 39 tasks complete
This commit is contained in:
Marko Djordjevic 2026-02-17 18:55:52 +01:00
parent 2a02669222
commit 12a9603fce
7 changed files with 849 additions and 23 deletions

View file

@ -29,34 +29,34 @@
## 5. TA-Lib Pattern UI Panel
- [ ] 5.1 Create `TalibPatternPanel` component with collapsible section, fetching available patterns from `/api/patterns/available` on mount
- [ ] 5.2 Add pattern checkboxes grouped by category with "Select All" / "Deselect All" toggle
- [ ] 5.3 Add "Detect Patterns" button that sends selected patterns + chart candles to `/api/patterns/detect`, shows loading state
- [ ] 5.4 Save detection results as span annotations via `POST /api/span-annotations` with `source: "talib"` and refresh the annotation list
- [ ] 5.5 Add detection results summary showing pattern counts grouped by name
- [ ] 5.6 Add "Clear All TA-Lib" bulk delete button calling `DELETE /api/span-annotations?source=talib&chartId=X`
- [ ] 5.7 Add per-pattern-type delete in results summary
- [x] 5.1 Create `TalibPatternPanel` component with collapsible section, fetching available patterns from `/api/patterns/available` on mount
- [x] 5.2 Add pattern checkboxes grouped by category with "Select All" / "Deselect All" toggle
- [x] 5.3 Add "Detect Patterns" button that sends selected patterns + chart candles to `/api/patterns/detect`, shows loading state
- [x] 5.4 Save detection results as span annotations via `POST /api/span-annotations` with `source: "talib"` and refresh the annotation list
- [x] 5.5 Add detection results summary showing pattern counts grouped by name
- [x] 5.6 Add "Clear All TA-Lib" bulk delete button calling `DELETE /api/span-annotations?source=talib&chartId=X`
- [x] 5.7 Add per-pattern-type delete in results summary
## 6. Training UI Panel
- [ ] 6.1 Create `TrainingPanel` component with collapsible section
- [ ] 6.2 Add model type dropdown (Random Forest / XGBoost) defaulting to Random Forest
- [ ] 6.3 Add dataset info display fetching from `/api/training/dataset-info`, showing warning if missing
- [ ] 6.4 Add "Start Training" button with loading state, disabled when training active or dataset missing
- [ ] 6.5 Add training status polling (5s interval) while a run is active, showing progress indicator
- [ ] 6.6 Add training completion/failure handling with success message and metrics display
- [ ] 6.7 Add training run history list fetching from `/api/training/runs`, showing 5 most recent runs with model type, status, date, metrics
- [x] 6.1 Create `TrainingPanel` component with collapsible section
- [x] 6.2 Add model type dropdown (Random Forest / XGBoost) defaulting to Random Forest
- [x] 6.3 Add dataset info display fetching from `/api/training/dataset-info`, showing warning if missing
- [x] 6.4 Add "Start Training" button with loading state, disabled when training active or dataset missing
- [x] 6.5 Add training status polling (5s interval) while a run is active, showing progress indicator
- [x] 6.6 Add training completion/failure handling with success message and metrics display
- [x] 6.7 Add training run history list fetching from `/api/training/runs`, showing 5 most recent runs with model type, status, date, metrics
## 7. Model Selector Integration
- [ ] 7.1 Create `ModelSelector` dropdown component fetching completed training runs from `/api/training/runs`
- [ ] 7.2 Integrate `ModelSelector` into `PredictionPanel` above action buttons, showing current model as active
- [ ] 7.3 Wire model switch: on selection call `POST /api/model/load`, clear prediction cache, refresh model info
- [ ] 7.4 Handle model load errors: show error toast, keep previous model active
- [x] 7.1 Create `ModelSelector` dropdown component fetching completed training runs from `/api/training/runs`
- [x] 7.2 Integrate `ModelSelector` into `PredictionPanel` above action buttons, showing current model as active
- [x] 7.3 Wire model switch: on selection call `POST /api/model/load`, clear prediction cache, refresh model info
- [x] 7.4 Handle model load errors: show error toast, keep previous model active
## 8. Sidebar Layout Integration
- [ ] 8.1 Add `TalibPatternPanel` to the sidebar in `page.tsx` between SpanAnnotationList and PredictionPanel
- [ ] 8.2 Add `TrainingPanel` to the sidebar between TalibPatternPanel and PredictionPanel
- [ ] 8.3 Make TalibPatternPanel, TrainingPanel, and PredictionPanel collapsible (default collapsed for new panels)
- [ ] 8.4 Wire all new component state and callbacks in `page.tsx`
- [x] 8.1 Add `TalibPatternPanel` to the sidebar in `page.tsx` between SpanAnnotationList and PredictionPanel
- [x] 8.2 Add `TrainingPanel` to the sidebar between TalibPatternPanel and PredictionPanel
- [x] 8.3 Make TalibPatternPanel, TrainingPanel, and PredictionPanel collapsible (default collapsed for new panels)
- [x] 8.4 Wire all new component state and callbacks in `page.tsx`