From 59e5a9cdd4e1b2f6210b8ef8a7a034aef381a2318105916b7283b08d5d28729e Mon Sep 17 00:00:00 2001 From: wlfb Date: Tue, 29 Sep 2026 07:40:33 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20finanz-api=20=E2=80=93=20Doppelz=C3=A4h?= =?UTF-8?q?lungs-Schutz=20(409)=20und=20reservierter=20Pr=C3=A4fix=20Syste?= =?UTF-8?q?m-=20(Tool=20v0.12.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- .claude/skills/finanz-api/SKILL.md | 19 +++++++++++++++++-- .claude/skills/finanzberatung/SKILL.md | 5 ++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.claude/skills/finanz-api/SKILL.md b/.claude/skills/finanz-api/SKILL.md index f9b0576..1762f87 100644 --- a/.claude/skills/finanz-api/SKILL.md +++ b/.claude/skills/finanz-api/SKILL.md @@ -42,7 +42,7 @@ curl -s -H "Authorization: Bearer $KEY" \ ## Kategorien (`/api/categories`) -`GET`/`POST` (`name`). +`GET`/`POST` (`name`). Namen mit Präfix `System-` sind reserviert (422). ```bash curl -s -H "Authorization: Bearer $KEY" http://127.0.0.1:8096/api/categories | jq @@ -82,6 +82,13 @@ curl -s -X POST -H "Authorization: Bearer $KEY" \ `end_date`, `category_id`), `PATCH`/`DELETE /{id}`, sowie `GET /recurring/suggestions` (Muster-Erkennung aus importierten Buchungen). +**Doppelzählungs-Schutz:** `POST`/`PATCH` antworten mit `409` und +`detail.code == "doppelzaehlung_kredit"` (plus `meldung`, `konflikte`), wenn +ein monatlicher Ausgabe-Posten vermutlich einer Kreditrate entspricht. Dann +**den Nutzer fragen**; nur nach ausdrücklicher Zustimmung erneut mit +`"doppelzaehlung_bestaetigt": true` senden. Besser: Kreditraten nur über +`/api/loans` pflegen. + ```bash curl -s -H "Authorization: Bearer $KEY" \ http://127.0.0.1:8096/api/recurring/suggestions | jq @@ -103,6 +110,13 @@ curl -s -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/js `payout_date`, `repayment_type`: `annuity`|`bullet`), `PATCH`/`DELETE /{id}`, `GET /{id}/schedule` (Tilgungsplan: Rate, Zins, Tilgung, Restschuld je Termin). +**Doppelzählungs-Schutz:** `POST`/`PATCH` antworten mit `409` und +`detail.code == "doppelzaehlung_kredit"` (plus `meldung`, `konflikte`), wenn +ein monatlicher Ausgabe-Posten vermutlich einer Kreditrate entspricht. Dann +**den Nutzer fragen**; nur nach ausdrücklicher Zustimmung erneut mit +`"doppelzaehlung_bestaetigt": true` senden. Besser: Kreditraten nur über +`/api/loans` pflegen. + ```bash curl -s -H "Authorization: Bearer $KEY" \ http://127.0.0.1:8096/api/loans/1/schedule | jq @@ -111,7 +125,8 @@ curl -s -H "Authorization: Bearer $KEY" \ ## Szenarien (`/api/scenarios`) `GET`/`POST` (`name`, `description`, `include_recurring`, `include_planned`), -`PATCH`/`DELETE /{id}`. Kredit zuordnen: `POST`/`DELETE +`PATCH`/`DELETE /{id}`. Namen mit Präfix `System-` sind reserviert (422). +Kredit zuordnen: `POST`/`DELETE /{id}/loans/{loan_id}`. Modifikator hinzufügen: `POST /{id}/modifiers` mit `target_type` (`category`|`recurring`), `target_id`, `kind` (`percent`|`absolute`|`remove`), `value`; löschen über `DELETE diff --git a/.claude/skills/finanzberatung/SKILL.md b/.claude/skills/finanzberatung/SKILL.md index 2de0eef..ebbdeda 100644 --- a/.claude/skills/finanzberatung/SKILL.md +++ b/.claude/skills/finanzberatung/SKILL.md @@ -29,7 +29,10 @@ Beratung erfolgt datengetrieben über das Finanzberatungs-Tool (Skill - Kreditbedarf: Kredit anlegen (`POST /api/loans` mit Betrag, Zinssatz, Laufzeit, Auszahlungsdatum, Tilgungsart) und dem Szenario zuordnen - (`POST /api/scenarios/{id}/loans/{loan_id}`). + (`POST /api/scenarios/{id}/loans/{loan_id}`). Antwortet `POST /api/loans` + mit `409` (`doppelzaehlung_kredit`), weil die Rate vermutlich schon als + wiederkehrender Posten eingeplant ist, den Nutzer fragen statt blind mit + `doppelzaehlung_bestaetigt: true` zu bestätigen. - Kürzungspotenzial: Modifikatoren je Kategorie oder wiederkehrendem Posten anlegen (`POST /api/scenarios/{id}/modifiers`, `target_type` `category`|`recurring`, `kind` `percent`|`absolute`|`remove`).