Преглед на файлове

Add project roadmap and agent guidance

master
Jan Svabenik преди 1 месец
родител
ревизия
75fcaafe14
променени са 3 файла, в които са добавени 205 реда и са изтрити 57 реда
  1. +52
    -0
      AGENTS.md
  2. +41
    -57
      README.md
  3. +112
    -0
      docs/TARGET_STATE_AND_ROADMAP.md

+ 52
- 0
AGENTS.md Целия файл

@@ -0,0 +1,52 @@
# 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`).
- 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.


+ 41
- 57
README.md Целия файл

@@ -1,63 +1,47 @@
# QC Text Builder (Go)

Milestone 2 status:
- bootstrap app/server/config
- Quick Creator client contracts (Bearer token only)
- AI template sync endpoint
- onboarding/discovery endpoint with local manifest flattening
- site build flow via `POST /sites` using local manifest + own text (`content.aiData`)
- SQLite persistence (default) for settings, templates, manifests, fields, site builds, and build drafts
- build polling (`POST /api/site-builds/{id}/poll`) and background polling supervisor
- draft intake/review flow (`draft -> reviewed -> submitted`) before final build
- strict MVP scope: no ACP login flow, no DCM/EFL, no image payload handling

## Run

1. Set env vars:
QC Text Builder ist eine Go-Anwendung fuer den kontrollierten QC-Textprozess von Template bis Site-Build.

## Aktueller Stand

Die App kann heute:
- AI-Templates aus QC synchronisieren und anzeigen.
- Templates onboarden (Discovery/Manifest) und Felder fuer Mapping/Review bearbeiten.
- Drafts anlegen, aktualisieren und im Status `draft` -> `reviewed` -> `submitted` fuehren.
- Builds aus geprueften Daten starten sowie Job-Status pollen und Editor-URL nachladen.

Wichtig:
- Leadharvester-Intake und LLM-Autofill sind geplant, aber noch nicht fertig integriert.

## Lokaler Start

1. Env setzen:
- `HTTP_ADDR=:8080`
- `DB_DRIVER=sqlite` (default)
- `DB_URL=data/qctextbuilder.db` (default, local file)
- `DB_DRIVER=sqlite` (Default)
- `DB_URL=data/qctextbuilder.db` (Default)
- `QC_BASE_URL=https://qc-api.yggdrasil.dev-mono.net/api/v1`
- `QC_TOKEN=<your bearer token>`
2. Start:
- `QC_TOKEN=<bearer token>`
2. Starten:
- `go run ./cmd/qctextbuilder`

## API (Milestone 3)

- `GET /healthz`
- `POST /api/templates/sync`
- `GET /api/templates`
- `GET /api/templates/{id}`
- `POST /api/templates/{id}/onboard`
- `PUT /api/templates/{id}/fields`
- `POST /api/drafts/intake` (external prefilled draft intake)
- `GET /api/drafts`
- `GET /api/drafts/{id}`
- `PUT /api/drafts/{id}`
- `POST /api/site-builds`
- `GET /api/site-builds/{id}`
- `POST /api/site-builds/{id}/poll`
- `POST /api/site-builds/{id}/fetch-editor-url`

Draft payload (`POST /api/drafts/intake` / `PUT /api/drafts/{id}`) supports:
- `templateId`, optional `manifestId`
- `source`, `requestName`
- `globalData` (same documented QC fields as build flow)
- `fieldValues` keyed by manifest path (`section.keyName`)
- `status` (`draft|reviewed|submitted`), `notes`

Build request payload (`POST /api/site-builds`) expects:
- `templateId` (AI template only, onboarded/reviewed)
- `requestName`
- `globalData` (`companyName`, `email`, `username` required; all other documented fields optional)
- `fieldValues` keyed by manifest paths (`section.keyName`)

Documented `globalData` scope supported by UI/API mapping:
- `companyName`, `businessType`, `username`, `email`, `phone`
- `orgNumber`, `startDate`, `mission`, `descriptionShort`, `descriptionLong`, `siteLanguage`
- `address.line1`, `address.line2`, `address.city`, `address.region`, `address.zip`, `address.country`

