Files
erp-nutzfahrzeuge/docs/requirements.md
T

704 lines
38 KiB
Markdown
Raw Normal View History

# ERP-System für Nutzfahrzeug-/Baumaschinen-Handel
## Requirements Specification
**Version:** 1.0.0
**Datum:** 2026-07-10
**Status:** Final Discovery abgeschlossen
**Analyst:** Requirements Analyst (A0)
---
## 1. Projektüberblick
Ein webbasiertes ERP-System für Händler von Nutzfahrzeugen und Baumaschinen (~10 Nutzer). Das System verwaltet Fahrzeugbestände mit Baumaschinen-spezifischen Feldern, Kundenkontakte, Verkaufsprozesse mit Rechtsdokumenten, OCR-basierte Datenerfassung via Vision-Modellen, mobile.de Push-Sync, KI-Copilot (Text + Sprache) und KI-Bildretusche. Alle KI-Funktionen laufen über OpenRouter.
### Domain Knowledge
- **Domain:** Nutzfahrzeug- und Baumaschinenhandel (B2B/B2C)
- **Zulassungsdokumente:** Zulassungsbescheinigung Teil I (ZB I = Fahrzeugschein) und Teil II (ZB II = Fahrzeugbrief), EU-einheitlich seit 2005
- **mobile.de:** Deutschlands größter Fahrzeugmarkt mit Seller API (REST) für Händler
- **Baumaschinen-spezifisch:** LKW-Typ, Art (Bagger, Radlader, etc.), Aufbau, Betriebsstunden statt Kilometerstand, Leistung in kW/PS
- **USt-IdNr.-Prüfung:** Gesetzlich vorgeschrieben bei innergemeinschaftlichen Lieferungen (§ 6a UStG, § 27a UStG). BZSt eVatR API-Zugang aktuell NICHT vorhanden manuelle Prüfung im MVP
- **Geldwäsche-Prävention:** Identifikation, Meldepflichten bei Barzahlungen > 10.000 € (GwG)
- **Kaufverträge/Rechnungen:** Unterscheidung EU-Inland, EU-Ausland, Dritland
- **DATEV:** Standard-Exportformat für Steuerberater-Übergabe
---
## 2. Tech-Stack Entscheidungen
| Komponente | Entscheidung | Begründung |
|---|---|---|
| **Backend** | Python / FastAPI | Async, OpenAPI-Auto-Docs, Python-Ökosystem für KI/OCR-Integration, schnell zu entwickeln |
| **Frontend** | React / Next.js | SSR, große Community, TypeScript-Support, Component-Ökosystem |
| **Datenbank** | PostgreSQL | Relational, robust, JSON-Support für flexible Felder, Full-Text-Search |
| **Hosting** | Coolify self-hosted (Docker) | Bereits vorhanden, keine Cloud-Abhängigkeit, volle Kontrolle |
| **OCR** | OpenRouter Vision-Modell (Qwen2.5-VL) | Keine Spezial-API nötig, DSGVO: Cloud-Verarbeitung akzeptiert |
| **KI-Copilot** | OpenRouter (bestes Modell, z.B. Claude/GPT-4) | Flexibel, kein Vendor-Lock-in, KI darf selbstständig handeln |
| **KI-Bildretusche** | OpenRouter Flux.1-Pro | Hintergrund entfernen, Spiegelungen retuschieren |
| **KI-Vision/Analyse** | OpenRouter Qwen2.5-VL | Fahrzeugfoto-Analyse, ZB I/II Felderkennung |
| **i18n** | Deutsch + Englisch | Beide Sprachen von Anfang an |
| **DATEV-Export** | CSV/DATEV-kompatibel | Für Steuerberater-Übergabe |
### Coding Guidelines
- **Naming:** snake_case (Python), camelCase (JS/TS), PascalCase (React Components)
- **Struktur:** Modulare Feature-Ordner, Shared-Libraries für Common-Logic
- **Linting:** ruff (Python), eslint + prettier (TypeScript)
- **Tests:** pytest (Backend), jest/playwright (Frontend), Coverage-Target ≥80%
- **API-Stil:** RESTful, OpenAPI 3.0, versionierte Endpoints (/api/v1/...)
### Deployment
- **Environments:** Dev + Prod via Coolify (Docker Compose)
- **CI/CD:** Forgejo Actions → Docker Build → Coolify Deploy
- **Secrets:** Umgebungsvariablen in Coolify, niemals im Code
---
## 3. Module und Features
### Modul M1: Fahrzeugbestand + mobile.de Push-Sync
#### [F-M1-01] Fahrzeugbestand verwalten
**Anforderung:** Vollständige Verwaltung des Fahrzeugbestands mit Standard- und Baumaschinen-spezifischen Feldern. Standardfelder: Marke, Modell/Typ, FIN (Fahrgestellnummer), Baujahr, Erstzulassung, Leistung (kW/PS), Kraftstoffart, Getriebe, Farbe, Zustand, Standort, Verfügbarkeit, Preis. Baumaschinen-spezifische Felder: LKW-Typ, Art (Bagger, Radlader, Kran, etc.), Aufbau, Betriebsstunden (statt KM-Stand), Betriebsstunden-Einheit (h/min).
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Neues Baumaschinen-Fahrzeug wird mit allen Pflichtfeldern inkl. Betriebsstunden angelegt. Erwartet: Fahrzeug erscheint in Bestandsliste, FIN validiert (17 Zeichen), Betriebsstunden-Feld sichtbar, alle Felder gespeichert.
2. **Edge Case:** Fahrzeug mit doppelter FIN wird angelegt. Erwartet: Fehlermeldung „FIN bereits vorhanden“, kein Speichern.
3. **Integration:** Fahrzeug wird angelegt und danach über die Suchfunktion gefunden. Erwartet: Fahrzeug erscheint in Suchergebnissen mit allen eingegebenen Daten inkl. Baumaschinen-Felder.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Fahrzeugbestand-Seite lädt, Formular mit Baumaschinen-Feldern, Bestandsliste zeigt alle Fahrzeuge
---
#### [F-M1-02] mobile.de Push-Sync (nur Push)
**Anforderung:** Fahrzeuge aus dem Bestand können auf mobile.de gelistet/aktualisiert werden. Über die mobile.de Seller API (REST) werden Fahrzeugdaten übertragen (Push-Only, NICHT bidirektional). Feldmapping zwischen ERP-Feldern und mobile.de-Feldern. Sync-Status wird pro Fahrzeug angezeigt (Entwurf → gelistet → aktualisiert → verkauft/entfernt). Preisänderungen im ERP können gepusht werden.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Fahrzeug mit vollständigen Daten wird an mobile.de gesendet. Erwartet: API-Response 200/201, Fahrzeug erscheint auf mobile.de, Status im ERP wird auf „gelistet" aktualisiert.
2. **Edge Case:** Fahrzeug mit unvollständigen mobile.de-Pflichtfeldern wird gesendet. Erwartet: API-Fehlermeldung wird im ERP angezeigt, Fahrzeug wird nicht gelistet, Status bleibt „Entwurf".
3. **Integration:** Fahrzeug wird auf mobile.de gelistet, dann im ERP Preis geändert, Push-Sync erneut ausgeführt. Erwartet: Preis auf mobile.de aktualisiert, Sync-Status „aktualisiert".
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- API-Verbindung zu mobile.de konfigurierbar, Push-Listing funktioniert, Status-Tracking korrekt
---
#### [F-M1-03] mobile.de Listing-Verwaltung
**Anforderung:** Übersicht aller Fahrzeuge mit mobile.de-Status. Filterung nach Status (nicht gelistet, gelistet, Fehler). Batch-Push für mehrere Fahrzeuge. Fehler-Logs pro Fahrzeug einsehbar. Entfernen von Listings auf mobile.de (Delisting).
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** 3 Fahrzeuge werden per Batch-Push an mobile.de gesendet. Erwartet: Alle 3 erhalten Status „gelistet", Fortschrittsanzeige während Sync.
2. **Edge Case:** Ein Fahrzeug von 3 hat fehlende Pflichtfelder. Erwartet: 2 erfolgreich gepusht, 1 mit Fehlermeldung, Fehler-Log einsehbar.
3. **Integration:** Fahrzeug wird auf mobile.de delisted. Erwartet: Listing auf mobile.de entfernt, Status im ERP „entfernt".
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Batch-Push, Status-Übersicht, Fehler-Logs und Delisting funktionieren
---
### Modul M2: OCR Fahrzeugdaten-Erfassung
#### [F-M2-01] OCR-Erfassung Zulassungsbescheinigung Teil I (ZB I / Fahrzeugschein)
**Anforderung:** Foto des Fahrzeugscheins (ZB I) hochladen, OpenRouter Vision-Modell (Qwen2.5-VL) erkennt Felder automatisch (Felder AK gemäß KBA-Standard): Marke, Modell, FIN, Erstzulassung, Kennzeichen, Leistung, Hubraum, Kraftstoffart, Schadstoffklasse, etc. Daten werden in Fahrzeugformular eingetragen, User kann korrigieren.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Gut belichtetes Foto einer ZB I wird hochgeladen. Erwartet: Qwen2.5-VL erkennt alle relevanten Felder mit >90% Genauigkeit, Daten werden in Fahrzeugformular eingetragen, User kann korrigieren.
2. **Edge Case:** Verschmutztes oder schiefes Foto wird hochgeladen. Erwartet: System gibt Warnung „Bildqualität niedrig", best-effort Erkennung, alle Felder editierbar.
3. **Integration:** OCR-Daten werden ins Fahrzeugformular eingetragen, User speichert. Erwartet: Fahrzeug wird mit OCR-Daten angelegt, Felder korrekt übernommen.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Upload funktioniert, Qwen2.5-VL via OpenRouter erkennt Felder, Daten fließen in Formular
---
#### [F-M2-02] OCR-Erfassung Zulassungsbescheinigung Teil II (ZB II / Fahrzeugbrief)
**Anforderung:** Foto des Fahrzeugbriefs (ZB II) hochladen, OpenRouter Qwen2.5-VL erkennt Felder: FIN, Hersteller, Typ, Variante, Fahrzeugklasse, Antriebsart, Leistung, Hubraum, zul. Gesamtgewicht, Datum der Erstzulassung, Previous Owner, etc. Daten werden in Fahrzeugformular eingetragen.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Gut belichtetes Foto einer ZB II wird hochgeladen. Erwartet: Alle relevanten Felder werden erkannt, Daten ins Fahrzeugformular eingetragen.
2. **Edge Case:** ZB II mit Stempeln/Aufklebern die Teile des Textes verdecken. Erwartet: System warnt, best-effort Erkennung, manuelle Korrektur möglich.
3. **Integration:** ZB I und ZB II für dasselbe Fahrzeug hochgeladen. Erwartet: Daten werden zusammengeführt, FIN-Abgleich zwischen ZB I und ZB II, Warnung bei Diskrepanz.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Upload funktioniert, Qwen2.5-VL erkennt ZB II-Felder, Zusammenführung mit ZB I
---
### Modul M3: Kontakt- & Kundenverwaltung
#### [F-M3-01] Kontakt- und Kundenverwaltung
**Anforderung:** Verwaltung von Firmen und Ansprechpartnern. Felder: Firmenname, Rechtsform, Ansprechpartner (Name, Funktion), Adresse (Straße, PLZ, Ort, Land), USt-IdNr., Telefon, E-Mail, Website. Unterscheidung Käufer/Verkäufer. EU-International und Inland. ~10 Nutzer arbeiten mit den Daten.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Neue Firma mit Ansprechpartner wird angelegt als „Käufer". Erwartet: Firma erscheint in Kontaktliste mit Rolle „Käufer", alle Felder gespeichert.
2. **Edge Case:** Firma ohne USt-IdNr. (Privatkunde/Dritland) wird angelegt. Erwartet: USt-IdNr. optional, Firma wird gespeichert, Rolle „Käufer" zugewiesen.
3. **Integration:** Firma wird als Käufer angelegt, dann Verkauf an diese Firma gestartet. Erwartet: Firmendaten fließen in Kaufvertrag ein.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Kontaktliste zeigt Firmen mit Rollen, Anlegen/Editieren funktioniert
---
#### [F-M3-02] Kundensuche und Filter
**Anforderung:** Kunden/Kontakte können gesucht und gefiltert werden nach: Name, Land, Rolle (Käufer/Verkäufer), USt-IdNr.-Status (geprüft/ungeprüft/manuell bestätigt).
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Suche nach „Müller" in Kontakten. Erwartet: Alle Kontakte mit „Müller" im Namen erscheinen.
2. **Edge Case:** Filter „Land = Deutschland" und „Rolle = Käufer" kombiniert. Erwartet: Nur deutsche Käufer-Firmen erscheinen.
3. **Integration:** Gefundener Kontakt wird für Verkauf ausgewählt. Erwartet: Kontakt wird in Verkaufsformular übernommen.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Such- und Filterfunktion liefert korrekte Ergebnisse
---
### Modul M4: Dateiablage pro Fahrzeug
#### [F-M4-01] Dateiablage pro Fahrzeug
**Anforderung:** Jedes Fahrzeug hat einen eigenen Dateibereich. Dokumente (PDF, Verträge, Rechnungen), Fotos (JPG/PNG) und andere Dateien können hochgeladen, kategorisiert, umbenannt und gelöscht werden. Dateivorschau für Bilder und PDFs. Max 50 MB pro Datei. Kategorien: Vertrag, Rechnung, ZB I, ZB II, Foto, Sonstiges.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** PDF-Vertrag wird zu Fahrzeug hochgeladen. Erwartet: Datei erscheint in Fahrzeug-Dateibereich, Vorschau sichtbar, Datei kategorisierbar als „Vertrag".
2. **Edge Case:** Datei > 50 MB wird hochgeladen. Erwartet: Fehlermeldung „Datei zu groß", kein Upload.
3. **Integration:** Foto wird hochgeladen und für KI-Bildretusche (M8) verwendet. Erwartet: Foto ist in Dateiablage sichtbar und für Retusche-Modul auswählbar.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Datei-Upload, Vorschau, Kategorisierung und Löschung funktionieren
---
### Modul M5: Verkaufsmodul mit Rechtsdokumenten
#### [F-M5-01] Kaufvertrag erstellen
**Anforderung:** Verkauf eines Fahrzeugs an einen Kunden. Kaufvertrag wird aus Vertragsvorlagen generiert mit: Fahrzeugdaten, Käufer-/Verkäuferdaten, Preis, Zahlungsbedingungen, Übergabedatum. PDF-Generierung. Unterscheidung EU-Inland, EU-Ausland, Dritland. Vertragsvorlagen basieren auf Stammdaten aus Einstellungen.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Verkauf an deutsche Firma (EU-Inland). Erwartet: Kaufvertrag-PDF wird generiert mit allen Daten, USt ausgewiesen, Vertragsvorlage korrekt angewendet.
2. **Edge Case:** Verkauf an Schweizer Firma (Dritland). Erwartet: Kaufvertrag mit 0% USt (Ausfuhrlieferung), Hinweis auf Ausfuhr, andere Vorlage.
3. **Integration:** Verkauf startet USt-IdNr.-Prüfung für EU-Ausland-Kunde. Erwartet: Manuelle Prüfung wird angeboten, Ergebnis im Vertrag dokumentiert.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Kaufvertrag-PDF generiert, alle Varianten (Inland/EU/Dritland) korrekt, Vorlagen aus Stammdaten
---
#### [F-M5-02] USt-IdNr.-Überprüfung (manuell)
**Anforderung:** Manuelle USt-IdNr.-Prüfung im MVP (kein BZSt eVatR API-Zugang vorhanden). User gibt Prüfergebnis manuell ein (gültig/ungültig, Prüdatum, Art der Prüfung). Prüfergebnis wird dokumentiert. BZSt API-Integration als „später" markiert. System warnt bei EU-Ausland-Verkauf ohne gültige USt-IdNr.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** User prüft USt-IdNr. manuell (extern) und trägt Ergebnis „gültig" ein. Erwartet: Prüfergebnis mit Datum gespeichert, Status „geprüft".
2. **Edge Case:** EU-Ausland-Verkauf ohne geprüfte USt-IdNr. Erwartet: Warnung „USt-IdNr. nicht geprüft", Verkauf kann erst nach Bestätigung fortgesetzt werden.
3. **Integration:** USt-IdNr.-Prüfung wird im Verkaufsprozess angefordert. Erwartet: Prüfung angefordert, User trägt Ergebnis ein, Vertrag wird fortgesetzt.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Manuelle Prüfung dokumentiert, Warnung bei fehlender Prüfung, BZSt API als „später" markiert
---
#### [F-M5-03] Geldwäsche-Prävention
**Anforderung:** Identifikation des Vertragspartners (Ausweisdaten: Typ, Nummer, Ausstellungsland). Meldepflicht bei Barzahlungen > 10.000 € (GwG). System warnt automatisch bei Überschreitung. Dokumentation der Identifikation und etwaiger Meldungen. Ausweisdaten werden DSGVO-konform gespeichert (verschlüsselt, Zugriffsbeschränkung auf Admin/Buchhaltung).
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Verkauf mit Barzahlung 8.000 €. Erwartet: Keine Warnung, Identifikation wird erfasst aber keine Meldepflicht.
2. **Edge Case:** Verkauf mit Barzahlung 12.000 €. Erwartet: Warnung „Meldepflicht nach GwG", Meldedokument wird vorbereitet, Verkauf kann erst nach Bestätigung fortgesetzt werden.
3. **Integration:** Identifikation wird im Kaufvertrag dokumentiert. Erwartet: Ausweisdaten (Typ, Nummer, Ausstellungsland) im Vertrag enthalten, verschlüsselt in DB gespeichert.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- GwG-Warngrenze funktioniert, Identifikation erfasst, DSGVO-konforme Speicherung
---
#### [F-M5-04] Rechnung und Lieferbescheinigung
**Anforderung:** Rechnung wird aus Verkauf generiert (PDF). Lieferbescheinigung für EU-Innergemeinschaftliche Lieferungen. Rechnungsnummer fortlaufend, steuerrechtlich korrekt für Inland/EU-Ausland/Dritland.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Rechnung für EU-Inland-Verkauf wird generiert. Erwartet: Rechnungs-PDF mit USt, fortlaufende Nummer, Lieferbescheinigung beiliegend.
2. **Edge Case:** Rechnung für Dritland-Verkauf (Ausfuhrlieferung). Erwartet: Rechnung mit 0% USt, Ausfuhrvermerke, Lieferbescheinigung.
3. **Integration:** Rechnung wird aus abgeschlossenem Kaufvertrag generiert. Erwartet: Alle Daten aus Vertrag übernommen, Nummer inkrementiert.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Rechnungs-PDF generiert, Nummerierung korrekt, alle Varianten
---
#### [F-M5-05] DATEV-Export
**Anforderung:** Export von Verkaufs- und Rechnungsdaten im DATEV-kompatiblen Format (CSV) für die Übergabe an den Steuerberater. Filterung nach Zeitraum. Export enthält: Belegnummer, Datum, Konto, Betrag, USt, Gegenkonto, Kundennummer.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** DATEV-Export für Januar 2026 wird ausgeführt. Erwartet: CSV-Datei mit allen Verkäufen des Monats, DATEV-Format korrekt, herunterladbar.
2. **Edge Case:** Export für Zeitraum ohne Verkäufe. Erwartet: Leere CSV mit Headern, Hinweis „Keine Daten im Zeitraum".
3. **Integration:** DATEV-Export nach Verkaufsabschluss. Erwartet: Verkauf erscheint im nächsten Export, Beträge korrekt.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- DATEV-CSV korrekt formatiert, Filterung funktioniert, Download verfügbar
---
#### [F-M5-06] Vertragsvorlagen-Verwaltung (Stammdaten)
**Anforderung:** Vertragsvorlagen werden in den Einstellungen als Stammdaten hinterlegt. Pro Vertragsart (Kaufvertrag Inland, EU-Ausland, Dritland, Rechnung, Lieferbescheinigung) wird eine Vorlage definiert. Variablen werden markiert ({{fahrzeug}}, {{kaeufer}}, {{preis}}, etc.). Admin kann Vorlagen editieren.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Admin erstellt neue Vertragsvorlage für EU-Ausland-Verkauf. Erwartet: Vorlage wird gespeichert, Variablen markiert, bei Verkauf automatisch angewendet.
2. **Edge Case:** Vorlage ohne Variablen wird gespeichert. Erwartet: Warnung „Keine Variablen gefunden", Vorlage speicherbar aber nicht funktional.
3. **Integration:** Vorlage wird geändert, danach neuer Kaufvertrag erstellt. Erwartet: Neue Vorlage wird verwendet, Variablen korrekt ersetzt.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Vorlagen-Editor funktioniert, Variablen werden ersetzt, pro Vertragsart zuweisbar
---
### Modul M6: Responsive UI (Querschnitt)
#### [F-M6-01] Responsive Web-UI
**Anforderung:** Web-UI funktioniert auf Desktop (≥1280px), Tablet (7681279px) und Mobile (<768px). Alle Formulare sind touch-optimiert. Navigation passt sich an Bildschirmgröße an (Hamburger-Menü auf Mobile). Gilt für alle Module (Querschnitt).
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Desktop-Ansicht bei 1920px Breite. Erwartet: Alle Navigationselemente sichtbar, Formulare nebeneinander angeordnet.
2. **Edge Case:** Mobile-Ansicht bei 375px Breite. Erwartet: Hamburger-Menü, Formulare untereinander, Buttons groß genug für Touch.
3. **Integration:** Fahrzeugformular auf Mobile ausgefüllt. Erwartet: Alle Felder zugänglich, OCR-Upload funktioniert, Speichern funktioniert.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- UI funktioniert auf allen 3 Breakpoints
---
#### [F-M6-02] Internationalisierung (i18n: Deutsch + Englisch)
**Anforderung:** Alle UI-Texte, Labels, Fehlermeldungen und Systemmeldungen sind auf Deutsch und Englisch verfügbar. Sprache kann pro User eingestellt werden. Default: Deutsch. Datums-/Zahlenformate passen sich an Sprache an.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** User stellt Sprache auf Englisch um. Erwartet: Alle UI-Texte auf Englisch, Datumsformat MM/DD/YYYY, Dezimaltrennzeichen Punkt.
2. **Edge Case:** Fehlende Übersetzung für ein Label. Erwartet: Fallback auf Deutsch, Warnung im Dev-Log.
3. **Integration:** Sprache wird umgestellt, neues Fahrzeug angelegt. Erwartet: Formular-Labels auf Englisch, Daten werden sprachunabhängig gespeichert.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- DE + EN vollständig, Sprache pro User einstellbar, Formate passen sich an
---
### Modul M7: KI-Copilot
#### [F-M7-01] KI-Copilot Fahrzeug anlegen
**Anforderung:** KI-Assistent versteht natürlichsprachliche Befehle (Text/Sprache). Beispiel: „Lege ein neues Fahrzeug an: Mercedes Actros, Baujahr 2019, 150.000 km, 45.000 Euro". KI extrahiert Daten und füllt Fahrzeugformular aus. KI darf selbstständig handeln (Auto-Save nach Bestätigung). LLM via OpenRouter.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** „Neues Fahrzeug: MAN TGL 2018, 120000 km, 32000 €". Erwartet: Fahrzeugformular wird vorausgefüllt mit Marke=MAN, Modell=TGL, Baujahr=2018, KM=120000, Preis=32000. KI speichert nach Bestätigung.
2. **Edge Case:** „Füge ein Fahrzeug hinzu" ohne weitere Daten. Erwartet: KI fragt nach fehlenden Pflichtfeldern.
3. **Integration:** KI legt Fahrzeug an und listet es gleichzeitig auf mobile.de. Erwartet: Fahrzeug wird gespeichert und mobile.de Push-Sync wird ausgelöst.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- KI versteht Befehl via OpenRouter, füllt Formular, speichert nach Bestätigung
---
#### [F-M7-02] KI-Copilot Suchen und Verkaufen
**Anforderung:** KI kann Fahrzeuge suchen („Finde alle LKW unter 30.000 €") und Verkaufsprozesse starten („Verkaufe Fahrzeug FIN XYZ123 an Müller GmbH"). KI darf selbstständig handeln führt Aktionen nach Bestätigung aus.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** „Finde alle Fahrzeuge über 50.000 €". Erwartet: Gefilterte Bestandsliste mit Fahrzeugen > 50.000 €.
2. **Edge Case:** „Verkaufe Fahrzeug an Müller GmbH" ohne FIN. Erwartet: KI fragt nach Fahrzeug-Identifikation.
3. **Integration:** „Verkaufe FIN XYZ an Müller GmbH, Barzahlung 15000 €". Erwartet: Verkaufsprozess startet, GwG-Warnung erscheint (unter 10.000 → keine, über 10.000 → Warnung).
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- KI führt Suchen aus und startet Verkaufsprozesse nach Bestätigung
---
#### [F-M7-03] KI-Copilot Dokumente erstellen
**Anforderung:** KI kann Dokumente erstellen („Erstelle Kaufvertrag für Fahrzeug FIN XYZ an Müller GmbH"). KI sammelt alle nötigen Daten und generiert PDF. KI darf selbstständig handeln.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** „Erstelle Rechnung für letzten Verkauf". Erwartet: Rechnungs-PDF wird generiert mit Daten aus letztem Verkauf.
2. **Edge Case:** „Erstelle Kaufvertrag" ohne Kunden- oder Fahrzeugdaten. Erwartet: KI fragt nach fehlenden Daten.
3. **Integration:** KI erstellt Kaufvertrag und löst USt-IdNr.-Prüfung aus. Erwartet: Vertrag generiert, manuelle Prüfung angefordert, Ergebnis im Vertrag.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- KI generiert Dokumente korrekt via OpenRouter
---
#### [F-M7-04] KI-Copilot Spracheingabe
**Anforderung:** KI-Assistent akzeptiert Spracheingabe (Microphone-Input) zusätzlich zu Text. Sprache wird zu Text transkribiert (via OpenRouter oder Browser Web Speech API) und dann als Befehl verarbeitet.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** User spricht „Lege neues Fahrzeug an: Volvo FH16, Baujahr 2020, 80000 Stunden, 55000 Euro". Erwartet: Sprache wird transkribiert, Fahrzeugformular vorausgefüllt.
2. **Edge Case:** Unverständliche Spracheingabe. Erwartet: KI fragt „Konnte Sie nicht verstehen, bitte wiederholen".
3. **Integration:** Spracheingabe wird genutzt um Verkauf zu starten. Erwartet: Transkribierter Text wird als Befehl verarbeitet, Verkaufsprozess startet.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Spracheingabe funktioniert, Transkription korrekt, Befehl wird ausgeführt
---
### Modul M8: KI Bildretusche & Preisvergleich
#### [F-M8-01] KI Bildretusche Hintergrund entfernen
**Anforderung:** Fahrzeugfoto hochladen, OpenRouter Flux.1-Pro entfernt Hintergrund und ersetzt durch neutralen (weiß/grau). Ergebnis kann gespeichert werden. Foto wird in Fahrzeug-Dateiablage abgelegt.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Foto eines LKW vor einer Werkstatt wird hochgeladen. Erwartet: Flux.1-Pro entfernt Hintergrund, neutraler Hintergrund, Fahrzeug klar erkennbar.
2. **Edge Case:** Foto mit sehr geringer Auflösung. Erwartet: Warnung „Niedrige Auflösung", best-effort Retusche, User kann Original behalten.
3. **Integration:** Retuschiertes Foto wird in Fahrzeug-Dateiablage gespeichert. Erwartet: Foto erscheint in Dateiablage, kann für mobile.de-Listing verwendet werden.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Bildretusche via Flux.1-Pro funktioniert, Ergebnis speicherbar
---
#### [F-M8-02] KI Bildretusche Spiegelungen entfernen
**Anforderung:** Spiegelungen und Reflexionen auf Fahrzeugoberfläche werden durch OpenRouter Flux.1-Pro reduziert/entfernt. Batch-Verarbeitung für mehrere Fotos eines Fahrzeugs.
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Foto mit starker Spiegelung wird hochgeladen. Erwartet: Flux.1-Pro reduziert Spiegelung, Fahrzeugoberfläche klarer.
2. **Edge Case:** Foto ohne Spiegelungen. Erwartet: Foto bleibt unverändert, Hinweis „Keine Retusche nötig".
3. **Integration:** Batch von 5 Fotos wird verarbeitet. Erwartet: Alle 5 Fotos retuschiert, Fortschrittsanzeige, alle speicherbar.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Spiegelungs-Retusche und Batch-Verarbeitung via Flux.1-Pro funktionieren
---
#### [F-M8-03] Preisvergleich mobile.de für ähnliche Fahrzeuge
**Anforderung:** Für ein Fahrzeug im Bestand werden ähnliche Inserate auf mobile.de gesucht (gleiche Marke/Modell, ähnliches Baujahr/KM/Stunden). Vergleichspreise werden grafisch aufbereitet (Durchschnitt, Median, Preisverteilung). Read-Only (kein Import).
**Test Scenarios (Pflicht, mind. 2):**
1. **Happy Path:** Für Mercedes Actros 2019 werden mobile.de-Vergleichspreise abgerufen. Erwartet: Liste mit 5-20 vergleichbaren Fahrzeugen, Durchschnittspreis berechnet.
2. **Edge Case:** Sehr seltenes Fahrzeug, keine Vergleiche auf mobile.de. Erwartet: Hinweis „Keine Vergleichsfahrzeuge", Empfehlung basierend auf weiter gefassten Kriterien.
3. **Integration:** Preisvergleich wird angezeigt, User entscheidet Preisanpassung. Erwartet: Preis wird im ERP aktualisiert, optional mobile.de Push-Sync.
**Akzeptanzkriterium:**
- Build erfolgreich
- Alle 3 Tests grün
- Preisvergleich zeigt mobile.de-Daten, grafische Aufbereitung, Read-Only
---
## 4. Rollen & Berechtigungen
### Rollen-Definition
| Rolle | Beschreibung |
|---|---|
| **Admin** | Vollzugriff auf alle Module, Einstellungen, Vorlagen, Benutzer-Verwaltung |
| **Verkäufer** | Fahrzeugbestand, mobile.de Sync, Kontakte, Verkauf, Dateiablage, KI-Copilot, Bildretusche |
| **Buchhaltung** | Verkauf (Lesen), Rechnungen, DATEV-Export, Ausweisdaten (GwG), USt-IdNr.-Prüfung |
### Berechtigungs-Matrix
| Modul / Feature | Admin | Verkäufer | Buchhaltung |
|---|---|---|---|
| M1: Fahrzeugbestand (CRUD) | ✅ | ✅ | 📖 |
| M1: mobile.de Push-Sync | ✅ | ✅ | ❌ |
| M2: OCR Erfassung | ✅ | ✅ | ❌ |
| M3: Kontaktverwaltung (CRUD) | ✅ | ✅ | 📖 |
| M4: Dateiablage | ✅ | ✅ | 📖 |
| M5: Kaufvertrag erstellen | ✅ | ✅ | 📖 |
| M5: USt-IdNr.-Prüfung | ✅ | ❌ | ✅ |
| M5: Geldwäsche-Prävention | ✅ | 📖 | ✅ |
| M5: Rechnung & Lieferbescheinigung | ✅ | 📖 | ✅ |
| M5: DATEV-Export | ✅ | ❌ | ✅ |
| M5: Vertragsvorlagen-Verwaltung | ✅ | ❌ | ❌ |
| M6: Responsive UI | ✅ | ✅ | ✅ |
| M6: i18n (Sprache wählen) | ✅ | ✅ | ✅ |
| M7: KI-Copilot | ✅ | ✅ | 📖 |
| M8: KI Bildretusche | ✅ | ✅ | ❌ |
| M8: Preisvergleich | ✅ | ✅ | 📖 |
| Einstellungen / Stammdaten | ✅ | ❌ | ❌ |
| Benutzer-Verwaltung | ✅ | ❌ | ❌ |
✅ = Vollzugriff | 📖 = Nur Lesen | ❌ = Kein Zugriff
---
## 5. mobile.de Seller API Push-Only Felder
### Sync-Richtung: **Push-Only** (ERP → mobile.de, NICHT bidirektional)
### Feldmapping ERP → mobile.de
| ERP-Feld | mobile.de Seller API Feld | Anmerkung |
|---|---|---|
| Marke | make | Pflichtfeld |
| Modell/Typ | model | Pflichtfeld |
| FIN | vin | 17 Zeichen |
| Baujahr | firstRegistration | YYYY-MM |
| Kilometerstand / Betriebsstunden | mileage | Einheit: km oder h (mobile.de supported hours für Baumaschinen) |
| Preis | price | EUR, netto/brutto kennzeichnen |
| Leistung kW | powerKw | Pflichtfeld für LKW |
| Leistung PS | powerHp | Berechnet aus kW |
| Kraftstoffart | fuelType | diesel, petrol, electric, etc. |
| Getriebe | transmission | manual, automatic |
| Farbe | color | |
| Zustand | condition | new, used |
| LKW-Typ | category | LKW-spezifische Kategorie |
| Art (Bagger, Radlader, etc.) | bodyType | Baumaschinen-spezifisch |
| Aufbau | equipment | Freitext |
| Standort | sellerLocation | PLZ, Ort |
| Fotos | images | URLs oder Base64 |
| Beschreibung | description | Freitext, multi-language |
| Verfügbarkeit | availabilityStatus | available, reserved, sold |
### API-Endpunkte (Push)
- **Listing erstellen:** POST /api/seller/listings
- **Listing aktualisieren:** PUT /api/seller/listings/{listingId}
- **Listing entfernen:** DELETE /api/seller/listings/{listingId}
- **Listing-Status:** GET /api/seller/listings/{listingId}/status
---
## 6. OpenRouter Modell-Empfehlungen
| Use Case | Modell | OpenRouter ID | Begründung |
|---|---|---|---|
| **KI-Copilot (Text + Sprache)** | Bestes verfügbares Modell | openrouter/auto oder claude-3.5-sonnet, gpt-4o | Flexibel, Auto-Routing wählt bestes Modell |
| **OCR ZB I/II (Vision)** | Qwen2.5-VL | qwen/qwen-2.5-vl-72b-instruct | Spezialisiert auf Dokumenterkennung, Multilingual |
| **Bildretusche (Hintergrund/Spiegelungen)** | Flux.1-Pro | black-forest-labs/flux-1.1-pro | State-of-the-art Bildgenerierung/-bearbeitung |
| **Fahrzeugfoto-Analyse** | Qwen2.5-VL | qwen/qwen-2.5-vl-72b-instruct | Vision-Modell für Bildverständnis |
### DSGVO-Hinweis
- OpenRouter verarbeitet Daten in der Cloud (User hat zugestimmt)
- Keine sensiblen Personendaten an OpenRouter senden (Ausweisdaten NICHT an KI übertragen)
- Fahrzeugdaten und Fotos werden an OpenRouter gesendet (keine Ausweisdaten auf Fotos)
---
## 7. MVP-Phasen-Vorschlag
| Phase | Module | Inhalt | Priorität |
|---|---|---|---|
| **Phase 1** | M1 | Fahrzeugbestand + mobile.de Push-Sync | Höchste Kernfunktion |
| **Phase 2** | M3 | Kontakt- & Kundenverwaltung | Hoch Voraussetzung für Verkauf |
| **Phase 3** | M4 | Dateiablage pro Fahrzeug | Hoch Voraussetzung für OCR/Bildretusche |
| **Phase 4** | M2 | OCR Fahrzeugdaten-Erfassung | Mittel Effizienz-Feature |
| **Phase 5** | M5 | Verkaufsmodul mit Rechtsdokumenten | Hoch Geschäftsprozess |
| **Phase 6** | M7 | KI-Copilot | Mittel Automatisierung |
| **Phase 7** | M8 | KI Bildretusche & Preisvergleich | Niedrig Optimierung |
| **Querschnitt** | M6 | Responsive UI + i18n | Alle Phasen gilt überall |
### Phasen-Abhängigkeiten
```
Phase 1 (M1) → Phase 2 (M3) → Phase 3 (M4) → Phase 4 (M2)
Phase 5 (M5) ←Phase 2 (M3) ←Phase 1 (M1)
Phase 6 (M7) → Phase 7 (M8)
```
M6 (Responsive UI + i18n) läuft parallel zu allen Phasen.
---
## 8. Sicherheit & Compliance
### DSGVO-Konformität
- **Ausweisdaten:** Verschlüsselt in PostgreSQL gespeichert (AES-256), Zugriff nur Admin + Buchhaltung
- **Personendaten:** DSGVO-konform, Löschkonzept für Kunden-Daten (Aufbewahrungsfristen beachten)
- **OpenRouter:** Cloud-Verarbeitung akzeptiert, keine Ausweisdaten an KI senden
- **Audit-Log:** Alle Änderungen an Kundendaten werden protokolliert (Wer, Was, Wann)
### Geldwäsche-Prävention (GwG)
- Identifikation bei Barzahlungen > 10.000 € (Ausweisdaten erfassen)
- Meldepflicht wird systemseitig angezeigt
- Meldedokument wird vorbereitet
- Dokumentation der Identifikation im Kaufvertrag
### Technische Sicherheit
- **CSRF:** Token-basiert (FastAPI + Next.js)
- **XSS:** Input-Sanitization, CSP-Headers
- **SQL-Injection:** ORM (SQLAlchemy), keine raw SQL queries
- **File-Upload-Validation:** MIME-Type-Check, Größenlimit 50MB, Virenscan empfohlen
- **Auth:** JWT-basiert, Session-Timeout 30min, Refresh-Token
- **HTTPS:** Via Coolify/Traefik (Let's Encrypt)
---
## 9. Constraints (Technische Rahmenbedingungen)
### Tech-Stack (finalisiert)
- **Backend:** Python 3.12+ / FastAPI
- **Frontend:** React 18+ / Next.js 14+ / TypeScript
- **Datenbank:** PostgreSQL 16+
- **ORM:** SQLAlchemy 2.0 (async)
- **KI/OCR/Bild:** OpenRouter API (Qwen2.5-VL, Flux.1-Pro, Claude/GPT-4)
- **Auth:** JWT (python-jose) + bcrypt
- **PDF-Generierung:** WeasyPrint oder ReportLab
- **DATEV-Export:** CSV (Python csv module)
- **i18n:** next-intl (Next.js) + FastAPI gettext
### Hosting
- **Plattform:** Coolify self-hosted auf eigenem Server
- **Container:** Docker Compose (app, db, redis optional)
- **SSL:** Let's Encrypt via Traefik
- **Domain:** Zu klären (Coolify verwaltet)
### Externe APIs
- **mobile.de Seller API:** REST API (Push-Only)
- **OpenRouter:** LLM + Vision + Bildgenerierung
- **BZSt eVatR API:** NICHT verfügbar im MVP (manuelle Prüfung)
- **DATEV:** Keine API, CSV-Export
### Budget/Timeline
- API-Kosten: OpenRouter (pay-per-use), mobile.de (Händleraccount)
- Timeline: MVP-Phasen sequenziell, keine harten Deadlines
---
## 10. Non-Goals (Explizit nicht Teil des Systems)
- **Kein** komplettes Buchhaltungssystem (Fibu, Bilanz, Steuererklärung)
- **Kein** Werkstatt-/Reparatur-Auftragsmanagement
- **Kein** Ersatzteil-/Lagerverwaltung
- **Kein** Fuhrparkmanagement / Telematik
- **Kein** eigenes Zahlungs-Gateway (Zahlungsabwicklung extern)
- **Kein** mobile App (nur responsive Web-UI)
- **Kein** eigenes KI-Modell-Training (Nutzung externer APIs via OpenRouter)
- **Kein** Marketing-/Newsletter-System
- **Kein** Versandlogistik-/Transportmanagement
- **Kein** mobile.de Import (nur Push, NICHT bidirektional)
- **Kein** BZSt eVatR API-Integration im MVP (manuelle Prüfung)
- **Keine** Datenmigration (keine Bestandsdaten zu importieren)
---
## 11. Annahmen (Assumptions)
1. Der User hat einen aktiven mobile.de Händleraccount mit Seller API-Zugang
2. Der User verfügt über deutsche Zulassungsbescheinigungen (ZB I und ZB II) für OCR-Erfassung
3. Der User ist umsatzsteuerpflichtig und benötigt USt-IdNr.-Prüfung für EU-Lieferungen
4. Der User verkauft an B2B (Firmen) und ggf. B2C (Privatkunden)
5. Der User hat Budget für OpenRouter API-Kosten (pay-per-use)
6. Das System wird von ~10 Nutzern im Büro genutzt (kein Massen-System)
7. Rechtsdokumente basieren auf deutschem/EU-Recht
8. KI-Copilot benötigt Internetverbindung (OpenRouter Cloud)
9. DSGVO: Cloud-Verarbeitung via OpenRouter ist akzeptiert
10. BZSt eVatR API-Zugang ist NICHT vorhanden manuelle Prüfung im MVP
11. Keine Datenmigration von Altsystemen nötig
12. Vertragsvorlagen werden als Stammdaten vom Admin gepflegt
13. KI darf selbstständig handeln (nach User-Bestätigung)
14. ~10 Nutzer mit Rollen Admin/Verkäufer/Buchhaltung
15. i18n: Deutsch + Englisch von Anfang an
---
## 12. Discovery Checklist (20 Kategorien)
| # | Kategorie | Status | Anmerkung |
|---|-----------|--------|-----------|
| 1 | Auth | **ja** | JWT-Auth, 3 Rollen (Admin/Verkäufer/Buchhaltung), ~10 Nutzer, Session-Timeout 30min |
| 2 | Daten | **ja** | Validierung, Pagination, Search/Filter in M1/M3 definiert, Soft-Delete für Fahrzeuge/Kontakte |
| 3 | Fehler | **ja** | Toast-Notifications, Error-Pages (404/500), API-Fehler-Handling, Error-Logging |
| 4 | Skalierung | **nein** | ~10 Nutzer, keine Skalierungsanforderungen, keine Caching/Rate-Limiting nötig |
| 5 | Sicherheit | **ja** | CSRF, XSS, SQL-Injection-Schutz, File-Upload-Validation, DSGVO, Ausweisdaten verschlüsselt |
| 6 | UX | **ja** | Responsive (M6), Loading-States, Empty-States, Confirmation-Dialogs, i18n DE+EN |
| 7 | Infrastruktur | **später** | Backup/Restore via Coolify, Monitoring/Alerting später, Health-Checks via FastAPI |
| 8 | Multi-User | **ja** | ~10 Nutzer, 3 Rollen, Concurrency via DB-Locking (optimistic), keine Real-time-Updates nötig |
| 9 | Migration | **nein** | Keine Datenmigration nötig (keine Altsysteme) |
| 10 | Mobile | **ja** | Responsive Web-UI (M6), keine native App, Touch-optimiert |
| 11 | Integration | **ja** | mobile.de Seller API (Push), OpenRouter (LLM/Vision/Bild), DATEV-Export (CSV) |
| 12 | Compliance | **ja** | DSGVO, Geldwäsche-Prävention (GwG), USt-IdNr.-Prüfung (manuell), Audit-Log |
| 13 | Performance | **später** | Standard-Optimierung, PostgreSQL-Indizes, Lazy Loading, keine speziellen Anforderungen |
| 14 | i18n | **ja** | Deutsch + Englisch, Datums-/Zahlenformate, Sprache pro User einstellbar |
| 15 | Accessibility | **später** | Grundlegende WCAG-Konformität (Keyboard-Nav, Kontrast), Standard-Implementation |
| 16 | Analytics/Tracking | **nein** | Kein Usage-Tracking im MVP |
| 17 | Environments | **ja** | Dev + Prod via Coolify (Docker), Env-Variablen in Coolify, Secrets-Management via Coolify |
| 18 | Dokumentation | **später** | User-Docs/API-Docs nach MVP, OpenAPI-Auto-Docs via FastAPI verfügbar |
| 19 | Testing-Strategie | **ja** | pytest (Backend), jest/playwright (Frontend), Coverage-Target ≥80%, E2E für Kernprozesse |
| 20 | Naming/Branding | **später** | Projektname/Branding zu klären mit User, Domain via Coolify |
| 21 | Scheduling/Background-Jobs | **später** | mobile.de Sync ggf. als Cron-Job MVP: manuell, OpenRouter API-Calls async |
**Status: 21/21 Kategorien beantwortet** (Kategorie 21 = Scheduling, optional)
---
## 13. Test Coverage Summary
| Feature ID | Feature | Test Scenarios | Status |
|---|---|---|---|
| F-M1-01 | Fahrzeugbestand verwalten | 3 | ✅ |
| F-M1-02 | mobile.de Push-Sync | 3 | ✅ |
| F-M1-03 | mobile.de Listing-Verwaltung | 3 | ✅ |
| F-M2-01 | OCR ZB I (Qwen2.5-VL) | 3 | ✅ |
| F-M2-02 | OCR ZB II (Qwen2.5-VL) | 3 | ✅ |
| F-M3-01 | Kontakt- und Kundenverwaltung | 3 | ✅ |
| F-M3-02 | Kundensuche und Filter | 3 | ✅ |
| F-M4-01 | Dateiablage pro Fahrzeug | 3 | ✅ |
| F-M5-01 | Kaufvertrag erstellen | 3 | ✅ |
| F-M5-02 | USt-IdNr.-Überprüfung (manuell) | 3 | ✅ |
| F-M5-03 | Geldwäsche-Prävention | 3 | ✅ |
| F-M5-04 | Rechnung und Lieferbescheinigung | 3 | ✅ |
| F-M5-05 | DATEV-Export | 3 | ✅ |
| F-M5-06 | Vertragsvorlagen-Verwaltung | 3 | ✅ |
| F-M6-01 | Responsive Web-UI | 3 | ✅ |
| F-M6-02 | Internationalisierung (i18n) | 3 | ✅ |
| F-M7-01 | KI-Copilot Fahrzeug anlegen | 3 | ✅ |
| F-M7-02 | KI-Copilot Suchen und Verkaufen | 3 | ✅ |
| F-M7-03 | KI-Copilot Dokumente erstellen | 3 | ✅ |
| F-M7-04 | KI-Copilot Spracheingabe | 3 | ✅ |
| F-M8-01 | KI Bildretusche Hintergrund (Flux.1-Pro) | 3 | ✅ |
| F-M8-02 | KI Bildretusche Spiegelungen (Flux.1-Pro) | 3 | ✅ |
| F-M8-03 | Preisvergleich mobile.de | 3 | ✅ |
**Test Coverage: 23/23 Features mit Test-Szenarien (100%)**
---
## 14. Handoff Summary
- **Requirements Status:** Final Discovery abgeschlossen
- **Discovery Checklist:** 21/21 Kategorien beantwortet
- **Test Coverage:** 23/23 Features mit je 3 Test-Szenarien (100%)
- **Module:** 8 (M1-M8)
- **Features:** 23
- **MVP-Phasen:** 7 Phasen + 1 Querschnitt (M6)
- **Open Questions:** Siehe open_questions.md (alle resolved oder als „später" markiert)
- **Ready for UI Design:** YES
- **Ready for Architecture:** NO (erst nach UI Design Approval)
---
## 15. Offene Fragen
Siehe `open_questions.md` für kategorisierte Klärungsfragen mit resolved/unresolved Status.