Add dashboard filters & drilldown + async chart job UX (Steps 5–6)#37
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e6feb43638
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| UI.startChartsJobBtn, | ||
| UI.retryChartsJobBtn, | ||
| ...document.querySelectorAll('.mode-btn'), |
There was a problem hiding this comment.
Exclude retry button from global busy-state toggling
toggleBusy(false) re-enables every target in its list, including retryChartsJobBtn, so the retry button becomes clickable after any completed request (analyze/run/multi/chart start), even when no chart job has failed. This overrides the explicit disabled = true set in startChartsJob/retryChartsJob and lets users trigger duplicate chart submissions while a previous job is still running or already succeeded.
Useful? React with 👍 / 👎.
| if (result.status === 'done') { | ||
| stopChartPolling(); | ||
| UI.retryChartsJobBtn.disabled = true; | ||
| setStatus('차트 작업 완료'); | ||
| } else if (result.status === 'failed') { |
There was a problem hiding this comment.
Treat
not_found chart-job status as terminal failure
The polling handler only stops on done or failed, but the backend can return status: "not_found" for missing jobs (e.g., after a server restart), so this path keeps polling forever and never reports a terminal error state. In that scenario the UI burns repeated requests and does not clearly recover unless the user manually intervenes.
Useful? React with 👍 / 👎.
Motivation
Description
bitnet_tools/ui/index.html,bitnet_tools/ui/app.js, andbitnet_tools/ui/styles.cssto add anintentinput + intent action suggestions, dashboard filters (file/column/type), an insight list with clickable items, and a drilldown evidence panel that renders JSON evidence.buildStructuredInsights), filter rendering, insight list rendering, drilldown view, and mode/intent routing to wire quick/advanced flows.startChartsJob/retryChartsJob) with server submission to/api/charts/jobs, polling (pollChartJobOnce/startChartPolling), lifecycle status rendering, and automatic retry enablement on failure.Handler._error_payloadhelper and updated GET/POST error responses to return{ "error": <msg>, "error_detail": <detail> }for a stable client/server error shape.Testing
pytest -qand all tests passed (26 passed).python -m bitnet_tools.cli ui --host 0.0.0.0 --port 8765and ran a Playwright smoke script that exercised dashboard rendering, filters, drilldown, and chart-job UX, producing a screenshot atartifacts/ui-step5-6-dashboard-chartjob.png.Codex Task