feat: origin tracing on all market_events

- DB: colonne origin (migration + UPDATE heuristique sur données legacy)
- save/update_market_event: persist origin
- Tous les points de création taguent leur origine:
    bootstrap_macro/eco/ma/legacy | detector_news/eco/technical/report | manual
- UI MarketEvents: badge d'origine avec icône + description dans le panneau détail,
  icône tooltip dans la liste gauche, message explicite si pas de source_refs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OpenSquared
2026-06-25 20:58:05 +02:00
parent d5da4737ef
commit bd28b6a73a
8 changed files with 78 additions and 16 deletions

View File

@@ -139,6 +139,7 @@ def create_event(body: EventCreate) -> Dict[str, Any]:
from services.database import save_market_event
data = body.dict()
data["source_refs"] = [r.dict() for r in body.source_refs]
data.setdefault("origin", "manual")
new_id = save_market_event(data)
return {"id": new_id, "status": "created"}

View File

@@ -43,7 +43,9 @@ def list_events() -> List[Dict[str, Any]]:
@router.post("/events")
def create_event(body: EventCreate) -> Dict[str, Any]:
from services.database import save_market_event
new_id = save_market_event(body.dict())
data = body.dict()
data.setdefault("origin", "manual")
new_id = save_market_event(data)
return {"id": new_id, "status": "created"}