Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

3.9KB

Autofill Preview/Apply/Regenerate Plan

Ziel

Einen echten, reviewbaren Suggestion-Workflow fuer Draft/Build einfuehren: Vorschlaege separat persistieren, im UI als Preview anzeigen und nur explizit anwenden (global/per-field), inklusive Regenerate (global/per-field) ohne stilles Ueberschreiben von Feldwerten.

Leitplanken

  • Draft/Review/Build bleibt Kontrollpfad; kein Direkt-Build aus Suggestions.
  • Persistenz ist Kernbestandteil: Suggestions werden am Draft gespeichert.
  • Kleine, nachvollziehbare Aenderungen in bestehender Architektur (mapping/draftsvc/handlers/store).
  • LLM-first Suggestion-Engine ueber den bestehenden Providerpfad; Rule-based bleibt als Fallback/Testpfad.

Umsetzungs-Schritte

  1. Domain + Persistenz vorbereiten
  • domain.BuildDraft um SuggestionStateJSON erweitern.
  • Neue Domain-Typen fuer Suggestionen einfuehren:
    • Suggestion Item (fieldPath, slot, value, reason, source, status, generatedAt, updatedAt)
    • Suggestion Status (suggested, applied, dismissed als Basis)
    • Suggestion State (Map nach FieldPath plus optionaler Metadatenraum fuer spaeteres Section-Scoping).
  • SQLite-Migration 005_* fuer neue Spalte suggestion_state_json in build_drafts.
  • SQLite + Memory Store (create/update/select/scan/clone) auf neue Spalte aktualisieren.
  1. Suggestion-Service in mapping erweitern
  • Bestehende Suggestion-Generierung so erweitern, dass sie auch fuer bereits befuellte Felder laufen kann (UI-Preview fuer alle Felder moeglich).
  • Neue Helper einbauen:
    • GenerateAllSuggestions (aus fields + globalData + draftContext + optional bestehendem State)
    • RegenerateAllSuggestions
    • RegenerateFieldSuggestion
    • ApplySuggestionToField
    • ApplySuggestionsToEmptyFields
  • Stabilitaetsregel: Apply schreibt nur bei explizitem Apply in fieldValues; kein implizites Ueberschreiben.
  1. Draft-Service fuer Suggestion-State erweitern
  • draftsvc.UpsertDraftRequest um SuggestionState erweitern.
  • SaveDraft soll Suggestion-State JSON persistieren und bei fehlender Angabe bestehenden State behalten (analog DraftContext).
  1. UI-Flow/Handler implementieren
  • Neue UI-Action fuer Autofill einbauen (z. B. POST /builds/drafts/autofill).
  • Handler verarbeitet Aktionen:
    • generate_all
    • regenerate_all
    • apply_all_empty
    • regenerate_field (mit target_field_path)
    • apply_field (mit target_field_path)
  • Handler liest aktuelles Form + fieldValues + suggestionState aus Request, berechnet neuen Zustand, speichert Draft (wenn Draft-ID vorhanden) und rendert dieselbe Build-Seite mit aktualisiertem Vorschauzustand.
  • Struktur so halten, dass spaeter target_section ohne Redesign ergaenzbar ist.
  1. UI/Template anpassen
  • Feldtextareas zeigen nur echte Feldwerte, nicht mehr auto-eingefuellt aus Suggestion.
  • Suggestion separat unterhalb des Feldes anzeigen (Value + Reason + Status).
  • Controls ergaenzen:
    • Global: Generate all, Regenerate all, Apply all to empty
    • Pro Feld: Apply, Regenerate
  • Hidden Inputs fuer Suggestion-State + Ziel-Feldpfad/Action integrieren.
  1. Tests
  • internal/mapping/suggestions_test.go erweitern:
    • Vorschlaege auch bei befuellten Feldern generierbar
    • Apply-all-empty ueberschreibt keine bestehenden Werte
    • Field-Regenerate aktualisiert nur Ziel-Feld
  • Handler-Tests in internal/httpserver/handlers fuer Autofill-Action-Parsing/Anwendungslogik.
  • Store-/Draftsvc-Tests dort erweitern, wo Suggestion-JSON durchgereicht wird.
  1. Doku aktualisieren
  • README: neuen Autofill Preview/Apply/Regenerate Stand kurz beschreiben.
  • docs/TARGET_STATE_AND_ROADMAP.md: Status in Abschnitt LLM-Assistenz auf teilweise umgesetzt aktualisieren, ohne LLM-Fertigstellung vorzutaeuschen.

Abgrenzung fuer diesen Schritt

  • Keine per-section Buttons in diesem Commit, aber Daten- und Action-Struktur vorbereitet (target_scope/target_field_path), damit per-section spaeter additiv hinzufuegbar ist.
  • Keine Security- oder Auth-Aenderungen.
  • Kein Build-Flow-Bypass.