mirror of
https://github.com/Xe138/AI-Trader.git
synced 2026-04-13 13:47:23 -04:00
fix: use config models when empty models list provided
When the trigger simulation API receives an empty models list ([]), it now correctly falls back to enabled models from config instead of running with no models. Changes: - Update condition to check for both None and empty list - Add test case for empty models list behavior - Update API documentation to clarify this behavior All 28 integration tests pass.
This commit is contained in:
@@ -36,7 +36,7 @@ Trigger a new simulation job for a specified date range and models.
|
|||||||
|-------|------|----------|-------------|
|
|-------|------|----------|-------------|
|
||||||
| `start_date` | string \| null | No | Start date in YYYY-MM-DD format. If `null`, enables resume mode (each model continues from its last completed date). Defaults to `null`. |
|
| `start_date` | string \| null | No | Start date in YYYY-MM-DD format. If `null`, enables resume mode (each model continues from its last completed date). Defaults to `null`. |
|
||||||
| `end_date` | string | **Yes** | End date in YYYY-MM-DD format. **Required** - cannot be null or empty. |
|
| `end_date` | string | **Yes** | End date in YYYY-MM-DD format. **Required** - cannot be null or empty. |
|
||||||
| `models` | array[string] | No | Model signatures to run. If omitted, uses all enabled models from server config. |
|
| `models` | array[string] | No | Model signatures to run. If omitted or empty array, uses all enabled models from server config. |
|
||||||
| `replace_existing` | boolean | No | If `false` (default), skips already-completed model-days (idempotent). If `true`, re-runs all dates even if previously completed. |
|
| `replace_existing` | boolean | No | If `false` (default), skips already-completed model-days (idempotent). If `true`, re-runs all dates even if previously completed. |
|
||||||
|
|
||||||
**Response (200 OK):**
|
**Response (200 OK):**
|
||||||
|
|||||||
@@ -176,11 +176,11 @@ def create_app(
|
|||||||
with open(config_path, 'r') as f:
|
with open(config_path, 'r') as f:
|
||||||
config = json.load(f)
|
config = json.load(f)
|
||||||
|
|
||||||
if request.models is not None:
|
if request.models is not None and len(request.models) > 0:
|
||||||
# Use models from request (explicit override)
|
# Use models from request (explicit override)
|
||||||
models_to_run = request.models
|
models_to_run = request.models
|
||||||
else:
|
else:
|
||||||
# Use enabled models from config
|
# Use enabled models from config (when models is None or empty list)
|
||||||
models_to_run = [
|
models_to_run = [
|
||||||
model["signature"]
|
model["signature"]
|
||||||
for model in config.get("models", [])
|
for model in config.get("models", [])
|
||||||
|
|||||||
@@ -119,6 +119,18 @@ class TestSimulateTriggerEndpoint:
|
|||||||
data = response.json()
|
data = response.json()
|
||||||
assert data["total_model_days"] >= 1
|
assert data["total_model_days"] >= 1
|
||||||
|
|
||||||
|
def test_trigger_empty_models_uses_config(self, api_client):
|
||||||
|
"""Should use enabled models from config when models is empty list."""
|
||||||
|
response = api_client.post("/simulate/trigger", json={
|
||||||
|
"start_date": "2025-01-16",
|
||||||
|
"end_date": "2025-01-16",
|
||||||
|
"models": [] # Empty list - should use enabled models from config
|
||||||
|
})
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
data = response.json()
|
||||||
|
assert data["total_model_days"] >= 1
|
||||||
|
|
||||||
def test_trigger_enforces_single_job_limit(self, api_client):
|
def test_trigger_enforces_single_job_limit(self, api_client):
|
||||||
"""Should reject trigger when job already running."""
|
"""Should reject trigger when job already running."""
|
||||||
# Create first job
|
# Create first job
|
||||||
|
|||||||
Reference in New Issue
Block a user