The old xlvask-bulk-manual.spec.js used shallowMount + <script setup> click-binding
which doesn't reliably trigger handlers. The rewritten xlvask-manual-review.spec.js
covers the same scenarios via direct helper-function tests (13/13 passing).
The XL Vask review-eligible rows previously only rendered Accept/Reject when
the AI autopilot had already produced a matching suggestion. When
review_eligible=true but no AI suggestion exists yet, the operator had no way
to act on the row during the AI autopilot readiness window
(automation_schema_not_ready, wash_id_uniqueness_not_ready, openai_disabled).
Changes:
- Add canRunManualReviewAction(object) helper: returns true when row is
review-eligible and not already resolved.
- Wire Accept/Reject button v-if to OR with canRunManualReviewAction.
- Add new Ignore button (manual-only, distinct from Reject).
- Add data-testid attributes for stable e2e selectors.
- Extend canRunBulkReviewAction to allow manual-review-only selections.
- runBulkReviewDecision sends force_manual: true when no AI suggestion.
Adds 2 WIP test files (xlvask-manual-review.spec.js, xlvask-bulk-manual.spec.js)
that document the intended coverage; follow-up commit will fix the click-binding
test infrastructure (shallowMount + <script setup> needs defineExpose or
mount-with-stubs approach).
Refs: truckwash-fakturaer-periode Phase 0 quality pass, Mon 2026-08-10 08:00.