- Switch package manager from npm to yarn 1.22.22 (pinned via packageManager,
matches PressV/sp-ui-kit): remove package-lock.json, add yarn.lock (v1).
- Add "vite" as an explicit devDependency. npm 7+ auto-installed it as a peer of
@vitejs/plugin-vue / @tailwindcss/vite, which masked the missing declaration; a
clean `yarn install` (no peer auto-install) needs it explicit or the tsc build
fails to resolve 'vite' / 'vite/client'.
- README: npm -> yarn (+ `corepack enable`).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Vue 3 + Vite 8 + TS + PrimeVue 4 (Nora/Industrial) + Pinia + vue-i18n SPA, served
by the SPRO gateway as a static page-module under /module/temper_rejects. A central,
login-free reject-booking terminal for all presses' tempered carts.
- Implements the LOCKED design (memory: ausschuss-station): per-ttId list (newest
first), left press checkbox filter (default all, greyed when no carts, hit-count
badge), style-C 5-station temper belt per entry (badges + animated conveyor),
12h/1T/7T/14T/30T window, touch density. Booking dialog = PrimeVue Dialog +
InputNumber + reason Select. Colours match PressV + Ausschuss #C4162A.
- Python page-module wrapper: register(app) mounts committed dist/ + a no-auth API
(GET /overview, GET /reasons, POST /reject). _db.py exposes run_select_query +
transaction() for the future INSERT.
- Backend returns SAMPLE data and POST /reject echoes success WITHOUT writing;
frontend falls back to bundled sample so `npm run dev` is fully demoable offline.
TODOs point at the real temper_tracking reads + the rejects INSERT (needs a DBA
rejTtId column) + the login-free-write security open question.
- Rich README bakes in the design, contract, wiring, open questions + Grafana embed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>