Zum Inhalt

App-Domänen, Analysewege und Datenflüsse

Status: verbindlicher Zielentwurf
Spezifikationsversion: 1.0.2
Modellbezug: 0.6.2
Implementierungsbezug: frontend-mvp-0.2.5
Stand: 2026-07-05

1. Zweck

Diese Spezifikation trennt verbindlich:

Einzelanalyse
Batch-Analyse
Meine Objekte
Marktmiet-Daten

Die Bereiche dürfen gemeinsame UI-Komponenten und dieselbe Berechnungsengine verwenden. Datenmodelle, Speicherbereiche, Statuswerte und fachliche Verantwortlichkeiten bleiben getrennt.

2. Zielbild

Immohai besitzt zwei Analysewege:

Einzelanalyse
Batch-Analyse

Beide erzeugen normalisierte PropertyInput-Objekte und verwenden dieselbe Single-Property-Engine.

Ausgewählte Ergebnisse können bewusst in die persönliche Sammlung übernommen werden:

Meine Objekte

Marktmiet-Daten bilden einen separaten Bereich und liefern RentEstimate-Werte an beide Analysewege.

3. Navigation

Normale App:

Einzelanalyse
Batch-Analyse
Meine Objekte
Dokumentation

Technische Seiten:

/                    Einzelanalyse
/batch.html           Batch-Analyse
/objects.html         Meine Objekte

Separater Adminbereich:

/admin.html
/admin-data-import.html

4. Domäne Einzelanalyse

manuelle Objektdaten
-> optionale Marktmietschätzung
-> PropertyInput
-> Single-Property-Engine
-> AnalysisResult
-> optional bewusst zu Meine Objekte hinzufügen

Eine Berechnung wird nicht automatisch dauerhaft gespeichert.

Mietwerte können stammen aus manueller Eingabe, Ist-Miete, veröffentlichtem Marktmiet-Dataset, offizieller Referenz oder WG-Schätzung. Herkunft, rent_basis, Confidence und Szenario-Policy bleiben sichtbar.

5. Domäne Batch-Analyse

CSV-Kaufobjektdatei
-> BatchImportRun
-> Spaltenzuordnung
-> Validierung
-> NormalizedListing[]
-> optionales RentEstimate
-> Pre-Screening
-> Auswahl und FinancingProfile
-> PropertyInput[]
-> Single-Property-Engine je Objekt
-> BatchAnalysisResult[]
-> Filter, Ranking und Export
-> bewusste Auswahl zu Meine Objekte

Pre-Screening ist keine vollständige Investmentberechnung. Ohne Finanzierungsprofil sind keine Finanzierungs-KPIs und kein Investment Rating zulässig.

Temporäre Batch-Ergebnisse bleiben außerhalb von Meine Objekte, bis sie ausdrücklich übernommen werden.

6. Domäne Meine Objekte

Meine Objekte ist die persönliche Sammlung bewusst gespeicherter Investitionsanalysen.

Herkunft:

manual_analysis
batch_analysis
imported_analysis

Funktionen:

Speichern
Laden
Status pflegen
Filtern
Sortieren
Pagination
Mehrfachauswahl
Vergleichen
Exportieren
Auswerten
Notizen
Tags
Reports

Status:

watchlist
in_review
rejected
archived

Keine Portfolio-Summen über Kaufpreise, Darlehen, Eigenkapital oder Zuschussbedarf. Zulässig sind Anzahlen, Quoten, Mediane, Verteilungen, Rankings und Segmentauswertungen.

7. Domäne Marktmiet-Daten

CSV-Mietdaten
-> RentImportRun
-> RentObservation[]
-> Validierung
-> Dublettenprüfung
-> Ausreißerprüfung
-> Aggregation
-> RentAreaStats[]
-> RentReferenceDataset
-> bewusste Veröffentlichung innerhalb eines Scope
-> RentEstimate

Nur published innerhalb seines scope_id darf automatisch verwendet werden.

Gemeinsame Schnittstelle:

RentEstimate
-> PropertyInput.rental.monthly_cold_rent

Persönliche Analysen fließen nicht automatisch als Mietreferenzen zurück.

