feat: add ML service scaffolding with Python FastAPI, Docker, and MLflow setup
This commit is contained in:
parent
92abab5316
commit
1a653c5866
18 changed files with 1952 additions and 2593 deletions
38
openspec/changes/candle-backend/specs/backend-api/spec.md
Normal file
38
openspec/changes/candle-backend/specs/backend-api/spec.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
## ADDED Requirements
|
||||
|
||||
### Requirement: Predict proxy endpoint
|
||||
The system SHALL provide a `POST /api/predict` Next.js API route that proxies requests to the Python inference service at `${INFERENCE_API_URL}/predict`. The route SHALL forward the request body (pair, timeframe, candles array) and return the Python service's response. If the inference service is unreachable, the route SHALL return HTTP 503 with `{ "error": "Inference service unavailable" }`.
|
||||
|
||||
#### Scenario: Successful prediction proxy
|
||||
- **WHEN** POST /api/predict is called with valid candle data and the Python service is running
|
||||
- **THEN** the route forwards the request to the inference service and returns the prediction response with HTTP 200
|
||||
|
||||
#### Scenario: Inference service down
|
||||
- **WHEN** POST /api/predict is called but the Python inference service is unreachable
|
||||
- **THEN** the route returns HTTP 503 with `{ "error": "Inference service unavailable" }`
|
||||
|
||||
#### Scenario: Inference service error
|
||||
- **WHEN** the Python inference service returns an error status (4xx or 5xx)
|
||||
- **THEN** the route forwards the error status and message to the client
|
||||
|
||||
### Requirement: Batch predict proxy endpoint
|
||||
The system SHALL provide a `POST /api/predict/batch` Next.js API route that proxies batch prediction requests to `${INFERENCE_API_URL}/predict/batch`. The route SHALL forward pair, timeframe, start_date, and end_date.
|
||||
|
||||
#### Scenario: Successful batch prediction
|
||||
- **WHEN** POST /api/predict/batch is called with valid parameters
|
||||
- **THEN** the route forwards to the inference service and returns the batch prediction response
|
||||
|
||||
#### Scenario: Timeout on large batch
|
||||
- **WHEN** the batch prediction takes longer than INFERENCE_BATCH_TIMEOUT
|
||||
- **THEN** the route returns HTTP 504 with `{ "error": "Batch prediction timed out" }`
|
||||
|
||||
### Requirement: Model info proxy endpoint
|
||||
The system SHALL provide a `GET /api/model/info` Next.js API route that proxies to `${INFERENCE_API_URL}/model/info`. This endpoint returns model metadata and per-class metrics.
|
||||
|
||||
#### Scenario: Successful model info
|
||||
- **WHEN** GET /api/model/info is called and the inference service is running
|
||||
- **THEN** the route returns the model metadata JSON
|
||||
|
||||
#### Scenario: No model available
|
||||
- **WHEN** GET /api/model/info is called and the inference service returns 503
|
||||
- **THEN** the route returns HTTP 503 with `{ "error": "No model available" }`
|
||||
Loading…
Add table
Add a link
Reference in a new issue