AI desktop path: plain-HTML Review and Cost tabs over the Qt bridge, gate in Python
ai_sections.html pastes into the no-AI dashboard.html; ai_bridge.py adds one ai_request slot that hands every AI contract request (incl. GET /roi) to the review backend's dispatch(). Desktop page check reruns the web review and cost cases plus a tampered-page gate case. Eval fixture e-pyqt-ai added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
128f153f84
commit
d89dce3c33
13 files changed
+203
-14
No files matched your search
@@ -15,7 +15,7 @@ means `../rpa-dashboard-no-ai/templates/`.
|
||||
| `templates/web/pricing.py` | The pricing table (with its source and as-of date) and `cost_for_call`. The backend imports it. |
|
||||
| `templates/web/server_stub.py` | Sample-data backend for runs, review rows and the approve gate. Standard library only. |
|
||||
| `templates/web/bands.py` | The band cut points and rules. The one source of truth: the backend imports it. |
|
||||
| `templates/desktop/ai_sections.html` | Desktop: the Review tab (band legend, review split pane, drafts, Verify, approve gate) in plain HTML, pasted into `<no-ai>dashboard.html`. |
|
||||
| `templates/desktop/ai_sections.html` | Desktop: the Review tab (band legend, review split pane, drafts, Verify, approve gate) and the Cost tab in plain HTML, pasted into `<no-ai>dashboard.html`. |
|
||||
| `templates/desktop/ai_bridge.py` | Desktop: the no-AI `Bridge` plus the `ai_request` slot that hands every AI request to the Python review backend. |
|
||||
| `templates/contract.md` | The AI contract: runs, review rows, endpoints and the gate, over HTTP or the Qt bridge. Extends `<no-ai>contract.md`. |
|
||||
| `templates/reference/` | Superbill Review extracts, marked EXAMPLE ONLY. Use them to port extra polish, never copy their project names. |
|
||||
@@ -71,9 +71,9 @@ pane, the approve gate and the cost page. Ask which extras to add (choose any, o
|
||||
the model per batch), **retry on another model** (for failed runs). Build only the
|
||||
chosen ones at their `OPTIONAL:` markers, and delete the markers.
|
||||
- **Model picker:** a `<select>` filled from `GET /models` (the pricing table's keys), at
|
||||
the marker in `Cost.tsx` or next to the Run button; the chosen model goes with the
|
||||
the marker in `Cost.tsx` (desktop: `ai_sections.html`) or next to the Run button; the chosen model goes with the
|
||||
batch's start action. Remember the last choice per user.
|
||||
- **Retry on another model:** on a `failed` run, at the marker in `Review.tsx`: a model
|
||||
- **Retry on another model:** on a `failed` run, at the marker in `Review.tsx` (desktop: `ai_sections.html`): a model
|
||||
`<select>` (from `GET /models`, defaulting to the run's own model) and a Retry button
|
||||
that sends `POST /runs/{job_id}/retry {model}`, then polls the run as usual.
|
||||
Both need the endpoints in `templates/contract.md`; add them to the backend (and the stub).
|
||||
@@ -106,11 +106,11 @@ Both need the endpoints in `templates/contract.md`; add them to the backend (and
|
||||
1. Build the no-AI desktop page and host first, exactly as steps 6 and 7 of
|
||||
`../rpa-dashboard-no-ai/SKILL.md` say: `dashboard/dashboard.html` (theme, placeholders,
|
||||
`SAMPLE_DATA = false` once the bot is wired), `bridge.py` and `bot_runner.py`.
|
||||
2. Paste the whole of `templates/desktop/ai_sections.html` into `dashboard/dashboard.html`,
|
||||
2. Paste the whole of `templates/desktop/ai_sections.html` (Review and Cost tabs) into `dashboard/dashboard.html`,
|
||||
just before `</body>`. Change nothing in it: it uses the page's theme tokens, and its
|
||||
band colours are fixed.
|
||||
3. Copy `templates/desktop/ai_bridge.py`, `templates/web/server_stub.py` and
|
||||
`templates/web/bands.py` into `dashboard/`. Fill `{{APP_NAME}}` in `ai_bridge.py`.
|
||||
3. Copy `templates/desktop/ai_bridge.py`, `templates/web/server_stub.py`,
|
||||
`templates/web/bands.py` and `templates/web/pricing.py` into `dashboard/`. Fill `{{APP_NAME}}` in `ai_bridge.py`.
|
||||
4. The app now starts with `python dashboard/ai_bridge.py` (not `bridge.py`).
|
||||
5. Search the output for `{{`. None may be left.
|
||||
|
||||
|
||||
Reference in new issue
Block a user