fix: recalculate regime after LLM refresh
This commit is contained in:
@@ -120,8 +120,9 @@ async def refresh_regime_fundamentals(
|
||||
_admin: User = Depends(require_admin),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
) -> APIEnvelope:
|
||||
"""Ask the configured LLM to re-estimate F1/F3 now (forces past a lock)."""
|
||||
"""Refresh F1/F3 via LLM, then recompute the latest eligible snapshot."""
|
||||
data = await regime_monitor_service.refresh_fundamental_overrides(db, force=True)
|
||||
await regime_monitor_service.update_regime_monitor(db)
|
||||
return APIEnvelope(status="success", data=data)
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import pytest
|
||||
from sqlalchemy import select
|
||||
|
||||
from app.models.regime_snapshot import RegimeSnapshot
|
||||
from app.routers import market as market_router
|
||||
from app.services import regime_monitor_service as rms
|
||||
from app.services.regime_monitor_service import (
|
||||
DEFAULT_CONFIG,
|
||||
@@ -222,6 +223,39 @@ async def test_routine_can_refresh_latest_trading_session_after_civil_day_rolls(
|
||||
assert rewrites == [True]
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_manual_llm_refresh_recomputes_latest_regime_snapshot(monkeypatch):
|
||||
calls: list[str] = []
|
||||
refreshed = {"f1_score": 0.0, "f3_score": 100.0}
|
||||
|
||||
async def fake_refresh(_db, force):
|
||||
assert force is True
|
||||
calls.append("refresh")
|
||||
return refreshed
|
||||
|
||||
async def fake_recompute(_db):
|
||||
calls.append("recompute")
|
||||
return {"available": True}
|
||||
|
||||
monkeypatch.setattr(
|
||||
market_router.regime_monitor_service,
|
||||
"refresh_fundamental_overrides",
|
||||
fake_refresh,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
market_router.regime_monitor_service,
|
||||
"update_regime_monitor",
|
||||
fake_recompute,
|
||||
)
|
||||
|
||||
response = await market_router.refresh_regime_fundamentals(
|
||||
_admin=object(), db=object()
|
||||
)
|
||||
|
||||
assert calls == ["refresh", "recompute"]
|
||||
assert response.data == refreshed
|
||||
|
||||
|
||||
def test_compute_index_uses_one_max_price_vote_and_has_no_combined_score():
|
||||
end = date(2026, 6, 26)
|
||||
rising = [100.0 + index * 0.2 for index in range(700)]
|
||||
|
||||
Reference in New Issue
Block a user