UI note:
- `/builds/new` now supports loading an existing draft, reviewing/editing values, saving draft, and only then starting the build.
- Template fields in `/builds/new` are grouped block-first by extracted internal block IDs (for example `m1710`, `c7886`, `r4830`) with heuristic fallback for fields without block IDs.
- Template field settings in `/templates/{id}` include a persistent `websiteSection` mapping (`hero`, `intro`, `services`, `service_item`, `about`, `team`, `testimonials`, `cta`, `contact`, `footer`, `gallery`, `other`) used by `/builds/new` grouping with fallback when not set.
## Persistenz

Default ist SQLite.
Gespeichert werden Settings, Templates, Manifeste/Felder, Drafts und Site-Builds.

## Draft-/Review-Flow

Empfohlener Ablauf:
1. Draft anlegen oder via Intake vorbefuellen.
2. Inhalte im UI/API pruefen und anpassen.
3. Draft auf `reviewed` setzen.
4. Build starten; Draft wird auf `submitted` fortgeschrieben.

## Weiterfuehrende Projektdoku

Zielbild, Roadmap und Ausbaustufen stehen hier:
- `docs/TARGET_STATE_AND_ROADMAP.md`

Projektlokale Agentenleitplanken stehen hier:
- `AGENTS.md`


+ 112
- 0
docs/TARGET_STATE_AND_ROADMAP.md Целия файл

@@ -0,0 +1,112 @@
# Zielbild und Roadmap: QC Text Builder

## Zielbild

Die QC App ist die kontrollierte Text-Build-Pipeline zwischen Vorbefuellung und finalem QC-Site-Build.

Geplantes Endbild:
- Leadharvester liefert Stammdaten (z. B. Firmenname, Kontakt, Adresse, Branche) und optional eine Website-Zusammenfassung als Input.
- QC App uebernimmt Template-Logik: Template-Sync, Discovery/Manifest, Feld-Mapping, Feldgruppierung, Draft-Review und Build-Ausfuehrung.
- Builds werden nicht direkt aus externer Intake ohne Review durchgedrueckt, sondern ueber den Draft-/Review-Flow gesteuert.
- Spaeter erzeugt eine LLM-Unterstuetzung Feldvorschlaege und Draft-Befuellung, weiterhin mit menschlicher Review vor Submit.

## Rolle von Persistenz (SQLite)

SQLite ist aktuell die Standardpersistenz fuer den lokalen und Team-nahen Betrieb:
- Einstellungen (inkl. QC-Basisdaten)
- Templates
- Onboarding-Manifeste und Felder
- Drafts
- Site-Builds inkl. Polling-/Result-Status

Bedeutung:
- Nachvollziehbarkeit: Draft- und Build-Verlauf bleibt erhalten.
- Reproduzierbarkeit: Mapping-Stand und Feld-Entscheidungen sind persistent.
- Entkopplung: Intake, Review und Build koennen zeitlich getrennt stattfinden.

Hinweis: Eine produktive Postgres-Variante ist vorbereitet, aber noch nicht implementiert.

## Draft-/Review-Flow

Soll-Logik:
1. Intake/Vorbefuellung erzeugt oder aktualisiert einen Draft.
2. Draft wird im UI/API geprueft und angepasst.
3. Status wird auf `reviewed` gesetzt.
4. Erst dann wird Build gestartet; bei Build-Start wird der Draft auf `submitted` gesetzt.

Aktueller Stand:
- Draft-Erfassung, Listing, Update und UI-Weiterbearbeitung sind vorhanden.
- Build-Start erfordert bereits einen Template-Manifest-Status `reviewed`/`validated`.
- Prozessuale Review-Gates (z. B. Freigabe-Policy, Rollen, Pflichtchecks pro Feld) sind noch nicht vollstaendig ausgebaut.

## Geplante Leadharvester-Integration

