KB Helpdesk Editor / Search / Ollama / Staging Review Workflow
Quality report
Date: 2026-07-29

Implemented review workflow
---------------------------
- Editor scope switch: Production / Staging
- Staging count in UI and health endpoint
- Staging search/filter with existing q, auto_reply, language, style and source filters
- Staging article editing in form view and raw JSON view
- Single promote: staging -> productive knowledge directory
- Single delete: staging -> staging/.trash
- Bulk promote/delete for selected staging articles
- Promoted originals archived below staging/.approved for audit
- Production import refuses duplicate IDs and existing target filenames
- Unknown JSON fields are preserved on staging edits and promotion
- Google/viewer mode blocks staging list/write/delete/promote APIs server-side
- Ollama fallback continues to save only into staging

Validation
----------
PASS  go test ./...
PASS  go test -race ./...
PASS  go vet ./...
PASS  go build ./cmd/server
PASS  node --check cmd/server/web/app.js
PASS  node --check cmd/server/viewer/app.js
PASS  docker-compose.yml YAML parse
PASS  docker-compose.dual.yml YAML parse
PASS  editor DOM selector/ID consistency check
PASS  binary E2E: staging search -> update -> promote -> production -> .approved

E2E assertions
--------------
- active staging count before promotion: 1
- production count before promotion: 0
- matching staging search results: 1
- production files after promotion: 1
- active staging files after promotion: 0
- approved audit files after promotion: 1

Docker note
-----------
The Docker CLI/daemon is not available in this execution environment, so an
actual `docker build` was not executed. Docker Compose files were parsed as YAML,
and the Go binary itself was exercised end-to-end.
