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:
@@ -0,0 +1,32 @@
|
||||
"""Schlagwörter/Regeln erweitern: Quelle + Korrektur-Zähler + „behalten".
|
||||
|
||||
Manuelle Schlagwörter je Kategorie und die lernende Korrektur-Erkennung nutzen
|
||||
dieselbe Tabelle ``categorization_rules`` wie die automatisch gelernten Regeln.
|
||||
|
||||
Revision ID: 0006
|
||||
Revises: 0005
|
||||
Create Date: 2026-08-19
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision = "0006"
|
||||
down_revision = "0005"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
with op.batch_alter_table("categorization_rules") as batch:
|
||||
batch.add_column(sa.Column("source", sa.String(length=32), nullable=False, server_default="learned"))
|
||||
batch.add_column(sa.Column("applied_count", sa.Integer(), nullable=False, server_default=sa.text("0")))
|
||||
batch.add_column(sa.Column("overridden_count", sa.Integer(), nullable=False, server_default=sa.text("0")))
|
||||
batch.add_column(sa.Column("confirmed", sa.Boolean(), nullable=False, server_default=sa.text("0")))
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
with op.batch_alter_table("categorization_rules") as batch:
|
||||
batch.drop_column("confirmed")
|
||||
batch.drop_column("overridden_count")
|
||||
batch.drop_column("applied_count")
|
||||
batch.drop_column("source")
|
||||
Reference in New Issue
Block a user