Integrationsidee:
- Leadharvester ist Upstream fuer Stammdaten + optional Website-Zusammenfassung.
- Uebergabe erfolgt in die QC App als Draft-Intake (nicht als direkter Build-Trigger).
- QC App bleibt System of Control fuer:
- Template-Auswahl und Manifest-Logik
- Feld-Mapping/Transformation
- Review und Freigabe
- finalen Build-Call in QC

## Geplante LLM-Unterstuetzung

Spaeterer Ausbau in der QC App:
- Vorschlaege fuer fehlende Felder aus vorhandenen Stammdaten + Website-Zusammenfassung.
- Vorbefuellung von Drafts mit transparenten, ueberschreibbaren Vorschlaegen.
- Beruecksichtigung von `businessType` plus Stilprofil (Tone/Style), damit Vorschlaege branchenspezifisch und konsistent sind.

Wichtig: LLM ist Assistenz, kein automatischer Bypass des Review-Schritts.

## Security-Positionierung

Security-Haertung ist bewusst nachgelagert und noch nicht abgeschlossen.
- Aktuell liegt der Fokus auf funktionaler Pipeline (Template -> Draft/Review -> Build).
- Token-/Secret-Haertung und erweiterte Zugriffskontrollen werden in spaeteren Schritten priorisiert.

## Roadmap (Statuspflege)

Statusmarker:
- `[x]` erledigt
- `[-]` teilweise offen
- `[ ]` offen

### A) Fundament und laufender Betrieb
- [x] Go-App mit HTTP-UI + API-Endpunkten fuer Templates, Drafts und Builds.
- [x] SQLite als Default-Persistenz integriert (Templates, Manifeste/Felder, Drafts, Builds, Settings).
- [-] Alternative Persistenz (Postgres) nur als Stub vorbereitet, noch nicht umgesetzt.

### B) Template- und Manifest-Logik
- [x] AI-Template-Sync vorhanden.
- [x] Onboarding/Discovery erzeugt flatten Manifest-Felder.
- [x] Template-Felder sind editierbar (Enable/Required/Label/Order/WebsiteSection/Notes).
- [-] Feldqualitaetsregeln sind grundlegend vorhanden, aber ohne erweiterte Governance-Checks.

### C) Draft-/Review-/Build-Flow
- [x] Draft-Intake via API und Draft-Bearbeitung via UI/API.
- [x] Draft-Statusmodell (`draft`, `reviewed`, `submitted`) vorhanden.
- [x] Build aus Feldwerten + GlobalData inkl. QC-CreateSite-Aufruf.
- [x] Build-Polling, Timeout-Handling und Editor-URL-Fetch vorhanden.
- [-] Review-Gate ist noch nicht als strikter, rollenbasierter Freigabeprozess umgesetzt.

### D) Leadharvester-Integration
- [ ] Definierter Intake-Adapter von Leadharvester in `POST /api/drafts/intake`.
- [ ] Mapping-Contract fuer Stammdaten + optionale Website-Zusammenfassung.
- [ ] Monitoring/Fehlerbild fuer Intake-Qualitaet und Nachbearbeitungsquote.

### E) LLM-Assistenz
- [ ] Feldvorschlaege fuer fehlende Inhalte im Draft.
- [ ] Draft-Autofill mit nachvollziehbarer Herkunft je Feld.
- [ ] Stilprofil-Logik unter Beruecksichtigung von `businessType` + Tonalitaet.

### F) Security und Betriebsreife
- [ ] Verbindliche Secret-Strategie (verschluesselte Speicherung statt einfacher Platzhalterlogik).
- [ ] AuthN/AuthZ fuer sensible Schreiboperationen.
- [ ] Auditierbare Freigaben fuer Review/Submit-Schritte.

## Pflegehinweis

Dieses Dokument ist ein lebender Projektkompass.
Bei Scope-Aenderungen oder abgeschlossenen Roadmap-Punkten muessen Status und Text in diesem Dokument und im README synchron aktualisiert werden.


Loading…
Отказ
Запис