feat(ui): Explorer interactivity — Model Runs & Jobs detail views, comparison, verify, sorting (PRP-21)#190
Conversation
There was a problem hiding this comment.
Sorry @w7-mgfcode, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Implements PRP-21 — extends the Model Runs and Jobs Explorer pages
from flat, read-only tables into an interactive investigation surface, the
direct sibling of PRP-20 (#187) applied to the
registryandjobsslices.Closes #189.
Backend (additive — no migration, no new slice, no
app/main.pychange)GET /registry/runsgains optionalsort_by+sort_orderquery params.GET /jobsgains the identical params.sort_bythrough an allow-list dict to a real mapped column(
security-patterns.md— never raw SQL); an unknownsort_byfalls back tothe prior
created_at descdefault rather than erroring;sort_orderoutside{asc,desc}is rejected422via theQueryregex.Frontend
/explorer/runs/:runId,/explorer/jobs/:jobId,/explorer/runs/compare?a=&b=.cross-links, and a SHA-256 artifact "Verify integrity" action.
action; live-polls while running.
config_diff, andmetrics_diffwith neutral ▲/▼ delta indicators.URL-persisted filter/sort/page state; the Jobs table also gains CSV export +
column-visibility (Runs already had them).
useVerifyArtifacthook,JsonBlockcomponent,ArtifactVerifyResponsetype;
sortBy/sortOrderthreaded intouseRuns/useJobs.Tests
registryintegration tests for sort + unknown-fallback + 422.jobsDB test infrastructure (db_session/client/sample_jobs_multi)and a first
jobs/tests/test_routes.py— closes the jobs slice's route-test gap.Validation
ruff check/ruff format --check/mypy --strict/pyright --strict— clean.pytest -m "not integration"— 1101 passed.tsc --noEmit/eslint/vitest— clean (27 frontend tests pass).(run/job detail, verify, compare, sorting, URL round-trip).
Notes
ORDER BYchange.test_list_runs_emptyintegration test assumes an empty DBand fails on a stale local Postgres with leftover demo runs; it passes on the
fresh DB CI provisions. Unrelated to this PR.