feat: guided setup — free-text AI path (phase 1.2)

The wizard's first step now offers 'or just describe what you want
to do': the goal goes to the configured system AI, which maps it
onto the menu answers (validated against strict enum whitelists —
a hallucinated value can never reach the engine). The suggestion
comes back as an editable plain-language reflection ('this is how I
read your task') the operator can adjust step-by-step or take to
the same preview/apply the menu path uses. Trust rules per
guided-setup.md: suggestion only (never auto-apply), a privacy line
states whether the description is processed locally or sent to a
provider, and without a configured system AI the section explains
that the menu always works — no dead end.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-12 23:24:27 +02:00
parent 1f1e050b42
commit 09c901b75e
7 changed files with 619 additions and 2 deletions

View file

@ -3182,6 +3182,66 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get setupStartCta => 'In 3 Fragen loslegen';
@override
String get setupFreeTextHint =>
'z. B.: Eingehende Anträge vorprüfen und unvollständige markieren';
@override
String get setupFreeTextSuggest => 'Vorschlagen lassen';
@override
String setupFreeTextPrivacyLocal(String model) {
return 'Ihre Beschreibung wird lokal auf diesem Rechner verarbeitet ($model).';
}
@override
String setupFreeTextPrivacyRemote(String model, String provider) {
return 'Ihre Beschreibung wird an die eingerichtete System-KI gesendet: $model ($provider).';
}
@override
String get setupFreeTextUnavailable =>
'Für den Freitext-Weg braucht Ch∆In eine eingerichtete System-KI (Einstellungen → System-KI). Die Auswahl oben funktioniert immer — ganz ohne KI.';
@override
String get setupFreeTextParseError =>
'Die System-KI hat keinen verwertbaren Vorschlag geliefert. Wählen Sie oben aus dem Menü — oder versuchen Sie es noch einmal.';
@override
String get setupReflectionTitle => 'So verstehe ich Ihre Aufgabe';
@override
String setupReflectionScenario(String label) {
return 'Worum es geht: $label';
}
@override
String setupReflectionIntent(String label) {
return 'Erste Aufgabe: $label';
}
@override
String setupReflectionTarget(String label) {
return 'Umgebung: $label';
}
@override
String get setupReflectionApproval =>
'Vor jedem KI-Schritt wird ein Mensch um Freigabe gebeten.';
@override
String get setupReflectionDataLocal => 'Daten bleiben vollständig im Haus.';
@override
String get setupReflectionEditHint =>
'Es wird nichts ohne Ihre Bestätigung geändert. Passen Sie die Punkte an oder gehen Sie direkt zur Vorschau.';
@override
String get setupReflectionAdjust => 'Anpassen';
@override
String get setupReflectionToPreview => 'Zur Vorschau';
@override
String get setupProfileDev => 'unkomplizierter Arbeitsplatz';