Dies ist eine Beispielanwendung zur Berechnung von Versicherungsprämien auf Basis von:
- Jährlicher Kilometerleistung
- Fahrzeugtyp
- Region der Fahrzeugzulassung (anhand der Postleitzahl)
Die Anwendung erfüllt die Anforderungen einer technischen Challenge und wurde in Java mit Spring Boot entwickelt. Zusätzlich stehen eine REST-API und eine einfache Weboberfläche zur Verfügung.
- Java 21
- Spring Boot 3.5.3
- SQLite (persistente Speicherung)
- JPA / Hibernate
- Maven
- JUnit 5, Mockito (Test-Frameworks)
Die Versicherungsprämie wird mit folgender Formel berechnet:
Kilometer-Faktor * Fahrzeugtyp-Faktor * Regionen-Faktor
| Kilometerleistung pro Jahr | Faktor |
|---|---|
| 0 – 5.000 km | 0.5 |
| 5.001 – 10.000 km | 1.0 |
| 10.001 – 20.000 km | 1.5 |
| ab 20.001 km | 2.0 |
public enum VehicleType { CAR(1.0), MOTORCYCLE(0.8), TRUCK(1.5); }
| Bundesland | Faktor |
|---|---|
| Bayern, BW | 1.2 |
| Berlin, Hamburg | 1.1 |
| Sachsen, Thüringen | 0.9 |
| Sonstige | 1.0 |
Die Datei postcodes.csv enthält regionale Informationen zur PLZ-Zuordnung:
- Spalte 6: Postleitzahl
- Spalte 2: Bundesland
- Spalte 7: Stadt
Diese wird beim Start geladen und im Service gecached.
entity– Datenmodell (InsuranceRequest)repository– Schnittstelle zu SQLiteservice– Fachlogik (Berechnung und Region-Service)controller– REST-Endpunktemodel– Hilfsklassen und Enumsresources/static/index.html– Web-UI
Berechnet und speichert eine Prämie.
Request (JSON): json { "kilometersPerYear": 8000, "plz": "10115", "vehicleType": "CAR" }
Response: – berechnete Prämie
Gibt alle gespeicherten Anträge zurück (JSON-Liste).
Die Web-UI (HTML/JS) ist unter /index.html verfügbar. Sie zeigt alle bisherigen Anfragen in einer Tabelle und ermöglicht das Einreichen neuer Anfragen.
VehicleTypeTest– Testet die FahrzeugfaktorenKilometerRangeFactorTest– Testet die KM-FaktorenPremiumCalculatorServiceTest– Fachlogik mit Mockito
PremiumControllerIntegrationTest– Testet vollständige REST-Kommunikation (MockMvc)
SQLite wurde gewählt als:
- eingebettete, leichtgewichtige Lösung
- ideal für kleine Anwendungen ohne DB-Server
- unterstützt durch JPA (Hibernate)
Die Datei insurance.db wird automatisch erstellt und verwendet.
-
PremiumCalculatorService
- Berechnet die Prämie
- Persistiert den Antrag
-
RegionService
- Lädt die CSV-Datei beim Start
- Liefert Faktor und Existenzprüfung zur PLZ
Die Services sind nach fachlicher Zuständigkeit getrennt und gut testbar.
bash mvn clean install mvn spring-boot:run
Webseite: http://localhost:8080/index.html
REST-API: http://localhost:8080/api/premium
Diese Anwendung erfüllt alle gestellten Anforderungen:
CSV-Verarbeitung
Eingaben & Berechnungen mit Validation
Speicherung in DB
REST-API für Drittanbieter
Web-Oberfläche
Unit- und Integrationstests
Radoslaw Debosz