feat: causal lab
This commit is contained in:
@@ -673,6 +673,43 @@ def ff_purge_fxstreet() -> Dict[str, Any]:
|
||||
conn.close()
|
||||
|
||||
|
||||
@router.post("/guidance-sync")
|
||||
def guidance_sync_endpoint() -> Dict[str, Any]:
|
||||
"""
|
||||
Déclenche manuellement la synchronisation des guidance events (MACRO_RATE_GUIDANCE).
|
||||
Crée/met à jour un market_event de type guidance pour chaque decision de taux à venir
|
||||
détectée dans ff_calendar. Appelé automatiquement après chaque calendar-sync.
|
||||
"""
|
||||
try:
|
||||
from services.guidance_sync import sync_guidance
|
||||
result = sync_guidance()
|
||||
return {"status": "ok", **result}
|
||||
except Exception as e:
|
||||
import traceback
|
||||
return {"status": "error", "error": str(e), "trace": traceback.format_exc()}
|
||||
|
||||
|
||||
@router.get("/guidance-sync/status")
|
||||
def guidance_sync_status() -> Dict[str, Any]:
|
||||
"""Liste les guidance market_events actuellement en DB."""
|
||||
from services.database import get_conn
|
||||
conn = get_conn()
|
||||
try:
|
||||
rows = conn.execute("""
|
||||
SELECT me.id, me.name, me.start_date, me.end_date,
|
||||
me.expected_value, me.sub_type,
|
||||
COUNT(cea.id) as n_analyses
|
||||
FROM market_events me
|
||||
LEFT JOIN causal_event_analyses cea ON cea.market_event_id = me.id
|
||||
WHERE me.origin = 'guidance_sync'
|
||||
GROUP BY me.id
|
||||
ORDER BY me.end_date ASC
|
||||
""").fetchall()
|
||||
return {"count": len(rows), "events": [dict(r) for r in rows]}
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
@router.get("/ff-stats")
|
||||
def ff_stats() -> Dict[str, Any]:
|
||||
"""Quick inventory of ff_calendar table."""
|
||||
|
||||
Reference in New Issue
Block a user