Part of #179.
Goal
Surface pre-run vs post-run IQ Scan deltas inside the Optimizer run detail view so users can see what the optimization improved.
Work
Acceptance
- Run detail view clearly shows both preflight and postflight IQ state when available
- Delta rendering handles all edge cases: same score, regression, big jump
- Shared
<ScanSummary /> primitive used in both IQ Score tab and Optimizer run view
Files
backend/routers/auto_optimize.py (extend run detail response)
backend/models.py (add preflight_scan, postflight_scan to run detail response model)
frontend/src/components/auto-optimize/RunDetailView.tsx
frontend/src/components/ScanSummary.tsx (new)
frontend/src/pages/IQScoreTab.tsx (refactor to reuse ScanSummary)
frontend/src/types/index.ts
Part of #179.
Goal
Surface pre-run vs post-run IQ Scan deltas inside the Optimizer run detail view so users can see what the optimization improved.
Work
GET /api/auto-optimize/runs/{run_id}to returnpreflight_scanandpostflight_scanobjects read from the newgenie_opt_scan_snapshotsDelta tablefrontend/src/components/auto-optimize/RunDetailView.tsxto render IQ scan summary (score, maturity, key findings resolved)<ScanSummary />component if one does not exist; reuse the same visual vocabulary asIQScoreTab.tsxIQ 8/12 → 11/12 · Ready to Optimize → TrustedAcceptance
<ScanSummary />primitive used in both IQ Score tab and Optimizer run viewFiles
backend/routers/auto_optimize.py(extend run detail response)backend/models.py(addpreflight_scan,postflight_scanto run detail response model)frontend/src/components/auto-optimize/RunDetailView.tsxfrontend/src/components/ScanSummary.tsx(new)frontend/src/pages/IQScoreTab.tsx(refactor to reuse ScanSummary)frontend/src/types/index.ts