Skip to content

feat(history): label plain REALU transfers as received/sent - #965

Draft
Blume1977 wants to merge 1 commit into
RealUnitCH:stagingfrom
Blume1977:feat/history-transfer-labels
Draft

feat(history): label plain REALU transfers as received/sent#965
Blume1977 wants to merge 1 commit into
RealUnitCH:stagingfrom
Blume1977:feat/history-transfer-labels

Conversation

@Blume1977

Copy link
Copy Markdown
Contributor

Was

Reine On-Chain-Transfers werden in der Transaktionsliste neu als «Empfangen»/«Gesendet» angezeigt statt als «Kauf»/«Verkauf». Brokerbot-Käufe/-Verkäufe und DFX-Transaktionen (Bank-Kauf/-Verkauf) behalten ihre bisherigen Labels.

Warum

Kundenmeldung via RealUnit (02.09.2026, userData 421464): Ein REALU-Eingang von einer externen Wallet erscheint als «Kauf». Die Row-Widgets labeln rein nach Richtung; Brokerbot-Käufe erzeugen keine DFX-Transaktion, die App kann sie allein nicht von Fremd-Transfers unterscheiden.

Wie

  • API klassifiziert die History-Transfers (Pair-PR DFXswiss/backend#5353: category = purchase/sale/transferIn/transferOut); App übernimmt die Kategorie beim Sync
  • Neue Spalte transactions.category (Schema v3, Migration mit Default '')
  • Gemeinsamer Titel-Resolver transactionTitleLabel: DFX-Transaktionen → Richtungs-Labels wie bisher; kategorisierte Transfers → Kauf/Verkauf/Empfangen/Gesendet; ohne Kategorie (Altbestand, ältere API) → bisherige Richtungs-Labels. Backend und App sind dadurch unabhängig deploybar
  • Bereits synchronisierte Einträge erhalten die Kategorie beim nächsten Sync über den bestehenden Update-Pfad
  • i18n: transactionReceived/transactionSent DE+EN (alphabetisch)

Szenarien (geprüft)

Bank-Kauf → Kauf; Bank-Verkauf → Verkauf (DFX-Match); ZCHF-Swap → Verkauf (Brokerbot-Gegenpartei); Fremd-Eingang → Empfangen; eigener Transfer raus → Gesendet; DFX-Rückerstattung → Empfangen; Pending-Zeile unverändert.

Tests

  • flutter analyze sauber; flutter test: 5613 grün; einzige Ausnahme der vorbestehende macOS-Golden buy_payment_details (failt auch auf sauberem staging)
  • Neu: Titel-Resolver (4 Widget-Tests), Sync-Kategorie (2), Storage-Roundtrip (1), Migration v1→v3 und v2→v3

Abhängigkeit

Merge idealerweise nach DFXswiss/backend#5353; funktioniert aber auch davor (Fallback auf bisherige Labels).

Incoming token transfers from a foreign wallet showed up as 'Kauf' in the
transaction list, because the row widgets label purely by direction
(customer report via RealUnit, 02.09.2026). Brokerbot purchases carry no
DFX transaction, so the app cannot tell them apart on its own.

The API now classifies every history transfer (backend#5353): purchase and
sale for Brokerbot counterparties, transferIn/transferOut for plain token
movements. The app stores that category (new transactions.category column,
schema v3) and resolves the row title through a shared helper: DFX-backed
transactions keep the direction-based buy/sell labels, categorized plain
transfers render as received/sent, and rows without a category (legacy
data, older API) keep the previous direction labels, so backend and app
can roll out independently.

Already-synced entries pick up their category on the next sync via the
existing update path.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant