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:
@@ -4,9 +4,10 @@
|
||||
// Ergebnis live in einem <textarea readonly> an. Bietet zusätzlich Buttons
|
||||
// zum Kopieren (Zwischenablage) und Speichern als Textdatei.
|
||||
//
|
||||
// WICHTIG: Diese Phase implementiert nur die Prompt-Erzeugung. Der spätere
|
||||
// JSON-Import (Einlesen der KI-Antwort zurück in die App) ist NICHT Teil
|
||||
// dieser Datei - das folgt in Phase 7.
|
||||
// WICHTIG: Diese Datei implementiert nur die Prompt-Erzeugung. Der JSON-Import
|
||||
// (Einlesen der KI-Antwort zurück in die App) ist NICHT Teil dieser Datei,
|
||||
// sondern liegt in js/ui/import.js (Phase 7, Button "📥 KI-Ausflugsziele
|
||||
// importieren" in der Toolbar).
|
||||
//
|
||||
// Aufbau/Muster analog zu js/ui/form.js (Modal mit Backdrop, Escape schließt,
|
||||
// Fokus auf erstes Feld beim Öffnen). Rendering ausschließlich über
|
||||
@@ -278,8 +279,8 @@
|
||||
}),
|
||||
el('li', {
|
||||
text:
|
||||
'Die JSON-Antwort der KI im nächsten Schritt (KI-JSON-Import, in einer späteren Version ' +
|
||||
'dieser Anwendung) prüfen und importieren.',
|
||||
'Die JSON-Antwort der KI kopieren und über den Button "📥 KI-Ausflugsziele importieren" ' +
|
||||
'(direkt neben diesem Button) prüfen und importieren.',
|
||||
}),
|
||||
]),
|
||||
]),
|
||||
|
||||
Reference in New Issue
Block a user