4.3 KiB
4.3 KiB
1. FastAPI Pattern Detection Endpoints
- 1.1 Extract pattern detection logic from
generate_talib_annotations.pyinto a reusable module (e.g.,app/patterns.py) withdetect_patterns(candles, pattern_names)function - 1.2 Add
GET /patterns/availableendpoint returning all supported CDL pattern names with display names - 1.3 Add
POST /patterns/detectendpoint accepting{candles, patterns}, running selected CDL functions, returning span annotations with source "talib" - 1.4 Add input validation: reject invalid pattern names with HTTP 400, handle empty patterns list as "run all"
2. FastAPI Training Endpoints
- 2.1 Add
POST /training/startendpoint that launches training in a background thread, returns{run_id, status: "running"}, and rejects concurrent runs with HTTP 409 - 2.2 Add
GET /training/runsendpoint returning training run history from thetraining_runstable, sorted by date descending - 2.3 Add
GET /training/dataset-infoendpoint returning labeled dataset file path, existence, size, and row count - 2.4 Add background training thread management: track active run, update DB status on completion/failure
3. FastAPI Model Loading Endpoint
- 3.1 Add
POST /model/loadendpoint accepting{run_id}, looking up the training run, loading the model artifact, and replacing the active model inAppState - 3.2 Add thread-safe model swap with locking to prevent conflicts with in-flight prediction requests
4. Next.js Proxy Routes
- 4.1 Add
GET /api/patterns/availableproxy route - 4.2 Add
POST /api/patterns/detectproxy route - 4.3 Add
POST /api/training/startproxy route - 4.4 Add
GET /api/training/runsproxy route - 4.5 Add
GET /api/training/dataset-infoproxy route - 4.6 Add
POST /api/model/loadproxy route - 4.7 Extend
DELETE /api/span-annotationsto supportsourceandlabelquery parameters for bulk deletion
5. TA-Lib Pattern UI Panel
- 5.1 Create
TalibPatternPanelcomponent with collapsible section, fetching available patterns from/api/patterns/availableon 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-annotationswithsource: "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
6. Training UI Panel
- 6.1 Create
TrainingPanelcomponent 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
7. Model Selector Integration
- 7.1 Create
ModelSelectordropdown component fetching completed training runs from/api/training/runs - 7.2 Integrate
ModelSelectorintoPredictionPanelabove 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
8. Sidebar Layout Integration
- 8.1 Add
TalibPatternPanelto the sidebar inpage.tsxbetween SpanAnnotationList and PredictionPanel - 8.2 Add
TrainingPanelto 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