Phase 7: KI-JSON-Import und Backup-Export/Import
Neues Modul js/import/ mit reiner Validierungslogik (importValidator.js: parseAndValidate(), findDuplicate()). Jeder Ausflugsziel-Eintrag im importierten KI-JSON wird einzeln bewertet statt alles-oder-nichts: fehlender Name/Kategorie oder ungueltige Koordinaten fuehren zur Ablehnung, weiche Probleme (unbekannte Kategorie, unsichere website/image-URL, ungueltige Bewertung, falscher Feldtyp) erzeugen nur eine Warnung. sanitizeEntry() setzt sicherheitskritische Felder vor der Uebernahme zurueck (z.B. javascript:-URLs), da normalizePlace() selbst keine Sicherheitspruefung vornimmt. findDuplicate() erkennt wahrscheinliche Duplikate gegen den bestehenden Datenbestand. UI (js/ui/import.js): Modal mit zwei Tabs - KI-Ausflugsziele importieren (Text einfuegen oder Datei hochladen, Vorschau mit gueltig/Warnung/abgelehnt, Duplikat-Toggle, Bestaetigen) und Backup sichern/wiederherstellen (js/import/backup.js: Export als JSON-Datei, Wiederherstellen mit Ersetzen/Ergaenzen-Wahl). Vorschau-Rendering ausschliesslich ueber el()/textContent, da es sich um echte, ungepruefte Fremddaten handelt. Damit sind alle Kernfunktionen aus anforderung.md umgesetzt. docs/plan.md entsprechend fortgeschrieben.
This commit is contained in:
+32
-1
@@ -161,7 +161,38 @@ Seed-Daten dadurch synchron direkt aus dem globalen Namespace, ganz ohne
|
||||
| 4 | Filter- und Suchfunktion (Kategorie, Entfernung, Alter, Kosten, Indoor/Outdoor, Ausstattung, Bewertung, Region) inkl. Anwendung auf Karte + Liste | ✅ umgesetzt |
|
||||
| 5 | Route/Navigation-Integration | ✅ bereits in Phase 2 erledigt (OSM-Directions-Button in der Detailansicht) |
|
||||
| 6 | KI-Prompt-Generator (Eingabeformular, Promptgenerierung, Copy/Download) | ✅ umgesetzt |
|
||||
| 7 | KI-JSON-Import (Validierung, Vorschau, Übernahme ins LocalStorage) + Backup-Export/Import + Politur | offen |
|
||||
| 7 | KI-JSON-Import (Validierung, Vorschau, Übernahme ins LocalStorage) + Backup-Export/Import | ✅ umgesetzt |
|
||||
|
||||
Damit sind alle in `anforderung.md` geforderten Kernfunktionen umgesetzt.
|
||||
Offen bleibt optionale Politur (Empty-States, A11y-Feinschliff,
|
||||
Adressgeocoding) — kein Muss laut Anforderung, bei Bedarf als eigene
|
||||
Folgephase.
|
||||
|
||||
## KI-JSON-Import + Backup (Phase 7)
|
||||
|
||||
- `js/import/importValidator.js`: reine Funktion `parseAndValidate(jsonText)`
|
||||
bewertet jeden Ausflugsziel-Eintrag im importierten KI-JSON EINZELN
|
||||
(kein Alles-oder-nichts). Pflicht für Übernahme: `name`, `category`,
|
||||
gültige Koordinaten — sonst Ablehnung mit Begründung. Weiche Probleme
|
||||
(unbekannte Kategorie, unbekannter Kosten-/Umgebungstyp, ungültige
|
||||
Bewertung, unsichere `website`/`image`-URL) führen zu einer Warnung,
|
||||
nicht zur Ablehnung; `sanitizeEntry()` setzt diese Felder vor der
|
||||
Übernahme sicherheitshalber zurück (z.B. `javascript:`-URLs → leerer
|
||||
String), BEVOR `normalizePlace()` sie verarbeitet, da dieses selbst
|
||||
keine Sicherheitsprüfung vornimmt. `findDuplicate()` erkennt
|
||||
wahrscheinliche Duplikate (Name + Koordinaten < 0.3 km) gegen den
|
||||
bestehenden Datenbestand.
|
||||
- `js/ui/import.js`: Modal mit zwei Tabs. Tab 1 "KI-Ausflugsziele
|
||||
importieren": Text einfügen ODER Datei hochladen (`FileReader`) →
|
||||
Prüfen → Vorschau (gültig/Warnung/abgelehnt, Duplikat-Hinweise, globaler
|
||||
"Duplikate überspringen"-Toggle) → Bestätigen. Tab 2 "Backup
|
||||
sichern/wiederherstellen" (`js/import/backup.js`): Export als
|
||||
JSON-Datei (`downloadTextFile`), Wiederherstellen mit Wahl
|
||||
"Ersetzen" (mit `confirm()`-Sicherheitsabfrage) oder "Ergänzen"
|
||||
(Upsert nach `id`).
|
||||
- Einstiegspunkt: Toolbar-Button "📥 KI-Ausflugsziele importieren".
|
||||
- Rendering der Vorschau ausschließlich über `el()`/`textContent`, da es
|
||||
sich um echte, ungeprüfte Fremddaten handelt.
|
||||
|
||||
## KI-Prompt-Generator (Phase 6)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user