feat(T04): Rentman Integration - Equipment Sync, Images & Frontend #5

Closed
Leopoldadmin wants to merge 0 commits from feature/T04-rentman-integration into main
Owner

Summary

Vollständige Rentman-Integration für das HMS Licht & Ton Buchungssystem.

Changes

Backend

  • rentman_service.py: transform_equipment() liest korrekt image (singular) statt images, löst S3-URL über /files/{id} auf, übernimmt updateHash
  • sync_service.py: Inkrementelle Sync über updateHash-Vergleich - nur geänderte/neue Artikel werden upsertiert, Bilder nur für geänderte Artikel heruntergeladen, gelöschte Artikel → available=False
  • equipment.py (model): update_hash Spalte + image_url Property (liefert /api/equipment/{id}/image)
  • equipment.py (router): Neuer Endpoint GET /api/equipment/{id}/image liefert JPEG, model_dump() Fix für Redis-Cache

Frontend

  • mietkatalog.vue: Echte API-Anbindung via useAsyncData statt 18 hartcodierter Mock-Artikel
  • mietkatalog/[id].vue: Detail-Seite auf echte API umgestellt
  • nuxt.config.ts: Nitro-Proxy /api/**http://backend:8000/api/**, korrekte SSR/Client apiBase-Trennung
  • useApi.ts: SSR nutzt http://backend:8000, Client nutzt /api (relativ)

Infrastructure

  • docker-compose.yml: Volume ./images:/data/images für lokale Bildspeicherung, Traefik Service-Port-Label
  • .gitignore: images/ ausgeschlossen (Binärdateien)

Verified

  • 740 Artikel synchronisiert, 0 Fehler
  • 392 Bilder lokal gespeichert (36 MB)
  • Inkrementeller Sync: 2. Sync-Lauf in 3.1s (nur Hash-Abgleich)
  • Frontend zeigt echte Daten + Bilder unter https://hms.media-on.de/mietkatalog
  • Image-Endpoint liefert JPEG (Content-Type: image/jpeg)

Test Results

Kriterium Status
Backend startet fehlerfrei
Sync: 740 items, 0 failed
API liefert image_url
Image-Endpoint: JPEG 200
Frontend zeigt Bilder
Inkrementeller Sync 3.1s vs 2.5min
## Summary Vollständige Rentman-Integration für das HMS Licht & Ton Buchungssystem. ### Changes **Backend** - `rentman_service.py`: `transform_equipment()` liest korrekt `image` (singular) statt `images`, löst S3-URL über `/files/{id}` auf, übernimmt `updateHash` - `sync_service.py`: Inkrementelle Sync über `updateHash`-Vergleich - nur geänderte/neue Artikel werden upsertiert, Bilder nur für geänderte Artikel heruntergeladen, gelöschte Artikel → `available=False` - `equipment.py` (model): `update_hash` Spalte + `image_url` Property (liefert `/api/equipment/{id}/image`) - `equipment.py` (router): Neuer Endpoint `GET /api/equipment/{id}/image` liefert JPEG, `model_dump()` Fix für Redis-Cache **Frontend** - `mietkatalog.vue`: Echte API-Anbindung via `useAsyncData` statt 18 hartcodierter Mock-Artikel - `mietkatalog/[id].vue`: Detail-Seite auf echte API umgestellt - `nuxt.config.ts`: Nitro-Proxy `/api/**` → `http://backend:8000/api/**`, korrekte SSR/Client apiBase-Trennung - `useApi.ts`: SSR nutzt `http://backend:8000`, Client nutzt `/api` (relativ) **Infrastructure** - `docker-compose.yml`: Volume `./images:/data/images` für lokale Bildspeicherung, Traefik Service-Port-Label - `.gitignore`: `images/` ausgeschlossen (Binärdateien) ### Verified - 740 Artikel synchronisiert, 0 Fehler - 392 Bilder lokal gespeichert (36 MB) - Inkrementeller Sync: 2. Sync-Lauf in 3.1s (nur Hash-Abgleich) - Frontend zeigt echte Daten + Bilder unter https://hms.media-on.de/mietkatalog - Image-Endpoint liefert JPEG (Content-Type: image/jpeg) ### Test Results | Kriterium | Status | |---|---| | Backend startet fehlerfrei | ✅ | | Sync: 740 items, 0 failed | ✅ | | API liefert image_url | ✅ | | Image-Endpoint: JPEG 200 | ✅ | | Frontend zeigt Bilder | ✅ | | Inkrementeller Sync | ✅ 3.1s vs 2.5min |
Leopoldadmin added 2 commits 2026-07-11 16:22:25 +00:00
- Update equipment model with Rentman-compatible fields
- Add/Update equipment router endpoints for sync operations
- Enhance rentman_service with full API client logic
- Improve sync_service for bidirectional equipment sync
- Update docker-compose with Rentman env vars
- Update frontend useApi composable and nuxt config
- Update mietkatalog pages with Rentman-integrated data display
- Add images/ to .gitignore (binary assets, 36MB)
Leopoldadmin closed this pull request 2026-07-11 16:24:28 +00:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Leopoldadmin/hms-licht-ton#5