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`).