Upload workflow enhancements: S3 verification, timing, client checksum support (#19)
- Add S3 object verification after upload (size validation before DB commit) - Add cleanup of S3 objects if DB commit fails - Record upload duration_ms and user_agent - Support X-Checksum-SHA256 header for client-side checksum verification - Add already_existed flag to StorageResult for deduplication tracking - Add status, error_message, client_checksum columns to Upload model - Add UploadLock model for future 409 conflict detection - Add consistency-check admin endpoint for detecting orphaned S3 objects - Add migration 005_upload_enhancements.sql
This commit is contained in:
@@ -548,6 +548,19 @@ class StorageStatsResponse(BaseModel):
|
||||
storage_saved_bytes: int # Bytes saved through deduplication
|
||||
|
||||
|
||||
class ConsistencyCheckResponse(BaseModel):
|
||||
"""Result of S3/Database consistency check"""
|
||||
|
||||
total_artifacts_checked: int
|
||||
orphaned_s3_objects: int # Objects in S3 but not in DB
|
||||
missing_s3_objects: int # Records in DB but not in S3
|
||||
size_mismatches: int # Records where DB size != S3 size
|
||||
healthy: bool
|
||||
orphaned_s3_keys: List[str] = [] # Limited list of orphaned S3 keys
|
||||
missing_s3_keys: List[str] = [] # Limited list of missing S3 keys
|
||||
size_mismatch_artifacts: List[Dict[str, Any]] = [] # Limited list of mismatches
|
||||
|
||||
|
||||
class DeduplicationStatsResponse(BaseModel):
|
||||
"""Deduplication effectiveness statistics"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user