Commit Graph
84 Commits
Author SHA256 Message Date
rdmsandClaude Opus 5.5 2a5cd141f2 fix: node --test bekommt explizite Dateiliste statt Verzeichnis (A11-T4 Fix-Runde 1)
tests/test_sort_js.py übergab bisher tests/js als Verzeichnis an
`node --test`; unter Node 22 führt das zu MODULE_NOT_FOUND, weil Node
einen Verzeichnispfad hier nicht auflöst (Fable-Fund). Fix: Testdateien
per Glob (*.test.js, sortiert) einzeln übergeben. Verifiziert unter
Node 22 via Podman mit exakt dieser Argumentliste: 14/14 Tests grün,
0 geskippt. Gesamtsuite unverändert bei 248 passed, 3 skipped.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 19:27:14 +02:00
rdmsandClaude Opus 5.5 4458300f43 feat: Tabellen per Spaltenkopf sortierbar (A11-T4)
Neues static/sort.js sortiert Tabellen clientseitig per Klick auf den
Spaltenkopf (⇅/▲/▼): Datum TT.MM.JJJJ, deutsche Zahlen/Beträge, sonst
Text (Intl.Collator 'de'). Sortierwert optional per td[data-sort]
(Punkt-Dezimal/ISO) überschreibbar, th[data-nosort] bekommt keinen
Button, table[data-sort-mode="server"] wird übersprungen (Buchungen
sortiert serverseitig, folgt in Task 5). Bearbeiten-/Tilgungsplan-
Zeilen (tr[data-sort-follow]) wandern mit ihrer Vorzeile mit.
Initialisierung über htmx.onLoad, greift auch bei nachgeladenen
Fragmenten.

Templates entsprechend annotiert (Planung, Szenarien, Admin, Index,
Salden, Import-Liste, Buchungen); Salden-Gesamtzeile dafür in ein
tfoot verschoben. test_gui.py::test_gui_zeigt_deutsche_betragsformate
angepasst, da das neue machinenlesbare data-sort-Attribut bewusst
Punkt-Dezimal führt (Interface-Konvention) - die Prüfung auf deutsches
Format im sichtbaren Text bleibt bestehen.

