38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# Current Status
|
|
|
|
## T05: Dateiablage pro Fahrzeug + File UI
|
|
|
|
**Status:** COMPLETED
|
|
|
|
### Backend
|
|
- ✅ File model (app/models/file.py) - UUID PK, vehicle_id FK, all fields
|
|
- ✅ File schemas (app/schemas/file.py) - FileUploadResponse, FileResponse, FileListResponse, FileDeleteResponse
|
|
- ✅ File service (app/services/file_service.py) - upload, get, list, delete, validate_mime_type, validate_file_size
|
|
- ✅ Thumbnail utils (app/utils/thumbnails.py) - 200x200 thumbnails via Pillow for jpg/png/webp
|
|
- ✅ Files router (app/routers/files.py) - GET/POST/GET/DELETE endpoints registered in main.py
|
|
- ✅ Backend tests (tests/test_files.py) - 43 tests, all passing, 82% coverage
|
|
|
|
### Frontend
|
|
- ✅ Files lib (lib/files.ts) - API functions, types, utilities
|
|
- ✅ FileUpload component - Drag-and-drop multi-file upload
|
|
- ✅ FileList component - File list with thumbnails, delete confirm dialog
|
|
- ✅ FileGallery component - Gallery view for vehicle images
|
|
- ✅ FilePreview component - File preview modal
|
|
- ✅ Frontend tests (tests/files.test.tsx) - 25 tests, all passing
|
|
- ✅ TypeScript build check passes
|
|
|
|
### Acceptance Criteria Met
|
|
- ✅ GET /api/v1/vehicles/:id/files → 200 + list of files
|
|
- ✅ POST /api/v1/vehicles/:id/files mit multipart image → 201 + file object
|
|
- ✅ POST /api/v1/vehicles/:id/files mit >20MB file → 413
|
|
- ✅ POST /api/v1/vehicles/:id/files mit invalid MIME type → 422
|
|
- ✅ GET /api/v1/vehicles/:id/files/:fileId → 200 + file content (download)
|
|
- ✅ DELETE /api/v1/vehicles/:id/files/:fileId → 200 + file deleted
|
|
- ✅ File gespeichert in uploads_data volume, path in DB gespeichert
|
|
- ✅ Image files → Thumbnail generiert (200x200)
|
|
- ✅ Frontend File Upload akzeptiert Drag-and-Drop multi-file
|
|
- ✅ Frontend File List zeigt Thumbnails für images
|
|
- ✅ Frontend File Delete zeigt Confirm Dialog
|
|
- ✅ Frontend Gallery view für Fahrzeug-Bilder
|
|
- ✅ pytest coverage >= 80% für file module (82%)
|