Wiederkehrende Zahlungen erkennen + Monatsend-Prognose (#2) #12
No reviewers
Labels
No labels
diskussion
feature-idee
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
budmin/finanzplaner!12
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/2-recurring-payments-forecast"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #2.
Was
Erkennung wiederkehrender Zahlungen (
detectRecurring()): gruppiert Ausgaben nach normalisiertemmerchant_name(Ziffern und deutsche Monatsnamen werden entfernt, damit z.B. "Miete Juli" und "Miete August" als eine Serie erkannt werden), klassifiziert eine Serie als monatlich/jährlich, sobald mindestens ein Abstand zwischen zwei Buchungen ins jeweilige Fenster fällt (25–35 bzw. 350–380 Tage).Preisänderungs-Hinweis: vergleicht die letzten beiden Beträge einer Serie, ab 50 Cent Differenz wird's als "Betrag geändert" markiert.
Monatsend-Prognose (
GET /api/stats/forecast): aktueller Saldo (Startsaldo + alle Buchungen bis heute) plus die erwarteten, aber noch nicht bis Monatsende gebuchten wiederkehrenden Abbuchungen. Bereits gebuchte Zahlungen der laufenden Serie werden dabei nicht doppelt gezählt.Neue Seite "Abos" listet alle erkannten Serien mit Intervall, letztem Betrag, Preisänderungs-Badge und erwartetem nächsten Termin. Dashboard bekommt bei Monatsansicht eine 4. KPI-Kachel "Prognose Monatsende".
Bewusst außerhalb des Scopes
Keine In-App-Kündigungsfunktion (siehe Begründung in #2 selbst) — nur ein reiner Hinweis, wenn sich ein Betrag geändert hat.
Update: Follow-up aus der ursprünglichen MR-Beschreibung bereits umgesetzt
Branch wurde auf den aktuellen
main(inkl. gemergter #4/MR!11) rebased. Die Gruppierung läuft jetzt übermerchant_namestatt über den rohenbuchungstext(mit Fallback aufbuchungstextfür Altdatensätze ohnemerchant_name). Das ist mehr als nur kosmetisch: die SEPA-Ref-Suffixe in echten Buchungstexten sind oft alphanumerisch, nicht rein numerisch — die alte, nur ziffernstrippende Normalisierung hätte z.B. drei Netflix-Abbuchungen mit Ref-Codes wie "AAABBBCCC"/"XXXYYYZZZ"/"QQQRRRSSS" nicht als eine Serie erkannt. Mitmerchant_namefunktioniert das jetzt zuverlässig (manuell verifiziert).Tests
9 Unit-Tests für die reinen Kernfunktionen (
normalizeForGrouping,classifyInterval,daysBetween/addDays). Zusätzlich end-to-end gegen einen laufenden Server verifiziert: Miete über 4 Monate mit wechselnden Monatsnamen korrekt als eine Serie erkannt, Netflix-Preiserhöhung (14,99€→17,99€) korrekt geflaggt, unregelmäßige REWE-Einkäufe korrekt nicht als wiederkehrend erkannt, Prognose zählt bereits gebuchte Julimiete nicht doppelt, und die merchant_name-basierte Gruppierung über wechselnde Ref-Suffixe hinweg (siehe oben).added 4 commits
maind214e094- [38;2;131;148;150m─────┬─────────────────────────────────────────────────────...dbc3fe8d- [38;2;131;148;150m─────┬─────────────────────────────────────────────────────...Compare with previous version
changed the description
mentioned in commit
5d413e52e4