API updadte

This commit is contained in:
2025-11-09 11:27:21 +01:00
parent 77206224a2
commit 4953d192c0
8 changed files with 2343 additions and 784 deletions

275
docs/features.md Normal file
View File

@@ -0,0 +1,275 @@
# Features & Funktionalität
[← Zurück zur Hauptseite](../README.md)
## Übersicht
Der Immorechner bietet zwei Hauptkomponenten:
1. **Web-Frontend** - Interaktive Benutzeroberfläche für Endanwender
2. **REST-API** - Programmgesteuerter Zugriff für Integrationen
---
## Frontend-Features
### 1. Immobilienrechner (Startseite)
**URL:** http://localhost:8080/
Der Immobilienrechner ermöglicht die schnelle Berechnung wichtiger Kennzahlen einer Immobilie.
#### Eingabefelder
| Feld | Typ | Beschreibung | Pflicht |
|------|-----|--------------|---------|
| Adresse | Text | Vollständige Adresse der Immobilie | Nein |
| Kaufpreis | Zahl | Kaufpreis in Euro | Empfohlen |
| Wohnfläche | Zahl | Wohnfläche in m² | Ja |
| Nutzfläche | Zahl | Nutzfläche in m² | Nein |
| Zimmer | Zahl | Anzahl der Zimmer | Empfohlen |
| Baujahr | Zahl | Baujahr der Immobilie | Nein |
| Etage | Zahl | Stockwerk | Nein |
| Immobilientyp | Auswahl | Wohnung, Haus oder Gewerbe | Empfohlen |
| Bundesland | Auswahl | Deutsches Bundesland | Empfohlen |
| Heizungstyp | Auswahl | Ölheizung, Gasheizung, Wärmepumpe, Pelletheizung | Nein |
| Abschreibungszeit | Zahl | Jahre für Abschreibung (Standard: 50) | Nein |
| Garage | Checkbox | Garage vorhanden? | Nein |
#### Live-Berechnungen
Alle Werte werden **in Echtzeit** berechnet (ohne Seitenreload):
1. **Gesamtfläche**
- Formel: Wohnfläche + Nutzfläche
- Einheit: m²
2. **Preis pro m² Wohnfläche**
- Formel: Kaufpreis / Wohnfläche
- Einheit: €/m²
3. **Grunderwerbsteuer**
- Formel: Kaufpreis × Grunderwerbsteuersatz des Bundeslandes
- Sätze: 3,5% (Bayern) bis 6,5% (Brandenburg, NRW, Saarland, SH)
- Einheit: €
4. **Gesamtkosten**
- Formel: Kaufpreis + Grunderwerbsteuer
- Einheit: €
5. **Jährliche Abschreibung**
- Formel: Kaufpreis / Abschreibungszeit
- Standard-Abschreibungszeit: 50 Jahre
- Einheit: €/Jahr
6. **Alter der Immobilie**
- Formel: Aktuelles Jahr - Baujahr
- Einheit: Jahre
### 2. URL-Sharing für anonyme Nutzer
**Funktion:** "Link teilen" Button
- Kodiert alle Formulardaten in URL-Parameter
- Ermöglicht Teilen der Berechnung ohne Registrierung
- Link funktioniert auch nach Tagen/Wochen
- Daten werden **nicht** in der Datenbank gespeichert
- Ideal für schnelle Berechnungen und Vergleiche
**Beispiel-URL:**
```
http://localhost:8080/?adresse=Teststr+123&kaufpreis=300000&wohnflaeche=85&...
```
### 3. Benutzer-Authentifizierung
#### Registrierung
**URL:** http://localhost:8080/register
- Name (Pflicht, mind. 2 Zeichen)
- E-Mail (Pflicht, muss gültig und eindeutig sein)
- Passwort (Pflicht, mind. 6 Zeichen)
- Passwort bestätigen
**Sicherheit:**
- Passwort wird mit bcrypt gehasht
- E-Mail muss eindeutig sein
- Validierung auf Client- und Server-Seite
#### Login
**URL:** http://localhost:8080/login
- E-Mail
- Passwort
**Session-basiert:**
- Bleibt aktiv bis zum Logout
- Cookie-basierte Session
- CSRF-Schutz integriert
#### Logout
- Link im Header "Abmelden"
- Beendet Session
- Redirect zur Startseite
### 4. Immobilien speichern (nur eingeloggte Nutzer)
**Funktion:** "Speichern" Button (erscheint nur nach Login)
- Speichert alle eingegebenen Daten in der Datenbank
- Immobilie wird dem eingeloggten Nutzer zugeordnet
- Nutzer kann nur eigene Immobilien sehen
- AJAX-basiert (kein Seitenreload)
- Erfolgs-/Fehlermeldung als Alert
### 5. Meine Immobilien
**URL:** http://localhost:8080/meine-immobilien (nur nach Login)
**Funktionen:**
- Übersicht aller gespeicherten Immobilien
- Anzeige aller Details pro Immobilie
- Berechnete Werte werden angezeigt
- Sortierung nach Erstellungsdatum (neueste zuerst)
**Angezeigt werden:**
- Typ, Kaufpreis, Flächen
- Zimmer, Baujahr, Etage
- Bundesland, Heizungstyp
- Garage (Ja/Nein)
- Erstellungsdatum
---
## API-Features
Vollständige Details siehe [API-Dokumentation](api.md)
### 1. Dual-Authentifizierung
**Session-basiert (Frontend):**
- Form-Login mit E-Mail/Passwort
- Cookie-basierte Sessions
- Für Web-Interface
**API-Key-basiert (API):**
- Header: `X-API-KEY`
- Automatisch generiert bei User-Erstellung
- Für programmatischen Zugriff
### 2. Rollenbasierte Zugriffskontrolle
| Rolle | Rechte |
|-------|--------|
| **USER** | Eigene Immobilien verwalten |
| **ADMIN** | Alle Immobilien verwalten, alle User sehen |
| **MODERATOR** | Erweiterte Rechte |
| **TECHNICAL** | Bundesländer & Heizungstypen verwalten |
### 3. Mandantenfähigkeit
- Jeder User sieht nur eigene Immobilien
- Admins sehen alle Immobilien
- Automatische Filterung auf Basis des eingeloggten Users
- Keine manuelle Filterung nötig
### 4. Öffentliche Ressourcen
**Ohne Authentifizierung verfügbar:**
- `GET /api/bundeslands` - Alle Bundesländer mit Grunderwerbsteuersätzen
- `GET /api/heizungstyps` - Alle Heizungstypen
**Vorbefüllt:**
- 16 deutsche Bundesländer mit aktuellen Steuersätzen
- 4 Heizungstypen (Öl, Gas, Wärmepumpe, Pellet)
### 5. Swagger/OpenAPI-Dokumentation
**URL:** http://localhost:8080/api/docs.html
**Features:**
- Interaktive API-Dokumentation
- "Try it out" Funktion für alle Endpunkte
- Request/Response Beispiele
- Schema-Dokumentation
- Export als JSON/YAML
---
## Technische Features
### 1. Responsive Design
- Mobile-optimiert
- Grid-Layout passt sich an Bildschirmgröße an
- Touch-freundliche Buttons und Formulare
### 2. Performance
- **Live-Berechnungen** ohne Server-Anfragen
- **AJAX** für Speichern-Funktion (kein Reload)
- **Opcache** aktiviert in Produktion
- **Doctrine Query Cache**
### 3. Datenvalidierung
**Frontend:**
- HTML5-Validierung
- Required-Felder
- Type-Checking (number, email, etc.)
**Backend:**
- Symfony Validator
- Doctrine Constraints
- Custom Validation Rules
### 4. Sicherheit
- **CSRF-Protection** für alle Forms
- **Passwort-Hashing** mit bcrypt
- **SQL-Injection-Schutz** durch Doctrine ORM
- **XSS-Schutz** durch Twig Auto-Escaping
- **CORS-Konfiguration** für API
### 5. Separation of Concerns
- **CSS** in separaten Dateien (`public/css/`)
- **JavaScript** in separaten Dateien (`public/js/`)
- **Templates** mit Twig
- **Controller** für Logik
- **Entities** für Datenmodell
---
## Berechnungslogik
### Grunderwerbsteuer
Bundesland-spezifisch (Stand 2025):
| Bundesland | Steuersatz |
|------------|-----------|
| Bayern | 3,5% |
| Baden-Württemberg, Bremen, Niedersachsen, Rheinland-Pfalz, Sachsen-Anhalt, Thüringen | 5,0% |
| Hamburg, Sachsen | 5,5% |
| Berlin, Hessen, Mecklenburg-Vorpommern | 6,0% |
| Brandenburg, NRW, Saarland, Schleswig-Holstein | 6,5% |
### Kaufnebenkosten (nur API)
Bei API-Anfragen werden zusätzlich berechnet:
- **Notarkosten:** ca. 1,5% des Kaufpreises
- **Grundbuchkosten:** ca. 0,5% des Kaufpreises
- **Grunderwerbsteuer:** siehe oben
- **Gesamt:** Summe aller Nebenkosten
---
**Siehe auch:**
- [Technische Dokumentation](technical.md) - Architektur & Datenbank
- [API-Dokumentation](api.md) - REST-API Details
- [Installation](installation.md) - Setup-Anleitung
[← Zurück zur Hauptseite](../README.md)