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:
+13
@@ -18,6 +18,7 @@
|
||||
<link rel="stylesheet" href="css/filters.css" />
|
||||
<link rel="stylesheet" href="css/promptGenerator.css" />
|
||||
<link rel="stylesheet" href="css/manualLocation.css" />
|
||||
<link rel="stylesheet" href="css/import.css" />
|
||||
<link rel="stylesheet" href="css/responsive.css" />
|
||||
</head>
|
||||
<body>
|
||||
@@ -53,6 +54,9 @@
|
||||
<button id="open-prompt-generator-btn" type="button" class="btn btn--secondary">
|
||||
🤖 Neue Ausflugsziele mit KI erstellen
|
||||
</button>
|
||||
<button id="open-import-btn" type="button" class="btn btn--secondary">
|
||||
📥 KI-Ausflugsziele importieren
|
||||
</button>
|
||||
</div>
|
||||
<div id="map" class="map-panel__map">
|
||||
<p class="map-panel__loading">Karte wird geladen…</p>
|
||||
@@ -73,6 +77,7 @@
|
||||
<div id="place-form-modal" class="place-form-modal" hidden></div>
|
||||
<div id="manual-location-modal" class="manual-location-modal" hidden></div>
|
||||
<div id="prompt-generator-modal" class="prompt-generator-modal" hidden></div>
|
||||
<div id="import-modal" class="import-modal" hidden></div>
|
||||
|
||||
<script src="vendor/leaflet/leaflet.js"></script>
|
||||
<script src="vendor/leaflet.markercluster/leaflet.markercluster.js"></script>
|
||||
@@ -110,6 +115,14 @@
|
||||
<script src="js/ai/promptBuilder.js"></script>
|
||||
<script src="js/ui/promptGenerator.js"></script>
|
||||
|
||||
<!-- KI-JSON-Import + Backup-Export/Import (Phase 7): js/import/*.js sind
|
||||
reine Validierungs-/Datenfunktionen ohne DOM-Zugriff und setzen daher
|
||||
nur EventMap.utils/models/config/store voraus (bereits geladen);
|
||||
js/ui/import.js baut darauf auf. -->
|
||||
<script src="js/import/importValidator.js"></script>
|
||||
<script src="js/import/backup.js"></script>
|
||||
<script src="js/ui/import.js"></script>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user