Previously: heuristic text matching (sub_type in category.name) — failed
for semantic cases like 'Iran Ceasefire Talks' → 'Guerre — Moyen-Orient'.
Now: all EventCategories are sent in the prompt (name + type + description).
The AI picks matched_category by semantic understanding, returns it in JSON.
- Validates returned name against known categories (case-insensitive)
- Auto-sets event sub_type when AI finds a match and sub_type was empty
- Returns matched_category in evaluate response + shown in UI eval message
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Backend: add evaluated subquery column to list SELECT so each event
returns evaluated=1/0 (was missing, causing all events to appear
as unevaluated regardless of filter)
- Frontend: AbortController cancels the previous in-flight fetch when
a new load fires, preventing stale results from overwriting current
filter state
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Always-visible 'Catégorie IA' block in EventDetail (view + edit mode)
- Dropdown lists all EventCategories; selecting one instantly saves sub_type
and updates category type via PUT (no need to enter full edit mode)
- Shows matched category description + default impacts preview (ticker chips
with direction arrows and sensitivity %)
- Edit mode: category dropdown also auto-sets the category type field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- MarketEvents: date presets (7j/30j/3m/6m/1an/Tout/Perso), instrument
impact filter (ticker + min score + direction → auto-sort by inst score),
sort controls (date/score/nom + asc/desc), clear-all button, count bar
- Market events list endpoint: full SQL JOIN rewrite supporting instrument
filter, date range, origin, sort_by=instrument_score
- Disable auto-bootstrap on startup (macro/eco/categories) — manual only
- CycleActions: bootstrap group (Macro/Eco/Categories) with force checkbox,
grouped layout (detection / bootstrap / data / ai / portfolio)
- cycle_actions router: /bootstrap-macro, /bootstrap-eco, /bootstrap-categories
endpoints + group field on all action catalogue entries
- InstrumentChart: greedy row placement for star labels (4 rows × 20px)
to eliminate horizontal overlap; labels now inline (★ + text)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>