- ManifestField bekommt semantic_slot/mapping_source/mapping_confidence
(Migration 009, Domain-Model, SQLite-Store).
- Neuer AISlotMapper ruft den aktiven LLM-Provider mit cleverem Prompt:
klassifiziert jedes Textfeld in einen festen Slot-Katalog (hero/intro/
about/cta/service_items[N]/team_items[N]/testimonial_items[N]) anhand
Section, Block-ID, displayOrder und Sample-Wert.
- Onboarding ruft den Mapper nach Discovery auf und persistiert die Slots
als source=ai. Fehler werden gelogged, Onboarding bleibt erfolgreich.
- MapTemplateFieldsToSemanticSlots respektiert persistierte Slots; die
Rule-basierte Logik laeuft nur fuer Felder ohne Slot weiter.
- Template-Detail-UI hat neue Dropdown-Spalte "Semantic Slot"; manueller
Override setzt source=manual. Custom-Werte (ausserhalb der Liste)
bleiben sichtbar und werden nicht versehentlich ueberschrieben.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Google Places Suggestion Generator (Text Search + Place Details) zieht
Author/Text aus Top-Reviews und fuellt testimonial_items[N].name/.description.
API-Key kommt aus den Settings (neues Feld GooglePlacesAPIKeyEncrypted,
Migration 008, Settings-UI-Input).
- Generator wird in der Composite-Chain vor den LLM-Generatoren eingehaengt;
Fehler/kein Key fallen automatisch auf den LLM-Pfad zurueck.
- IntakeDraft normalisiert flache addressXxx-Felder (wie Leadharvester sie
liefert) in globalData.address.{line1,city,...}, damit Build-Form und
Places-Generator die Adresse korrekt sehen.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Textfeld durch <select> mit allen erlaubten BusinessType-Werten ersetzt.
Aktiviert korrekte Stock-Image-Auswahl bei useStockImages=true.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>