Add S3 presigned URL direct upload (presign → PUT → confirm)

- Add presign endpoint: POST /api/v1/transactions/presign
- Add confirm endpoint: POST /api/v1/transactions/confirm
- Add generate_presigned_put_url() to MinIO service with public endpoint support
- Add public_endpoint field to MinioConfig
- Keep legacy /upload endpoint as fallback

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka_Company
2026-05-28 12:51:10 +08:00
parent e3c84540eb
commit fe81153491
5 changed files with 100 additions and 7 deletions

View File

@@ -1,7 +1,18 @@
from pydantic import BaseModel
class UploadResponse(BaseModel):
success: bool
data: dict | None = None
error: str | None = None
class PresignRequest(BaseModel):
original_filename: str
class PresignData(BaseModel):
upload_url: str
object_key: str
ref_id: str
class ConfirmRequest(BaseModel):
ref_id: str
object_key: str
original_filename: str
user_note: str | None = None