feat(repairs): add repair documents

This commit is contained in:
Schubert Ferenc 2026-07-05 00:34:57 +02:00
parent 884a20e043
commit 6e7e75f864
21 changed files with 1222 additions and 6 deletions

View file

@ -322,6 +322,64 @@ Hermes-Endpunkte:
Athena ruft diese Endpunkte ausschliesslich ueber BFF-Routen unter `/api/system-settings/...` auf. Mutierende Requests verwenden den bestehenden Same-Origin-Schutz. Zugriff erfordert `system_settings.manage`, das der Administratorrolle zugewiesen ist.
### Reparaturdokumente
Ab v0.8.5 verwaltet Olympus Bilder und Dokumente direkt an Reparaturen. Die Fachlogik liegt im Repair-Modul, Dateizugriffe laufen ueber das zentrale Storage Framework.
Datenmodell `repair_documents`:
- `repair_id`
- `title`
- `document_type`
- `original_filename`
- `stored_filename`
- `storage_path`
- `mime_type`
- `size_bytes`
- `checksum_sha256`
- `visibility`
- `note`
- `uploaded_by_user_id`
- Zeitstempel
Dokumenttypen:
- `device_photo`
- `fault_photo`
- `measurement`
- `estimate`
- `repair_report`
- `shipping`
- `other`
`visibility` kann `internal` oder `customer` sein. Die Kundensicht ist nur vorbereitet; in v0.8.5 werden Dokumente nicht oeffentlich fuer Kunden ausgeliefert.
Storage:
- Namespace: `repairs/<repair_id>/documents`
- Erlaubte Uploads: JPG, PNG, WEBP und PDF
- Dateinamen werden normalisiert
- SHA-256 wird gespeichert
- Dateiinhalte werden nicht geloggt
- Storage-Pfade werden nicht in Audit-Metadaten geschrieben
- Browser erhalten Dateien nur ueber Athena-BFF und Hermes-RBAC
Hermes-Endpunkte:
- `GET /repairs/{id}/documents`
- `POST /repairs/{id}/documents/upload`
- `GET /repairs/{id}/documents/{document_id}`
- `PUT /repairs/{id}/documents/{document_id}`
- `GET /repairs/{id}/documents/{document_id}/download`
- `DELETE /repairs/{id}/documents/{document_id}`
RBAC:
- Liste, Detail und Download erfordern `repairs.read`.
- Upload, Aenderung und Loeschung erfordern `repairs.update`.
Athena ruft diese Endpunkte ausschliesslich ueber `/api/repairs/[id]/documents...` auf. Mutierende Requests verwenden den Same-Origin-Schutz.
### Website Repair Intake
Hermes stellt `POST /public/repair-intake` fuer eine spaetere serverseitige Website-Anbindung bereit.
@ -741,6 +799,8 @@ Seit v0.7.0 laufen Knowledge-Dateien ueber das zentrale Storage Framework. Knowl
Neue Uploads werden im Namespace `knowledge/documents/<manufacturer_id>` gespeichert. Die Datenbank-Metadaten bleiben kompatibel: `knowledge_documents.file_path` enthaelt den Storage-Key fuer neue Dateien oder einen bestehenden Legacy-Pfad fuer alte Dateien.
Reparaturdokumente werden ab v0.8.5 im Namespace `repairs/<repair_id>/documents` gespeichert. Zulaessig sind JPG, PNG, WEBP und PDF. PDF-Anzeige bleibt auf Inline-Open/Download begrenzt; ein eigener PDF-Viewer ist ein spaeteres Feature.
Konfiguration:
- `STORAGE_PROVIDER`, Default `local`