feat: Buchungen lassen sich von Hand einem Abo zuordnen – und das merkt sich
Die Erkennung lief seit Stufe 3, aber nur automatisch: Was sie nicht sicher traf, blieb liegen, und sehen konnte man davon nichts. Die Endpunkte gab es, die Oberflaeche kannte keinen davon. Jetzt steht in der Buchungsliste eine Spalte "Abo" – dieselbe Form wie die Kategorie daneben: Die Auswahl zeigt, zu welchem Vertrag die Zahlung gehoert, aendert es, und leer loest die Zuordnung. Uebertraege bleiben aussen vor; sie verschieben nur Geld. Und sie lernt. Musste man von Hand ran, hat der Erkennungstext nicht gepasst – also wird der Empfaenger dieser Buchung der neue. Beim naechsten Mal faellt dieselbe Zahlung von selbst zu, statt dass man jeden Monat dasselbe klickt. Der Vertragsname bleibt als zweite Chance: _passt_text prueft beide, nicht entweder/oder, sonst verlaere man beim Lernen, was vorher schon getroffen hat. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
493a98ab6b
commit
0ea2ab1322
@@ -34,6 +34,7 @@ from ..schemas import (
|
||||
SubscriptionUpdate,
|
||||
)
|
||||
from ..services import abo_erkennung, currency, logo as logo_service
|
||||
from ..services.csv_import import normalize_text
|
||||
from .settings import BASE_CURRENCY_KEY, get_user_setting
|
||||
|
||||
router = APIRouter(prefix="/subscriptions", tags=["subscriptions"])
|
||||
@@ -186,6 +187,16 @@ def zuordnen_von_hand(sub_id: int, txn_id: int, db: Session = Depends(get_db),
|
||||
txn.subscription_id = s.id
|
||||
if txn.date is not None:
|
||||
abo_erkennung._ruecke_faelligkeit(s, txn.date)
|
||||
# Und daraus lernen: Musste der Nutzer von Hand zuordnen, hat der
|
||||
# Erkennungstext nicht gepasst. Der Empfaenger dieser Buchung wird der
|
||||
# neue – beim naechsten Mal faellt dieselbe Zahlung von selbst zu. Der
|
||||
# Name bleibt als zweite Chance (siehe _passt_text).
|
||||
#
|
||||
# shortcut: ersetzt einen frueher gelernten Text, statt mehrere zu fuehren.
|
||||
# Taucht ein Vertrag unter mehreren Empfaengernamen auf, braucht es eine
|
||||
# Liste wie bei den Konto-Kennungen.
|
||||
if txn.payee and not abo_erkennung._passt_text(s, normalize_text(txn.payee)):
|
||||
s.payee_pattern = txn.payee[:255]
|
||||
db.commit()
|
||||
db.refresh(s)
|
||||
return to_out(db, s, _base(db, user), date.today())
|
||||
|
||||
Reference in New Issue
Block a user