From 482bae698a2efc6aeab5aa271cd81162d4194136 Mon Sep 17 00:00:00 2001 From: Mlcarvalho1 Date: Wed, 27 May 2026 16:04:19 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20categorizar=20transa=C3=A7=C3=B5es=20no?= =?UTF-8?q?=20preview=20de=20importa=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Select de categoria em cada linha da prévia; category_id salvo no BulkInsert. Duplicatas ficam desabilitadas. Co-Authored-By: Claude Sonnet 4.6 --- apps/api/internal/model/transaction.go | 1 + apps/api/internal/repository/transaction.go | 6 +++--- apps/web/src/stores/import.ts | 1 + apps/web/src/views/ImportView.vue | 23 ++++++++++++++++++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/apps/api/internal/model/transaction.go b/apps/api/internal/model/transaction.go index f960ae7..1b76a25 100644 --- a/apps/api/internal/model/transaction.go +++ b/apps/api/internal/model/transaction.go @@ -21,6 +21,7 @@ type ImportRow struct { Amount float64 `json:"amount"` Description string `json:"description"` Type string `json:"type"` + CategoryID *int `json:"category_id,omitempty"` ExternalID string `json:"external_id,omitempty"` // FITID from OFX IsDuplicate bool `json:"is_duplicate"` } diff --git a/apps/api/internal/repository/transaction.go b/apps/api/internal/repository/transaction.go index 99f0e29..5db8e4c 100644 --- a/apps/api/internal/repository/transaction.go +++ b/apps/api/internal/repository/transaction.go @@ -63,9 +63,9 @@ func (r *transactionRepo) BulkInsert(ctx context.Context, rows []model.ImportRow extID = &row.ExternalID } _, err := tx.Exec(ctx, ` - INSERT INTO transactions (date, amount, description, type, source, external_id) - VALUES ($1, $2, $3, $4, 'import', $5)`, - row.Date, row.Amount, row.Description, row.Type, extID) + INSERT INTO transactions (date, amount, description, type, source, external_id, category_id) + VALUES ($1, $2, $3, $4, 'import', $5, $6)`, + row.Date, row.Amount, row.Description, row.Type, extID, row.CategoryID) if err != nil { return count, err } diff --git a/apps/web/src/stores/import.ts b/apps/web/src/stores/import.ts index 51fdea7..7116a0e 100644 --- a/apps/web/src/stores/import.ts +++ b/apps/web/src/stores/import.ts @@ -6,6 +6,7 @@ export interface ImportRow { amount: number description: string type: string + category_id?: number | null external_id?: string is_duplicate: boolean } diff --git a/apps/web/src/views/ImportView.vue b/apps/web/src/views/ImportView.vue index 5cef558..8adc5fb 100644 --- a/apps/web/src/views/ImportView.vue +++ b/apps/web/src/views/ImportView.vue @@ -1,9 +1,12 @@