Add rpa-run-tab skill: Tebra-style Run tab in 5 minutes

The Run tab from Tebra Auto Post, scrubbed and themable (Tebra Sky, TVL Teal,
or a custom hex checked for contrast). The skill wires the real bot through
tagged log-file lines and checks itself with a fake bot (complete, partial,
stuck, crash) plus light and dark screenshots. Grill decisions R1-R14 are in
PLAN.md, terms in GLOSSARY.md, and ADRs 0001-0003.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
VasanthandClaude Opus 5.5 committed 2026-10-16 16:29:18 +05:30
1 parent 8bb1cf268e
commit 258bfbb500
18 files changed
+1712 -2

No files matched your search

+51
View File
@@ -113,3 +113,54 @@ rpa-dashboard-ai/
- asks the questions in order,
- reports any existing frontend,
- produces a working dashboard page that renders in light and dark.
---
# Plan: `rpa-run-tab` skill (third skill)
Goal: a skill that adds Tebra Auto Post's **Run tab** to any desktop RPA project in **5 minutes**. The look is the same as Tebra; only the colours are the user's choice.
- Source: `D:\Tebra_Auto_Post` `src/ui/main_window.py`. The Run tab code is at lines 1871–3979 (page) and 268–1142 (bridge).
- Also `run_app.py` (the `--run-automation` child process) and `core.py` (`wd_mark`).
- Take the tokenised accent from `D:\Tebra_Auto_Post_TVL`. Bundle a scrubbed template; never read D:\ at runtime.
- Terms are in `GLOSSARY.md`; decisions are in `docs/adr/0001`–`0003`.
## Decisions (from the grill)
| # | Question | Decision |
|---|---|---|
| R1 | Skill shape | A new standalone skill, `D:\RPA SKILLS\rpa-run-tab\`. Later, `rpa-dashboard-no-ai` points to it instead of keeping its own Run panel. |
| R2 | DB parts (batch chip, resume, clear-approval, roles) | **Left out.** No DB needed. Clear file just clears the file. |
| R3 | Stack | **Desktop only**: PyQt6 + QWebEngine. Runs from Python or a PyInstaller exe. |
| R4 | Input | Excel input card by default, with sheet tabs, a 200-row preview and password columns masked. **Hidden** for bots that take no file; the Trigger button is then ready straight away. |
| R5 | Steps vs checkpoints | **One checkpoint list** (name + time limit) drives the steps, the boxes and the progress %. See ADR-0001. |
| R6 | Stuck | Kill the process tree and end as failed "Stuck at X". No auto-restart. See ADR-0003. |
| R7 | On-screen log | The bot tags lines `[UI]`, `[UI:ok]`, `[UI:warn]`, `[UI:error]`. Errors and tracebacks always show. All raw lines go to the run log file. See ADR-0002. |
| R8 | Host | **Detect.** Add a tab to an existing PyQt web-view page or dashboard. Otherwise build a new window: Tebra top bar + Run tab, no sidebar. |
| R9 | Colours | Presets: 1) Tebra Sky, 2) TVL Teal, 3) Custom hex. A custom hex is turned into gradient and accent colours for light and dark, with a contrast check. ok/warn/bad and the log colours stay fixed. |
| R10 | Scope of the 5 minutes | Page **plus the real bot wired**. The skill reads the bot and proposes a checkpoint list for the user to confirm in one reply. It then adds the `[CPSTATE]`, `[UI]` and `__RUN_SUMMARY__` prints. |
| R11 | Endings | Green "Completed in …". Amber "Finished: N of M failed", with the failed items in the log. Red "Failed after …" or "Stuck at X". |
| R12 | Stop | **No Stop or Pause**, same as Tebra. Closing the window asks first, then kills the process tree. |
| R13 | Sample input | A headers-only sample built from the sheets and columns the bot reads, plus one fake row. The button is hidden if the skill can't tell. Never real data. |
| R14 | Verify | **Fake bot only.** It covers completed, partial and stuck runs in light and dark. The skill never presses Trigger on the real bot. |
## Kept from Tebra as is
- Glass cards and the sky gradient. The Segoe UI font. The Consolas log with no timestamps.
- The dark toggle, saved to QSettings.
- The status dot: ready / running / done / error.
- Elapsed timers on the progress bar and on each checkpoint box.
- Progress only ever moves forward. Consecutive duplicate log lines are dropped.
- A double-run guard. The parent-death watcher in the child process.
- Python → page messages go through `window.__pyMsg` only, never also through `js_message.connect`, which delivers every message twice.
## Tebra bugs not to copy
- A partial failure shows "Completed" at 100%. Fixed by R11.
- `STOP_REQUESTED` set only in the parent process. There is no Stop, and reload no longer fakes "Stopped by user".
- The checkpoint time limit in JS (300) and in Python (600) disagree. One list (R5) fixes this.
- Dead CSS and JS: `.top-ctrl-btn`, `.run-btn`, `showRerunModal`, `#rerun-mask`.
## Runtime questions (keep to ≤3 for the 5-minute budget)
1. Colour: preset or custom hex.
2. Confirm the proposed checkpoint list, with names and time limits.
3. Excel input or no input. Skip this when the bot reading clearly answers it.
The title and subtitle come from the project name. The user can edit them later.