API updadte
This commit is contained in:
275
docs/features.md
Normal file
275
docs/features.md
Normal 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)
|
||||
Reference in New Issue
Block a user