From a1098b28f8f003b9017410d5b58d35dfac870e7a Mon Sep 17 00:00:00 2001 From: Bryce Date: Mon, 1 Jun 2026 11:18:28 -0700 Subject: [PATCH 1/2] feat(transactions): port manual bank-transaction import to SSR Implement the SSR/alpine/htmx manual transaction import, wiring the already-declared but unhandled ::external-import-page/parse/import routes. Mirrors the SSR ledger import: paste the exact master-branch Yodlee positional-column TSV, review parsed rows in an editable grid with per-row error/warning badges, and import. Every master validation is preserved and the existing import.transactions engine is reused unchanged (via import.manual/import-batch), so core components are untouched. - New ns auto-ap.ssr.transaction.import (page, paste/parse, editable grid, two-tier validation, import handler) + admin-only transactions Import nav. - Two-tier validation: fixable problems (bad date/amount, unknown client or bank-account code, missing fields) are hard errors that block the whole batch; inherent skip-conditions (non-POSTED, before start-date/locked, already-imported) are warnings computed from the engine's own categorize-transaction so the grid preview matches the import result. - Tests: failing-first Playwright e2e (e2e/transaction-import.spec.ts) plus unit/integration coverage (ssr/transaction/import_test.clj, 10 tests). - Deterministic bank-account code in the e2e seed. Plan: docs/plans/2026-06-01-001-feat-manual-transaction-import-ssr-plan.md Co-Authored-By: Claude Opus 4.8 --- ...-manual-transaction-import-ssr-ideation.md | 176 ++++++++++ ...feat-manual-transaction-import-ssr-plan.md | 275 ++++++++++++++++ e2e/transaction-import.spec.ts | 125 ++++++++ src/clj/auto_ap/ssr/components/aside.clj | 6 + src/clj/auto_ap/ssr/transaction.clj | 2 + src/clj/auto_ap/ssr/transaction/import.clj | 301 ++++++++++++++++++ .../auto_ap/ssr/transaction/import_test.clj | 157 +++++++++ test/clj/auto_ap/test_server.clj | 28 +- 8 files changed, 1056 insertions(+), 14 deletions(-) create mode 100644 docs/ideation/2026-06-01-manual-transaction-import-ssr-ideation.md create mode 100644 docs/plans/2026-06-01-001-feat-manual-transaction-import-ssr-plan.md create mode 100644 e2e/transaction-import.spec.ts create mode 100644 src/clj/auto_ap/ssr/transaction/import.clj create mode 100644 test/clj/auto_ap/ssr/transaction/import_test.clj diff --git a/docs/ideation/2026-06-01-manual-transaction-import-ssr-ideation.md b/docs/ideation/2026-06-01-manual-transaction-import-ssr-ideation.md new file mode 100644 index 00000000..1f1ac393 --- /dev/null +++ b/docs/ideation/2026-06-01-manual-transaction-import-ssr-ideation.md @@ -0,0 +1,176 @@ +--- +date: 2026-06-01 +topic: manual-transaction-import-ssr +focus: Port the master-branch "manual import transactions" feature to the SSR/alpine/htmx stack, modeled on the SSR ledger import, preserving all validations, starting from a failing e2e test, with minimal core-component change. +mode: repo-grounded +--- + +# Ideation: Porting Manual Bank-Transaction Import to SSR + +## Grounding Context (Codebase) + +Three reference points were read in full: + +**1. The master feature (what we must reproduce).** +- UI: `src/cljs/auto_ap/views/pages/transactions/manual.cljs` — a re-frame modal titled "Import Transactions" with a single `