All checks were successful
CI / Unit & Component Tests (push) Successful in 3m23s
CI / OCR Service Tests (push) Successful in 24s
CI / Backend Unit Tests (push) Successful in 3m46s
CI / fail2ban Regex (push) Successful in 46s
CI / Semgrep Security Scan (push) Successful in 25s
CI / Compose Bucket Idempotency (push) Successful in 1m8s
## Summary - Removes the NLP/smart-search feature completely — the feature was too unreliable and slow; users get better results with the regular search filters - Deletes the entire backend `search/` package (NlSearchController, NlQueryParserService, NlpClient, NlSearchRateLimiter — 14 classes + 6 test classes) - Deletes the `nlp-service/` Python microservice (FastAPI, rapidfuzz, DB-backed person matching) - Removes all frontend NL search components: SmartModeToggle, SmartSearchStatus, InterpretationChipRow, DisambiguationPicker, chip-types, theme-chip-removal - Strips smart-mode logic from SearchFilterBar and documents/+page.svelte - Removes `SMART_SEARCH_UNAVAILABLE` / `SMART_SEARCH_RATE_LIMITED` error codes from backend, frontend types, and all three i18n files (de/en/es) - Removes `nlp-service` container and `APP_NLP_BASE_URL` from both docker-compose files - Removes Ollama/NLP Prometheus scrape job and Grafana dashboard - Deletes ADRs 028 (×2), 034, 035 ## Test plan - [ ] Backend compiles: `cd backend && ./mvnw compile -q` → BUILD SUCCESS - [ ] Frontend server tests pass: `cd frontend && npm run test -- --project=server` - [ ] No NLP/smart-search references remain in source: `grep -r "SmartSearch\|NlSearch\|nlp-service\|SMART_SEARCH" backend/src frontend/src` - [ ] `docker compose config` validates both compose files - [ ] Search page loads, filter bar works, no smart-mode toggle visible 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Marcel <marcel@familienarchiv> Reviewed-on: #772
C4-PlantUML Diagrams
Architecture diagrams in C4-PlantUML format. These are the authoritative source for layout-accurate diagrams. The companion c4-diagrams.md in the parent directory keeps Mermaid versions for inline Gitea rendering.
Render in Gitea
Gitea is configured to render .puml files as diagrams. Open any .puml file in the Gitea UI to see the rendered diagram.
Note:
plantumlcode fences inside Markdown files do not render inline in Gitea — this is a Gitea limitation unrelated to the server configuration. The.mdfiles in this repo use Mermaid for that reason.
Render in VS Code
Install the PlantUML extension (jebbs.plantuml). The project's .vscode/settings.json already points at the shared server:
plantuml.server = http://heim-nas:8500
Open any .puml file and press Alt+D to preview.
Files
| File | Diagram |
|---|---|
l1-context.puml |
Level 1 — System Context |
l2-containers.puml |
Level 2 — Containers |
l3-backend-3a-security.puml |
L3 Backend: Security & Authentication |
l3-backend-3b-document-management.puml |
L3 Backend: Document Management & Import |
l3-backend-3c-transcription.puml |
L3 Backend: Document Transcription Pipeline |
l3-backend-3d-users-groups.puml |
L3 Backend: Users, Groups & Administration |
l3-backend-3e-persons.puml |
L3 Backend: Persons & Family Graph |
l3-backend-3f-ocr.puml |
L3 Backend: OCR Orchestration |
l3-backend-3g-supporting.puml |
L3 Backend: Supporting Domains |
l3-frontend-3a-middleware-auth.puml |
L3 Frontend: Middleware, Auth & Layout |
l3-frontend-3b-document-workflows.puml |
L3 Frontend: Document Workflows |
l3-frontend-3c-people-stories.puml |
L3 Frontend: People, Stories & Discovery |
l3-frontend-3d-administration.puml |
L3 Frontend: Administration & Help |
seq-auth-flow.puml |
Sequence: Authentication Flow |
seq-document-upload.puml |
Sequence: Document Upload Flow |