8. Marktmiet-Segmentierung

Automatisch verwendbare Standardsegmente trennen mindestens:

rent_type
market_type
unit_scope
furnished
property_type
city

Angebotsmieten, Bestandsmieten und offizielle Referenzen werden nicht unkommentiert vermischt. Zimmer- und Wohnungsmieten sowie möblierte und unmöblierte Daten bleiben getrennt.

9. Datenmodelle

Analyse:

PropertyInput
ScenarioInput
AnnualProjectionRow
ScenarioAssessment
ScenarioRating
ScenarioResult
AnalysisResult
PropertyRecord

Batch:

BatchImportRun
BatchImportRow
NormalizedListing
FinancingProfile
BatchAnalysisResult

Marktmiet-Daten:

RentImportRun
RentObservation
RentAreaStats
RentReferenceDataset
RentEstimate

Die vollständigen Feldverträge stehen in docs/specification/data-quality-and-validation/data-model.md und den jeweiligen führenden Detail-Spezifikationen.

10. Metadatenbegriffe

Nicht als universelles source_type vermischen:

analysis_origin: fachlicher Analyseweg
input_channel: technischer Eingangskanal
value_origin: Herkunft eines einzelnen Werts
source_reference: konkrete Quellenreferenz
source_kind: Art der externen Quelle

PropertyRecord.source_type bleibt als gespeicherte Analyseherkunft kompatibel und verwendet ausschließlich manual_analysis, batch_analysis oder imported_analysis.

11. Getrennte Speicherbereiche

Aktuell:

immohai.propertyRecords.v1
immohai.marketRentDatabase.v1

Konzeptionell:

MyObjectsStore
RentReferenceStore
BatchWorkspaceStore

Bestehende Storage Keys werden nicht ohne Migration umbenannt.

12. Dataset-Lifecycle

draft
published
archived

Pro scope_id darf genau eine Version published sein. Ein neuer veröffentlichter Stand archiviert nur die bisher veröffentlichte Version desselben Scope.

13. Statusarten bleiben getrennt

Meine Objekte:
  watchlist, in_review, rejected, archived

Mietbeobachtungen:
  valid, warning, outlier, excluded, duplicate, incomplete

Mietdatasets:
  draft, published, archived

Batch-Zeilen:
  imported, invalid, normalized, enriched, pre_screened, calculated, failed

14. Wiederverwendbare UI-Komponenten

DataTable
FilterToolbar
ActiveFilterChips
Pagination
SelectionActions
CsvExport
SummaryCards
DistributionChart
SegmentTable

Grundsatz:

UI wiederverwenden
Datenmodelle und Status trennen

15. Übernahmeregeln

Einzelanalyse zu Meine Objekte:

gültige Berechnung
bewusste Nutzeraktion
gebundenen PropertyInput- und Ergebnis-Snapshot speichern
Analyseherkunft manual_analysis

Batch zu Meine Objekte:

nur vollständig berechnete Ergebnisse
bewusste Nutzeraktion
Analyseherkunft batch_analysis
batch_run_id und batch_row_id speichern

Marktmiet-Daten zu Analyse:

nur published Dataset innerhalb seines Scope
RentEstimate mit Quelle, confidence und confidence_level
bewusste Übernahme oder transparenter Enrichment-Schritt
manueller Override bleibt möglich

16. Umsetzungsreihenfolge

Die verbindliche Reihenfolge steht ausschließlich in docs/roadmap/roadmap.md. Diese Architekturdatei definiert keine abweichende Priorisierung.

17. Abnahmekriterien

Einzel- und Batch-Vollanalyse verwenden dieselbe Engine.
Batch-Ergebnisse werden nicht automatisch persönliche Objekte.
Meine Objekte enthält keine Marktmiet-Rohdaten.
Marktmiet-Daten enthält keine persönlichen Investitionsstatus.
Nur veröffentlichte Mietdatasets innerhalb ihres Scope liefern automatische RentEstimate-Werte.
PropertyRecord und RentObservation bleiben getrennt.
UI-Komponenten können ohne Vermischung der Domänen wiederverwendet werden.