Batch-Analyse: Import, Pre-Screening und Vollanalyse¶
Status: verbindlicher Zielentwurf
Spezifikationsversion: 1.0.1
Modellbezug: 0.6.2
Stand: 2026-07-05
1. Zweck¶
Kaufobjekt-Import
-> Normalisierung
-> Pre-Screening
-> Finanzierungsprofil
-> Vollanalyse
-> Ergebnisliste
-> selektive Übernahme zu Meine Objekte
Batch verarbeitet Kaufobjekte, nicht Mietbeobachtungen.
2. Architektur¶
Einzelanalyse ─┐
├──> PropertyInput -> Single-Property-Engine
Batch-Vollanalyse ─┘
Pre-Screening ist keine zweite vollständige Berechnungsengine.
3. Zielprozess¶
CSV mit Kaufobjekten
-> BatchImportRun
-> BatchImportRow[]
-> Spaltenmapping
-> Validierung
-> NormalizedListing[]
-> optional RentEstimate
-> Pre-Screening
-> Auswahl und Finanzierungsprofil
-> PropertyInput[]
-> Single-Property-Engine je Objekt
-> BatchAnalysisResult[]
-> Filter, Ranking und Export
-> bewusste Auswahl zu Meine Objekte
CSV ist zunächst das bevorzugte Austauschformat. Direkter XLSX-Import ist nicht Teil des aktuellen Zielvertrags.
4. Batch-Datenstrukturen¶
BatchImportRun enthält mindestens:
batch_run_id
source
input_channel
file_reference
content_hash
created_at
updated_at
status
row_counts
schema_version
mapping_version
BatchImportRow enthält mindestens:
batch_row_id
batch_run_id
row_number
raw_values
mapped_values
validation_errors
normalization_status
pre_screening_status
calculation_status
Zeilenstatus:
imported
invalid
normalized
enriched
pre_screened
calculated
failed
5. Normalisierung¶
Rohdaten werden nie direkt berechnet.
BatchImportRow.raw_values
-> NormalizedListing
-> PropertyInput
Mindestens normalisieren:
Kaufpreis
Wohnfläche
Objektdimensionen
Stadt und Stadtteil
Baujahr und Zustand
Nettokaltmiete
Hausgeld und Kosten
Kaufnebenkosten
Jeder relevante Wert erhält Herkunft, Confidence und gegebenenfalls Szenario-Policy.
6. Pre-Screening¶
Mindestfelder:
purchase_price
living_area_sqm
property_category oder object_type_profile
city oder location_label
monthly_cold_rent oder belastbarer RentEstimate
Immer zulässige Kennzahlen:
Kaufpreis pro m²
Nettokaltmiete pro m²
Bruttomietrendite
Kaufpreisfaktor
Marktmiet-Confidence
Listing-Datenqualität
fehlende Felder
Warnungen
NOI-basierte Kennzahlen sind nur zulässig, wenn zusätzlich transparent vorliegen:
closing_costs_pct
initial_renovation_costs
vacancy_pct
non_recoverable_operating_costs_pa
Fehlende Werte dürfen über versionierte Defaults ergänzt werden. In diesem Fall müssen Herkunft und reduzierte Datenqualität sichtbar bleiben.
Ohne Finanzierungsprofil nicht zulässig:
Darlehen
LTV
DSCR
Kapitaldienst
Cashflow nach Finanzierung
ETF-Vergleich
Investment Rating
7. Marktmiet-Enrichment¶
NormalizedListing
-> RentReferenceLookup
-> RentEstimate
-> PropertyInput.rental.monthly_cold_rent
Nur veröffentlichte Datasets innerhalb ihres Scope sind zulässig. Marktart, Einheit und Möblierung bleiben getrennt. Manuelle oder importierte Mieten werden nicht still überschrieben.
8. Finanzierungsprofil¶
Ein FinancingProfile ist eine versionierte Eingabehilfe, kein zweites Rechenmodell.
financing_profile_id
version
name
requested_equity_contribution_rule
interest_initial_pct
interest_basis
amortization_initial_pct
interest_reset_year
interest_reset_pct
interest_reset_basis
optional maximum_equity_contribution
optional minimum_cash_reserve
Merge-Priorität:
1. objektbezogener finaler Wert
2. objektbezogene manuelle Eingabe
3. bewusst gewähltes FinancingProfile
4. globaler Default
5. missing
Das Profil erzeugt ein normales PropertyInput. Es wird nicht direkt von der Engine gelesen.
9. Vollanalyse¶
Die Vollanalyse benötigt:
vollständiges PropertyInput
Finanzierungsprofil oder vollständige objektbezogene Finanzierung
Szenario-Policies
AnalysisDataQualityAssessment
Sie ruft dieselbe Engine wie die Einzelanalyse auf.
Ein fehlender oder unzureichender Datenqualitätsscore fällt nicht auf 100 zurück. Das Rating lautet UNRATED.
Nur Base beziehungsweise AnalysisResult erhält ein vollständiges Investment Rating. Best und Stress erhalten ScenarioAssessments.
10. Fehlerisolierung¶
Ein Fehler einer Zeile beendet nicht den gesamten Lauf.
calculated
calculated_with_warnings
not_calculated
failed
11. BatchAnalysisResult¶
batch_result_id
batch_run_id
batch_row_id
pre_screening_result
property_input optional
analysis_result optional
summary_kpis optional
rating optional
data_quality_assessment
rent_estimate_reference optional
warnings
calculation_status
calculation_error optional
created_at
Bei Vollanalyse wird das vollständige AnalysisResult als gebundener Snapshot referenziert oder eingebettet. Separate scenario_results dürfen nur als abgeleitete Kompatibilitätsansicht geführt werden.
12. Ergebnisliste und Ranking¶
Gemeinsame UI-Bausteine mit Meine Objekte sind zulässig. Datenverträge und Status bleiben getrennt.
Pre-Screening-Ranking berücksichtigt:
objektbezogene Renditekennzahlen
Datenqualität
Miet-Confidence
fehlende Felder
Warnungen
Vollanalyse-Ranking berücksichtigt zusätzlich:
Investment Rating
Cashflow
Zuschussbedarf
DSCR
Anfangs-LTV
Net vs ETF nach Exit
Stress-Robustheit
UNRATED wird separat behandelt. Rendite darf schlechte Datenqualität oder Liquiditätsrisiken nicht verdecken.
13. Übernahme zu Meine Objekte¶
BatchAnalysisResult != PropertyRecord
Nur erfolgreich vollständig berechnete und bewusst ausgewählte Ergebnisse werden übernommen.
PropertyRecord speichert zusätzlich:
source_type = batch_analysis
batch_run_id
batch_row_id
gebundenen PropertyInput-Snapshot
gebundenes AnalysisResult
Pre-Screening-Ergebnisse ohne Vollanalyse werden nicht übernommen.
14. Aktueller Stand¶
Vorhanden:
Batch-Platzhalterseite
Single-Property-Engine
Marktmiet-Struktur
PropertyRecord-Speicherung
Listenmuster
Noch offen:
CSV-Dateiupload
Mapping
Batch-Arbeitsbereich
Pre-Screening
FinancingProfile-Vertrag als Schema
Mehrfachberechnung
Ranking
Übernahme
15. Umsetzungsreihenfolge¶
Marktmiet-Daten stabilisieren
CSV-Import und Mapping
Normalisierung und Listing-Datenqualität
Pre-Screening
FinancingProfile-Schema
PropertyInput-Erzeugung
Mehrfachberechnung
Ergebnisliste und Ranking
Export
Übernahme zu Meine Objekte
16. Tests¶
fehlende Pflichtfelder
CSV-Spaltenmapping
Normalisierung
Pre-Screening ohne Finanzierung
NOI-Kennzahl nur mit vollständigen oder transparent defaulted Kosten
keine Finanzierungs-KPIs ohne Profil
FinancingProfile-Merge-Priorität
RentEstimate-Match und Fallback
Marktsegmente nicht vermischen
fehlende Datenqualität ergibt UNRATED
Fehlerisolierung
identische Vollanalyse zu identischem Einzel-PropertyInput
Ranking berücksichtigt Datenqualität
selektive Übernahme
keine automatische Übernahme aller Ergebnisse