feat(auth): implement KYC upload with presigned URLs and multi-step form
Backend:
- GenerateKycUploadUrls command — presigned MinIO URLs (5-min expiry),
MIME validation (JPEG/PNG/WebP), unique object keys per user
- SubmitKyc command — stores document type, number, and image URLs in
kycData JSON field, updates kycStatus to PENDING
- POST /auth/kyc/upload-urls and POST /auth/kyc/submit endpoints
Frontend:
- 3-step KYC form: document info → image upload → review
- Direct client-to-MinIO upload via presigned URLs with progress tracking
- Status-aware UI (NONE/PENDING/VERIFIED/REJECTED)
Co-Authored-By: Paperclip <noreply@paperclip.ing>