feat: Schlagwörter je Kategorie + auf-/zuklappbares Kategorie-Dropdown
- Manuelle Schlagwörter je Kategorie (Popup mit Chips, Doppelklick zum Bearbeiten) - Treffer über Empfänger ODER Verwendungszweck; längstes Schlagwort gewinnt; Kind-Filter (Ausgabe/Einnahme); wirken nur bei künftigen Importen - Lernende Korrektur-Erkennung: ab 5 Anwendungen und >= 1/3 Korrekturen erscheint eine Prüf-Meldung in den Einstellungen (Behalten/Entfernen) - Neue CategorySelect-Komponente (Baum + Suche, per Portal) ersetzt die nativen optgroup-Selects in Buchungen und Import-Prüfansicht - Migration 0006 (source/applied_count/overridden_count/confirmed, match_field any) - Endpunkte, i18n DE/EN, Tests (test_keywords: 7 neu, gesamt 27 grün) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -345,3 +345,29 @@ class ImportCommitIn(BaseModel):
|
||||
template_id: int | None = None
|
||||
filename: str = ""
|
||||
rows: list[dict] = Field(default_factory=list)
|
||||
|
||||
|
||||
# --- Schlagwörter (manuelle Kategorisierungs-Regeln) -----------------------
|
||||
|
||||
|
||||
class KeywordCreate(BaseModel):
|
||||
word: str = Field(min_length=1, max_length=255)
|
||||
|
||||
|
||||
class KeywordUpdate(BaseModel):
|
||||
word: str = Field(min_length=1, max_length=255)
|
||||
|
||||
|
||||
class KeywordOut(BaseModel):
|
||||
id: int
|
||||
category_id: int
|
||||
word: str
|
||||
|
||||
|
||||
class FlaggedKeywordOut(BaseModel):
|
||||
id: int
|
||||
category_id: int
|
||||
category_name: str
|
||||
word: str
|
||||
applied_count: int
|
||||
overridden_count: int
|
||||
|
||||
Reference in New Issue
Block a user