+ {/* Header */}
+
+
+
+ Check New Market Events
+
+ Scans news · FRED · MA crossovers · rapports institutionnels
+
+
+
+
+
+
+ {/* Config panel */}
+ {showConfig && (
+
+ )}
+
+ {/* Error */}
+ {error && (
+
+ )}
+
+ {/* Result summary */}
+ {result && (
+
+ {/* Summary bar */}
+
setExpanded(x => !x)}
+ >
+
+
+ {result.total_created} événement{result.total_created !== 1 ? 's' : ''} créé{result.total_created !== 1 ? 's' : ''}
+
+
+ {(['news', 'eco', 'technical', 'reports'] as const).map(src => {
+ const count = result.detail[src]?.length ?? 0
+ return count > 0 ? (
+ {SOURCE_LABELS[src]}: {count}
+ ) : null
+ })}
+
+
{result.duration_s}s
+ {expanded ?
:
}
+
+
+ {/* Event list */}
+ {expanded && allEvents.length > 0 && (
+
+ {allEvents.map((ev, i) => (
+
+ {ev.date}
+
+ {ev.category?.replace('_', ' ')}
+
+ {ev.name}
+ {SOURCE_LABELS[ev.source] ?? ev.source}
+
+ ))}
+
+ )}
+
+ {expanded && allEvents.length === 0 && (
+
+ Aucun nouvel événement — tout était déjà enregistré ou sous le seuil.
+
+ )}
+
+ )}
+
+ )
+}
+
+// ── Planned action card ───────────────────────────────────────────────────────
+
+function PlannedActionCard({ action }: { action: ActionDef }) {
+ return (
+