fix: uniform /api/v1/ prefix, real EFI detection, spec alignment
Backend:
- All routes now consistently under /api/v1/ (health, analyze, jobs)
- Replace dummy EFI heuristic with actual guestfish-based detect_efi()
- Add path traversal validation on analyze source_filename
- Use typed response models (HealthResponse, CleanupResponse) everywhere
- Clean up unused imports (Path, ErrorResponse)
Models:
- Align AnalyzeResponse with open-api.yaml (add vmid, remove bootable/error,
make efi_detectable nullable, deduplicate CleanupResponse)
Converter:
- Add detect_efi(disk_path) using guestfish list-filesystems
Frontend:
- Update api_client paths to /api/v1/health and /api/v1/analyze
- Remove unsupported 'network' field from job payload
Spec:
- Promote inline HealthResponse/CleanupResponse to named schemas
- Move /analyze and /health under /api/v1/ prefix
Docs:
- Add README.md with architecture, install, API reference, usage flow