Skip to content

fix(migration): korrigiere fehlverknüpften chargebackBankTx (buy_crypto 124581)#3941

Open
TaprootFreak wants to merge 1 commit into
developfrom
fix/chargeback-124581-mislink
Open

fix(migration): korrigiere fehlverknüpften chargebackBankTx (buy_crypto 124581)#3941
TaprootFreak wants to merge 1 commit into
developfrom
fix/chargeback-124581-mislink

Conversation

@TaprootFreak

@TaprootFreak TaprootFreak commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

Was

Einmalige Reconciliation-Korrektur (Migration) für den Fehl-Link aus dem #3896-Zeitfenster, der mit #3928 (Revert auf exakten Match) im Code bereits behoben ist. Dies ist die in #3928 §1 angekündigte separate Daten-Korrektur.

Betroffener Record: buy_crypto 124581

Während #3896 den Lookup auf LIKE '%ref%' gelockert hatte, lieferte die Chargeback-Completion über das abschliessende ORDER BY id DESC die neueste passende bank_tx statt der eigenen Auszahlung:

bank_tx Datum Rolle
202384 06-10 eigene Chargeback-Auszahlung (von der Empfängerbank zurückgewiesen)
203191 06-16 Wiederholungs-Auszahlung von bank_tx_repeat 195 (sourceBankTx=202384); gleicher Betrag, gleicher Referenz-Anfang, aber von der Bank um Kundentext ergänzt und bei 140 Zeichen (SEPA-Ustrd-Maximum) gekappt → matchte nur als Substring und war neuer

Folge:

Scope / Verifikation (DB-Abgleich PRD)

  • buy_crypto 124581 ist all-time der einzige Record, der die fix(buy-crypto): complete bank chargebacks from chargebackOutput #3906-Invariante verletzt (chargebackBankTxId <> chargebackOutput.bankTxId, beide gesetzt, completed). Die analoge Prüfung für bank_tx_return und bank_tx_repeat ergibt 0 weitere Treffer.
  • Der Soll-Typ BankTxRepeat-Chargeback ist gegen 37 saubere Repeat-Auszahlungen belegt; 203191 ist der einzige fehlgetypte von insgesamt 38.
  • 202384 ist aktuell nirgends als chargebackBankTx belegt → keine Verletzung der @OneToOne-Unique-Constraint beim Umhängen.

Kein Geldeffekt

Cashflow netto null: ein 201836 (+6500), aus 202384 (−6500), Rückbuchung 202543 (+6500), aus 203191 (−6500). Der Kunde wurde genau einmal erstattet (erste Auszahlung zurückgewiesen, korrigiert erneut gesendet). Die Korrektur betrifft ausschliesslich Metadaten/Reconciliation.

Korrektur (up)

  • buy_crypto 124581.chargebackBankTxId: 203191202384
  • bank_tx 203191.type: BuyCryptoReturnBankTxRepeat-Chargeback

Jeder Schritt ist per Pre-Check auf den exakten korrupten Zustand gegated → No-op auf DEV/Staging (Record fehlt dort), idempotent, re-runnable. down() stellt den Vorzustand gegated wieder her.

Testplan

  • CI grün
  • Nach PRD-Deploy: buy_crypto 124581.chargebackBankTxId = 202384 und bank_tx 203191.type = BankTxRepeat-Chargeback verifizieren

…pto 124581)

Der lose `LIKE '%ref%'`-Match aus #3896 hat bei der Chargeback-Completion
ueber `ORDER BY id DESC` die neueste passende bank_tx geliefert statt der
eigenen Auszahlung. Dadurch zeigte buy_crypto 124581.chargebackBankTx auf die
fremde Repeat-Auszahlung 203191 (bank_tx_repeat 195) statt auf die eigene
202384, und 203191 behielt den Typ BuyCryptoReturn statt BankTxRepeat-Chargeback.

Reine Metadaten-/Reconciliation-Korrektur, kein Geldeffekt (Cashflow netto null:
ein 201836, aus 202384, Rueckbuchung 202543, aus 203191). Env-gated No-op, wo der
korrupte Zustand fehlt.
@TaprootFreak TaprootFreak changed the title fix(migration): korrigiere fehlverknuepften chargebackBankTx (buy_crypto 124581) fix(migration): korrigiere fehlverknüpften chargebackBankTx (buy_crypto 124581) Jun 19, 2026
@TaprootFreak TaprootFreak marked this pull request as ready for review June 19, 2026 14:42
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