# AGENTS.md

Dieses Dokument definiert projektlokale Leitplanken fuer Menschen und Agenten, die an diesem Repo arbeiten.

## 1) Architekturprinzipien

- Trennung der Verantwortungen beibehalten:
  - `internal/*svc`: fachliche Logik (Template, Onboarding, Draft, Build, Mapping).
  - `internal/store/*`: Persistenz-Adapter.
  - `internal/httpserver/handlers`: Transport/UI-Glue, keine schwere Fachlogik duplizieren.
- Draft-/Review-/Build-Flow ist der zentrale Kontrollpfad.
- Persistenz ist Teil der Kernlogik, nicht optionales Nebenprodukt.
- Kleine, nachvollziehbare Aenderungen statt grosser Umbauten ohne klaren Nutzen.

## 2) Aktueller Scope

- AI-Template-Sync, Discovery/Onboarding und bearbeitbare Manifest-Felder.
- Draft-Intake, Draft-Bearbeitung und Statuswechsel (`draft`, `reviewed`, `submitted`).
- Externer Draft-Intake-Vertrag (`POST /api/drafts/intake`) fuer Stammdaten plus optionalen Website-/Stilkontext.
- Build-Start aus geprueften Daten, Polling und Editor-URL-Abruf.
- SQLite als Default-Datenhaltung fuer lokalen Betrieb.

## 3) Bewusst noch nicht machen

- Keine direkte Leadharvester->Build-Abkuerzung in der QC App.
- Kein unkontrolliertes Auto-Building ohne Draft-/Review-Schritt.
- Keine grossen Security-Umbauten im Vorbeigehen; Security wird gezielt spaeter gehaertet.
- Keine unnoetigen Architekturverschiebungen, die bestehende Build-/Draft-/Review-/Persistenzlogik verbiegen.

## 4) Leadharvester-Integration (Zielbild)

- Leadharvester liefert Upstream-Daten (Stammdaten + optional Website-Zusammenfassung).
- Uebergabe in die QC App erfolgt ueber Draft-Intake und anschliessende Review.
- Die QC App bleibt verantwortliche Stelle fuer Mapping, Template-Logik, Review und finalen Build.

## 5) Spaetere LLM-Features

- LLM-Unterstuetzung darf nur als Vorschlagssystem eingefuehrt werden (reviewbar/ueberschreibbar).
- Vorschlaege muessen `businessType` und ein Stilprofil (Tone/Style) beruecksichtigen.
- Kein LLM-Bypass des Review-Gates.

## 6) Doku-Pflegepflicht bei Aenderungen

Bei jeder relevanten Verhaltensaenderung:
- README kurz und aktuell halten (Ist-Stand, Start, Kernfluss).
- `docs/TARGET_STATE_AND_ROADMAP.md` aktualisieren (Zielbild/Roadmap).
- Roadmap-Status mit diesen Markern pflegen:
  - `[x]` erledigt
  - `[-]` teilweise offen
  - `[ ]` offen

Wenn ein Feature nur geplant ist, darf es nicht als fertig dokumentiert werden.

## 7) Umgang mit `data/qctextbuilder.db`

- `data/qctextbuilder.db` ist versionierbar, aber kein normales Immer-mitcommitten-Artefakt.
- Standardregel: bei normalen Code-/Doku-Commits **nicht** automatisch mit aufnehmen, auch wenn sich die Datei geaendert hat.
- Wenn ein reproduzierbarer lokaler Zustand bewusst festgehalten werden soll, darf die DB gezielt als eigener Snapshot-Commit aufgenommen werden.
- Snapshots der DB bewusst separat von Code-Commits halten, damit Aenderungen an Laufzeitdaten klar von Codeaenderungen getrennt bleiben.