JS-Unit-/DOM-Tests unter tests/js (node --test, DOM-Teil optional via
jsdom), pytest-Wrapper skip ohne node (Fable-Gate führt sie per
Podman aus). Suite: 248 passed, 3 skipped (vorher 242/2).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 19:22:34 +02:00
rdmsandClaude Opus 5.5 42b410446d feat: Grafana-Panel Planung nach Kategorie inkl. Kreditraten (A11-T3)
Neue Tabelle planning_monthly (Monatssummen je Kategorie aus wiederkehrenden
Posten, Einmalposten und allen Kreditraten), Service planning_chart mit
refresh_planning_chart (Advisory-Lock, komplette Neuschreibung), GUI-Hooks
in index/planung_page ueber _safe_refresh, neues Barchart-Panel im
Grafana-Dashboard (Panel 5).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 19:15:26 +02:00
rdmsandClaude Opus 5.5 979e1c0edc fix: Szenario-Vergleich zeigt vor heute Ist-Saldo, veraltete Szenarien werden neu gerechnet (A11-T2)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 19:10:51 +02:00
rdmsandClaude Opus 5.5 32d78fdbe1 fix: German quote style U+201C instead of U+201D (A11-T1)
Corrected closing quotation mark in hx-confirm attribute and test assertions
from U+201D (RIGHT DOUBLE QUOTATION MARK) to U+201C (LEFT DOUBLE QUOTATION
MARK), matching German typographic convention („...") and house style (line 114).

Changes by code point:
- finance/app/templates/szenarien.html line 17: 1 × U+201D → U+201C
- finance/tests/test_gui.py lines 501, 521: 2 × U+201D → U+201C

Template lines 17 and 114 now have identical quote code points: U+201E...U+201C.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 19:07:31 +02:00
rdmsandClaude Opus 5.5 8b637f91b3 fix: HTML attribute quoting in hx-confirm, test assertion precision (A11-T1)
Critical quoting fix: the hx-confirm attribute now uses U+201D (") for the
closing German quote instead of ASCII " (0x22), which was terminating the
attribute early and losing the confirm message text. The template now
correctly contains: hx-confirm="Szenario „{{ sc.name }}" mit allen..."

Test enhancement: restored the complete assertion text from the brief and
added HTML parsing verification to ensure the attribute value matches exactly
with correct typographic quotes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 19:05:37 +02:00
rdmsandClaude Opus 5.5 57ab6dae4a feat: Szenario per GUI löschen, Name System-Ist reserviert (A11-T1)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 19:01:21 +02:00
rdmsandClaude Opus 4.8 224baba326 fix: Grafana-Zeitfenster deckt Projektionshorizont ab (Szenario-Vergleich sichtbar)
Das Szenario-Vergleich-Panel zeichnet die Projektion (Zukunft, horizon_days ab
heute). Kein Panel nutzt $__timeFilter, daher begrenzt allein das
Dashboard-Zeitfenster die Anzeige. Mit time.to='now' wurde die gesamte Kurve ab
morgen abgeschnitten (nur ~4 Tage <= heute sichtbar, Y-Achse auf deren schmalen
Bereich fixiert). Fix: time.to='now+19M' deckt den 548-Tage-Horizont ab.
Regressionstest tests/test_grafana_dashboard.py haelt die Invariante fest.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 20:39:23 +02:00
rdmsandClaude Opus 4.8 51d85c8de6 chore: Release v0.10.0 (Reverse-Proxy-Tauglichkeit)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 07:31:27 +02:00
rdms df5b29d8ff feat: uvicorn Proxy-Headers fuer Reverse-Proxy-Betrieb 2026-07-21 07:14:53 +02:00
rdms a575c57d5b feat: Grafana-Links aus FB_GRAFANA_PUBLIC_URL (Sub-Pfad-tauglich) 2026-07-21 07:11:27 +02:00
rdms 52f527a375 feat: Session-Cookie secure-Flag per FB_SESSION_COOKIE_SECURE 2026-07-21 07:06:42 +02:00
rdms fa2d32aa8f fix: config-Kommentar auf neutrale Beispiel-Domain (fb.example.de) 2026-07-21 07:04:47 +02:00
rdms e061796997 feat: FB_GRAFANA_PUBLIC_URL + FB_SESSION_COOKIE_SECURE in Settings 2026-07-20 22:56:26 +02:00
rdmsandClaude Fable 5 8eee62ee19 fix: Datenschutz-Scrub in Tests/Kommentaren + Spec-Nachtrag Vorschlags-Algorithmus
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 21:59:29 +02:00
rdmsandClaude Fable 5 aff8e9b28d fix: Bestandsabgleich per Token-Match und Volatilitaets-Hinweis fuer Vorschlaege
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 21:46:10 +02:00
rdmsandClaude Fable 5 a520390e31 chore: Version 0.9.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 21:28:29 +02:00
rdmsandClaude Fable 5 220d1fc802 fix: hinweis-Betrag im Vorschlag deutsch formatiert
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 21:28:15 +02:00
rdmsandClaude Fable 5 bf3f56118e feat: Vorschlaege mit Rhythmus, Start und Hinweis
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 21:26:48 +02:00
rdmsandClaude Fable 5 28d1267f0c feat: Vorschlags-Algorithmus v2 (Rhythmen, letzter Betrag, Aktiv-Check, Merge)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 21:20:04 +02:00
rdmsandClaude Fable 5 d6659d8b18 chore: Version 0.8.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 14:18:15 +02:00
rdmsandClaude Fable 5 4431640eb2 feat: Kategorien-Verwaltung auf der Admin-Seite
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 14:17:48 +02:00
rdmsandClaude Fable 5 b21d7b9839 feat: Eintrags-Formular mit Paar-Layout und Gesperrt-Kennzeichnung
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 14:06:32 +02:00
rdmsandClaude Fable 5 f03249bff1 feat: eigene Szenarien-Seite /szenarien
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 13:59:03 +02:00
rdmsandClaude Fable 5 421899b922 chore: Version 0.7.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 12:51:17 +02:00
rdmsandClaude Fable 5 cb44194daf feat: Szenario-Eintraege als eine editierbare Tabelle
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 12:51:04 +02:00
rdmsandClaude Fable 5 4843f2e130 feat: PATCH-Endpunkte fuer Szenario-Modifikatoren und -Einmalzahlungen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 12:43:01 +02:00
rdmsandClaude Fable 5 a192866cc4 chore: Version 0.6.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:59:58 +02:00
rdmsandClaude Fable 5 033c41f449 feat: Szenario-GUI mit Ende-Modifikator und Einmalzahlungen je Szenario
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:59:42 +02:00
rdmsandClaude Fable 5 13795fce25 feat: API fuer Szenario-Ende-Modifikator und szenario-eigene Einmalzahlungen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:52:15 +02:00
rdmsandClaude Fable 5 5519037688 feat: Engine+Schema fuer Szenario-Ende und szenario-eigene Einmalzahlungen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:46:52 +02:00
rdmsandClaude Fable 5 aa1884c31e feat: Inline-Bearbeiten fuer Fixposten, Einmalposten, Kredite und Szenario-Kopf
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:42:04 +02:00
rdmsandClaude Fable 5 cbcf2e0439 feat: Start/Ende fuer Fixposten in der GUI + Datumsvalidierung
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:35:32 +02:00
rdmsandClaude Fable 5 805cb4d852 feat: Betragseingabe mit Komma (data-type=amount in json-form)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:30:58 +02:00
rdmsandClaude Fable 5 fe0e1b5e93 feat: deutsche Betragsanzeige (eur-Filter) und deutsche GUI-Labels
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:23:26 +02:00
rdmsandClaude Fable 5 1ef297ab89 chore: Version 0.5.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 08:46:08 +02:00
rdmsandClaude Fable 5 09b34ae13b fix: lueckenlose taegliche Saldo-Reihen fuer Grafana
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 08:32:36 +02:00
rdmsandClaude Fable 5 f5fa3e45e8 feat: Admin-Seite mit Passwortaenderung und Regel-Neuanwendung
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 08:24:33 +02:00
rdmsandClaude Fable 5 c2b5f6eaa3 chore: Version 0.4.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 22:08:44 +02:00
rdmsandClaude Fable 5 1b888307e9 fix: DKB-Empfaenger/Zweck-Split per CSV-Ground-Truth, Vergleichswerkzeug
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 22:08:37 +02:00
rdmsandClaude Fable 5 7a0f71aa8c feat: Salden-Seite mit Stichtag und Monatsuebersicht
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:53:23 +02:00
rdmsandClaude Fable 5 ea4858c4de feat: CSV-Import ueber bestehende Pipeline mit dreiwertiger Saldo-Pruefung
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:45:53 +02:00
rdmsandClaude Fable 5 e2d713e960 feat: CSV-Parser fuer DKB/VR/HVB-Kontoumsatz-Exporte
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:34:48 +02:00
rdmsandClaude Fable 5 f6a53b7e56 feat: Konto-Saldo-Anker mit ankerbasierter Saldenrechnung
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:25:04 +02:00
rdmsandClaude Fable 5 6b02fa3d85 chore: CSV-Kontoexporte in fixtures gitignoren (echte Daten)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 21:10:17 +02:00
rdmsandClaude Fable 5 18b738738b test: UX-Regressionstests fuer Vorschlaege-Fieldset und Import-Button-Matrix
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 17:18:03 +02:00
rdmsandClaude Fable 5 06392c0fec fix: tolerante GUI-Filter, sichtbare Bedienelemente, fixierte Navigation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 17:09:35 +02:00
rdmsandClaude Fable 5 e7855a7bda feat: Import-Rollback fuer bestaetigte Auszuege (v0.3.0)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 16:40:56 +02:00
rdmsandClaude Fable 5 d71c22adce feat: Buchungs-Pagination, Inbox-Scan-Button, Grafana-Direktansteuerung, UI-Feinschliff
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 16:18:54 +02:00
rdmsandClaude Fable 5 0bad69bf42 fix: Final-Review-Feinschliff (DR-Kommentar korrigiert, SameSite-Pin, Grafana-Link-Hostname)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 15:29:38 +02:00