feat: Pockets sind erkennbar und zuordenbar

Ein Revolut-Pocket bringt weder eigene IBAN noch eigenen Namen mit. Certain
hielt bisher nur uid, IBAN, Name und Waehrung fest – mehrere Konten derselben
Bank sahen damit gleich aus, und in der Zeile stand die rohe Kennung.

Jetzt werden Produktbezeichnung und die Kennung fuer Konten ohne IBAN
mitgefuehrt, der angezeigte Name faellt der Reihe nach auf Name, Details,
Produkt, Kennung, IBAN zurueck statt auf die uid, und der uebermittelte
Datensatz laesst sich aufklappen – nachsehen statt raten, wenn zwei Konten
gleich aussehen. Beim Neuverbinden werden die Merkmale aufgefrischt, ohne die
Zuordnung anzutasten.

Fehlt ein Konto in der Waehrung des Bankkontos, steht das jetzt dabei; vorher
war die Auswahl einfach leer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-26 23:02:25 +02:00
co-authored by Claude Opus 5
parent d8995116cb
commit f684c752d8
8 changed files with 199 additions and 11 deletions
@@ -0,0 +1,36 @@
"""Merkmale, an denen sich ein Bankkonto erkennen laesst.
Ein Revolut-Pocket hat keine eigene IBAN und oft keinen eigenen Namen. Bisher
hielt Certain nur uid, IBAN, Name und Waehrung fest – drei Pockets sahen damit
gleich aus und liessen sich nicht auseinanderhalten, geschweige denn zuordnen.
``product`` ist die Produktbezeichnung der Bank (bei Revolut unterscheidet sie
Konto und Pocket), ``other_id`` die Kennung fuer Konten ohne IBAN, und
``raw_json`` alles Uebrige, wie es kam – damit man nachsehen kann, statt zu
raten, was die Bank eigentlich geschickt hat.
Revision ID: 0022
Revises: 0021
"""
import sqlalchemy as sa
from alembic import op
revision = "0022"
down_revision = "0021"
branch_labels = None
depends_on = None
def upgrade() -> None:
with op.batch_alter_table("bank_account_links") as b:
b.add_column(sa.Column("product", sa.String(length=120), nullable=True))
b.add_column(sa.Column("other_id", sa.String(length=128), nullable=True))
b.add_column(sa.Column("raw_json", sa.Text(), nullable=True))
def downgrade() -> None:
with op.batch_alter_table("bank_account_links") as b:
b.drop_column("raw_json")
b.drop_column("other_id")
b.drop_column("product")