refactor: Tilgungsplan-Helfer schedule_for, Kredit-Laufzeit 1–1200 Monate (A14-T5)
- Neuer schedule_for() in app/engine/loans.py: vereinheitlicht Tilgungsplan-Erstellung - Laufzeit-Validierung in LoanIn und LoanPatch: 1–1200 Monate - Aufrufstellen aktualisiert (routers/planning.py, services/breakdown.py, services/projection_service.py, services/planning_chart.py) - Keine direkten loan_schedule(Decimal(...)) Aufrufe außerhalb engine/loans.py mehr - Tests für schedule_for und Laufzeit-Grenzen (1, 1200, sowie 0/-5/1201 Ablehnung) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -27,3 +27,21 @@ def test_bullet_loan():
|
||||
assert all(i.principal == 0 for i in plan[:-1])
|
||||
assert plan[-1].principal == Decimal("10000")
|
||||
assert plan[-1].remaining == Decimal("0.00")
|
||||
|
||||
|
||||
def test_schedule_for_entspricht_loan_schedule():
|
||||
from types import SimpleNamespace
|
||||
from app.engine.loans import schedule_for
|
||||
kredit = SimpleNamespace(principal="1200.00", annual_rate_pct="3.00", term_months=12,
|
||||
payout_date=date(2030, 1, 31), repayment_type="annuity")
|
||||
assert schedule_for(kredit) == loan_schedule(Decimal("1200.00"), Decimal("3.00"), 12,
|
||||
date(2030, 1, 31), "annuity")
|
||||
|
||||
|
||||
def test_keine_manuelle_tilgungsplan_konvertierung_mehr():
|
||||
from pathlib import Path
|
||||
app_dir = Path(__file__).resolve().parent.parent / "app"
|
||||
engine_loans = app_dir / "engine" / "loans.py"
|
||||
treffer = [str(p.relative_to(app_dir)) for p in app_dir.rglob("*.py")
|
||||
if p != engine_loans and "loan_schedule(Decimal(" in p.read_text()]
|
||||
assert treffer == []
|
||||
|
||||
Reference in New Issue
Block a user