feat: Phase 2 – Budget-Engine + Direktzugriff (http://IP:Port)
Budget: - Modelle + Migration 0003: budget_template_lines, planned_income_lines, budget_periods, budget_period_lines. - services/budget: Perioden-Grenzen (einstellbarer Starttag, Label nach Endmonat), Standard-Vorlage vs. Monats-Override (Snapshot-on-Customize), Soll/Ist inkl. budgetierter Sparen-Transfers, geplante Einnahmen (Soll/Ist). - routers/budgets: Vorlage, geplante Einnahmen (CRUD), Monats-Soll/Ist, Monats-Override, Zurücksetzen. pytest: Perioden, Soll/Ist, Override/Reset, Einnahmen. - Frontend: Budget-Seite (Monat + Standard-Budget), Fortschrittsbalken grün/rot, Monats-Navigation, editierbare Soll-Beträge; Sparen-Option im Transfer-Formular. Deployment-Fix (Nutzer-Anforderung: http://IP:Port muss funktionieren): - Dienst bindet an APP_BIND_HOST=0.0.0.0 (direkt im LAN erreichbar). - APP_COOKIE_SECURE=false als Standard (sonst kein Login über reines HTTP); für reinen HTTPS-Betrieb umstellbar. Doku + install.sh entsprechend angepasst. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+24
-1
@@ -150,6 +150,29 @@
|
||||
"allTypes": "Alle Typen",
|
||||
"deleteConfirm": "Diese Buchung löschen?",
|
||||
"amountRequired": "Bitte einen Betrag eingeben.",
|
||||
"accountRequired": "Bitte ein Konto wählen."
|
||||
"accountRequired": "Bitte ein Konto wählen.",
|
||||
"budgetAsSavings": "Als Sparen ins Budget zählen",
|
||||
"budgetCategory": "Budget-Kategorie"
|
||||
},
|
||||
"budget": {
|
||||
"title": "Budget",
|
||||
"monthMode": "Monat",
|
||||
"templateMode": "Standard-Budget",
|
||||
"income": "Einnahmen",
|
||||
"expenses": "Ausgaben",
|
||||
"planned": "Geplant",
|
||||
"totalIncome": "Einnahmen gesamt",
|
||||
"totalExpense": "Ausgaben gesamt",
|
||||
"reset": "Auf Standard zurücksetzen",
|
||||
"resetTitle": "Monat zurücksetzen",
|
||||
"resetConfirm": "Diesen Monat auf das Standard-Budget zurücksetzen? Die Anpassungen dieses Monats gehen verloren.",
|
||||
"templateHint": "Das Standard-Budget gilt für jeden Monat, solange du ihn nicht einzeln anpasst.",
|
||||
"addIncome": "Geplante Einnahme",
|
||||
"editIncome": "Einnahme bearbeiten",
|
||||
"noIncome": "Noch keine geplanten Einnahmen.",
|
||||
"deleteIncomeConfirm": "Diese geplante Einnahme löschen?",
|
||||
"incomeLabel": "Bezeichnung",
|
||||
"incomeCategory": "Kategorie",
|
||||
"targetAccount": "Zielkonto"
|
||||
}
|
||||
}
|
||||
|
||||
+24
-1
@@ -150,6 +150,29 @@
|
||||
"allTypes": "All types",
|
||||
"deleteConfirm": "Delete this transaction?",
|
||||
"amountRequired": "Please enter an amount.",
|
||||
"accountRequired": "Please choose an account."
|
||||
"accountRequired": "Please choose an account.",
|
||||
"budgetAsSavings": "Count as savings in the budget",
|
||||
"budgetCategory": "Budget category"
|
||||
},
|
||||
"budget": {
|
||||
"title": "Budget",
|
||||
"monthMode": "Month",
|
||||
"templateMode": "Standard budget",
|
||||
"income": "Income",
|
||||
"expenses": "Expenses",
|
||||
"planned": "Planned",
|
||||
"totalIncome": "Total income",
|
||||
"totalExpense": "Total expenses",
|
||||
"reset": "Reset to standard",
|
||||
"resetTitle": "Reset month",
|
||||
"resetConfirm": "Reset this month to the standard budget? This month's adjustments will be lost.",
|
||||
"templateHint": "The standard budget applies to every month until you adjust a month individually.",
|
||||
"addIncome": "Planned income",
|
||||
"editIncome": "Edit income",
|
||||
"noIncome": "No planned income yet.",
|
||||
"deleteIncomeConfirm": "Delete this planned income?",
|
||||
"incomeLabel": "Label",
|
||||
"incomeCategory": "Category",
|
||||
"targetAccount": "Target account"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user