debug: add db_state display + raw pred_json, expand YFINANCE_MAP

YFINANCE_MAP now includes GBPUSD, USDJPY, USDCHF, AUDUSD, NZDUSD, USDCAD, XAGUSD, NASDAQ, DAX, FTSE, WTI, US30Y, DXY.
Frontend diagnostic panel shows db_state rows after Recalculer and raw prediction_json prefix per event.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OpenSquared
2026-06-29 23:31:15 +02:00
parent 05236c31f3
commit b33d06cb97
2 changed files with 29 additions and 1 deletions

View File

@@ -1031,7 +1031,7 @@ function ExplanationScore({
// For each linked event, compute the comprehension score and collect scored ones
const scored: number[] = []
const totalLinked: number[] = []
const debugRows: {id?: number; name: string; pred: string; actual: string; score: number | null; reason: string; surprisePct?: number | null}[] = []
const debugRows: {id?: number; name: string; pred: string; actual: string; score: number | null; reason: string; surprisePct?: number | null; rawPred?: string}[] = []
for (const ev of events) {
if (!ev.template_id) continue
@@ -1066,6 +1066,7 @@ function ExplanationScore({
actual: hasActual ? '✓' : '✗',
score: null, reason,
surprisePct: ev.surprise_pct ?? null,
rawPred: (ev.prediction_json ?? 'null').slice(0, 30),
})
const s = comprehensionScore(ev, tmpl, inst)
@@ -1146,6 +1147,7 @@ function ExplanationScore({
? <span className="text-cyan-600 shrink-0">{r.surprisePct > 0 ? '+' : ''}{r.surprisePct.toFixed(1)}%</span>
: <span className="text-red-800 shrink-0">surp?</span>}
{r.score != null && <span className="text-violet-400 shrink-0">{r.score}%</span>}
<span className="text-slate-700 shrink-0 ml-1" title="raw prediction_json">{r.rawPred}</span>
</div>
))}
{debugInfo && (
@@ -1167,6 +1169,19 @@ function ExplanationScore({
</div>
</div>
))}
{/* DB state: show rows not in refresh (non-empty pred/actual but still 'vide' in snapshot) */}
{debugInfo.db_state?.length > 0 && (
<div className="mt-2 pt-1 border-t border-slate-800/40">
<div className="text-slate-600 mb-0.5">DB state ({debugInfo.db_state.length} analyses)</div>
{debugInfo.db_state.map((r: any, i: number) => (
<div key={i} className="text-slate-700">
#{r.event_id} {(r.event_name ?? '').slice(0, 18)}
<span className={r.pred_empty ? 'text-red-800' : 'text-emerald-800'}> pred:{r.pred_empty ? '∅' : `[${(r.pred_keys ?? []).join(',')}]`}</span>
<span className={r.actual_empty ? 'text-red-800' : 'text-emerald-800'}> act:{r.actual_empty ? '∅' : JSON.stringify(r.actual_keys)}</span>
</div>
))}
</div>
)}
</div>
)}
</div>