feat(knowledge): add service library

This commit is contained in:
DS | Schubert 2026-07-03 10:25:52 +02:00
parent ecab0fe6b6
commit 228da8f814
32 changed files with 2878 additions and 6 deletions

View file

@ -511,6 +511,69 @@ Athena nutzt einen globalen Toast-Provider fuer konsistente Erfolgs- und Fehlerm
Aktuell werden Toasts in den CRUD-Flows fuer Benutzer, Rollen, Kunden und Ansprechpartner genutzt. Inline-Fehler bleiben dort erhalten, wo sie fuer Formulare und Dialoge hilfreich sind.
## Wissensdatenbank / Service Library
v0.6.0 fuehrt das Modul Wissensdatenbank ein. Es verwaltet Hersteller, Geraete und Modelle, Dokumente sowie Reparaturhinweise fuer Funktechnik, Elektronikreparatur und Werkstattbetrieb.
Hermes stellt dafuer Tabellen mit dem Prefix `knowledge_` bereit:
- `knowledge_manufacturers`
- `knowledge_devices`
- `knowledge_documents`
- `knowledge_notes`
- `knowledge_categories`
Athena stellt die BFF-Routen unter `/api/knowledge/...` bereit. Der Browser spricht weiterhin ausschliesslich mit Athena.
### Knowledge-Dateispeicherung
Dokumentuploads werden in v0.6.0 lokal im Hermes-Container oder in einem gemounteten Volume gespeichert.
Konfiguration:
- `KNOWLEDGE_STORAGE_PATH`, Default `/data/knowledge`
- `KNOWLEDGE_MAX_UPLOAD_MB`, Default `50`
Docker Compose bindet das persistente Volume `knowledge-data` nach `/data/knowledge` ein. Dieses Volume darf nicht geloescht werden, wenn lokale Knowledge-Dateien erhalten bleiben sollen.
Erlaubte Uploadtypen:
- PDF
- JPG/JPEG
- PNG
- WEBP
- TXT
- ZIP
Hermes normalisiert Dateinamen, validiert Extension und MIME-Type, begrenzt die Uploadgroesse und erzwingt, dass gespeicherte und heruntergeladene Dateien innerhalb von `KNOWLEDGE_STORAGE_PATH` liegen.
### Knowledge-RBAC
Neue Berechtigungen:
- `knowledge.read`
- `knowledge.create`
- `knowledge.update`
- `knowledge.delete`
- `knowledge.upload`
- `knowledge.download`
Standardrollen:
- `administrator`: alle Knowledge-Rechte
- `management`: `knowledge.read`, `knowledge.download`
- `technician`: `knowledge.read`, `knowledge.create`, `knowledge.update`, `knowledge.upload`, `knowledge.download`
- `support`: `knowledge.read`, `knowledge.download`
- `guest`: keine Knowledge-Rechte
Hermes erzwingt diese Rechte serverseitig. Athena nutzt sie nur fuer Navigation und UI.
### Paperless-Vorbereitung
Eine echte Paperless-ngx-Integration ist in v0.6.0 nicht aktiv. Dokumente enthalten bereits `paperless_document_id` und `external_url`, damit spaeter ein PaperlessConnector angebunden werden kann. API-Keys oder verpflichtende Paperless-Umgebungsvariablen werden in v0.6.0 nicht eingefuehrt.
Spaetere Verknuepfungen sind fuer Kunden, Projekte, Tickets und Reparaturen vorgesehen.
## Verzeichnisstruktur
```text
@ -564,6 +627,12 @@ docker-compose.yml
`LOG_LEVEL`
: Runtime-Loglevel fuer Hermes, z. B. `INFO`, `WARNING` oder `ERROR`.
`KNOWLEDGE_STORAGE_PATH`
: Lokales Speicherverzeichnis fuer Knowledge-Dateien. Default `/data/knowledge`.
`KNOWLEDGE_MAX_UPLOAD_MB`
: Maximale Uploadgroesse fuer Knowledge-Dokumente in MB. Default `50`.
### Athena
`HERMES_INTERNAL_URL`