* feat(reconciliation): accept confidence_threshold on the bank run route
Mirror the v1 route: RunReconciliationSchema gains an optional
confidence_threshold (0..1) that passes through to runReconciliation as
the server-side floor on the apply path. The UI sends 0.85 with a
strong-only apply so a pair the fresh re-run scores lower is skipped
instead of committed; omitting it keeps the legacy behavior where every
selected pair applies.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat(reconciliation): promote the bulk match flow and bridge it from the inbox
The dry-run preview with pre-ticked strong matches existed but was never
found: users matched whole migrations row by row. Three discoverability
changes, no engine changes:
- Bankavstamning: an attention line above the toolbar while unmatched
transactions exist and no preview has run, with Forhandsgranska
promoted to the filled variant. When every ticked preview pair is a
strong match (>= 0.85) the apply button relabels to 'Matcha X starka
traffar' and the apply sends confidence_threshold 0.85; mixed
selections keep the plain label and omit the floor so manually ticked
weaker pairs still apply.
- Autorun bridge: ?autorun=1 on /reports/bank-reconciliation runs the
preview once, only after appliedDates is set and not while datesDirty,
so it can never cover a different window than the on-screen lists.
- Transactions inbox: with >= 5 unbooked bank rows visible, an attention
line links to the reconciliation with autorun (static text + count, no
probe; the preview is the honest source of how many actually match).
The review step stays: autorun lands on the preview table, one click
from apply, and the server intersection guard is untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>