From e40442b73b72003cf55289f685bedee988403ab9135c0968f84fb570747b274d Mon Sep 17 00:00:00 2001 From: wlfb Date: Sun, 19 Jul 2026 15:02:19 +0200 Subject: [PATCH] feat: Hilfe-Seite mit Gebrauchsanleitung Co-Authored-By: Claude Fable 5 --- finance/app/routers/gui.py | 5 ++ finance/app/templates/base.html | 1 + finance/app/templates/hilfe.html | 82 ++++++++++++++++++++++++++++++++ finance/tests/test_gui.py | 5 +- 4 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 finance/app/templates/hilfe.html diff --git a/finance/app/routers/gui.py b/finance/app/routers/gui.py index 113d728..f29a3f3 100644 --- a/finance/app/routers/gui.py +++ b/finance/app/routers/gui.py @@ -159,6 +159,11 @@ def _scenario_rows(session: Session, scenarios: list, loans: list) -> list[dict] return rows +@router.get("/hilfe", dependencies=[Depends(gui_session)]) +def hilfe_page(request: Request): + return templates.TemplateResponse(request, "hilfe.html", {}) + + @router.get("/planung", dependencies=[Depends(gui_session)]) def planung_page(request: Request, session: Session = Depends(get_session)): categories = session.execute(select(Category)).scalars().all() diff --git a/finance/app/templates/base.html b/finance/app/templates/base.html index 16a4cb9..8d2ffbd 100644 --- a/finance/app/templates/base.html +++ b/finance/app/templates/base.html @@ -13,6 +13,7 @@ Import Buchungen Planung + Hilfe Grafana
diff --git a/finance/app/templates/hilfe.html b/finance/app/templates/hilfe.html new file mode 100644 index 0000000..6833512 --- /dev/null +++ b/finance/app/templates/hilfe.html @@ -0,0 +1,82 @@ +{% extends "base.html" %} +{% block title %}Hilfe – Finanzberatung{% endblock %} +{% block content %} +

Gebrauchsanleitung

+ +

Was dieses Tool ist

+

+ Liquiditätsplanung auf Basis echter Kontoauszüge: Ist-Stand aus importierten + Auszügen, Zukunft aus gepflegten Planposten und durchgerechneten Szenarien. +

+ +

Konzepte

+
    +
  • + Konten: entstehen automatisch beim ersten Import (per IBAN). + Über die Übersicht umbenennbar (z. B. "DKB Giro"). +
  • +
  • + Kontoauszug-Import: PDF in die Drop-Zone auf der + Import-Seite ziehen (oder in die Inbox + ~/.local/share/finance_pod/data/inbox/ legen und "Inbox + scannen"). Jeder Import wird geprüft (Anfangssaldo + Buchungen = Endsaldo) + und landet als Entwurf: erst nach Kontrolle der Vorschau "Übernehmen" + klicken. Duplikate werden erkannt und nicht doppelt übernommen. +
  • +
  • + Kategorien & Regeln: Buchungen lassen sich kategorisieren; + eine Regel ("Muster im Text → Kategorie") kategorisiert künftige Importe + automatisch. Regel direkt aus einer Buchung erzeugen: Button in der + Buchungsliste. +
  • +
  • + Wiederkehrende Posten: Miete, Gehalt, Abos – mit Rhythmus + (monatlich/quartalsweise/jährlich) und Fälligkeitstag. Der + Vorschlags-Knopf erkennt Kandidaten aus mind. 3 Monaten gleichartiger + Buchungen. +
  • +
  • + Einmalposten: einzelne künftige Zahlungen (z. B. + Steuernachzahlung). +
  • +
  • + Kredite: Annuität oder endfällig; Tilgungsplan + aufklappbar. Ein Kredit wirkt erst, wenn er einem Szenario zugeordnet ist. +
  • +
  • + Szenarien: eine "Was-wäre-wenn"-Rechnung. Basis = alle + wiederkehrenden Posten + Einmalposten. Varianten entstehen durch Zuordnen + von Krediten und Modifikatoren (Kategorie oder Posten prozentual/absolut + kürzen oder ganz streichen). "Durchrechnen" liefert: tiefster Kontostand + mit Datum, erstes Datum unter 0 und unter der Warnschwelle. +
  • +
  • + Grafana: Kontostand-Verläufe, Monatsausgaben nach + Kategorie und der Szenario-Vergleich als Kurven (einmal mit demselben + Passwort wie hier anmelden, dann erscheint das Dashboard auch in der + Übersicht). +
  • +
+ +

Empfohlener Arbeitsablauf

+
    +
  • Monatlich: neue Auszüge importieren, Vorschau prüfen, übernehmen.
  • +
  • + Unkategorisierte Buchungen durchsehen; für Wiederkehrendes Regeln + anlegen. +
  • +
  • Planung pflegen: Vorschläge prüfen, Einmalposten eintragen.
  • +
  • + Fragestellung ("Können wir uns X leisten?") als Szenario-Varianten + abbilden und durchrechnen; Entscheidung anhand Tiefpunkt und + Unterschreitungsdaten treffen, Kurven in Grafana vergleichen. +
  • +
+ +

Grundregeln

+
    +
  • Bestätigte Buchungen sind die Wahrheit – nie ändern, nur kategorisieren.
  • +
  • Zukunft ausschließlich über Szenarien planen.
  • +
  • Empfehlungen immer mit durchgerechneten Zahlen begründen.
  • +
+{% endblock %} diff --git a/finance/tests/test_gui.py b/finance/tests/test_gui.py index a70f379..6fb85f0 100644 --- a/finance/tests/test_gui.py +++ b/finance/tests/test_gui.py @@ -1,5 +1,5 @@ def test_pages_require_login(client): - for path in ("/", "/buchungen", "/import", "/planung"): + for path in ("/", "/buchungen", "/import", "/planung", "/hilfe"): r = client.get(path, follow_redirects=False) assert r.status_code in (302, 303), path assert r.headers["location"] == "/login" @@ -7,10 +7,11 @@ def test_pages_require_login(client): def test_pages_render_after_login(client): client.post("/login", data={"username": "admin", "password": "geheim"}) - for path in ("/", "/buchungen", "/import", "/planung"): + for path in ("/", "/buchungen", "/import", "/planung", "/hilfe"): r = client.get(path) assert r.status_code == 200 assert "Finanzberatung" in r.text + assert "Gebrauchsanleitung" in client.get("/hilfe").text def test_import_page_has_dropzone_and_list(client):