feat(backup): add enterprise backup & restore foundation

This commit is contained in:
Schubert Ferenc 2026-07-05 17:13:31 +02:00
parent 7835d3ca75
commit 6c917df515
30 changed files with 1538 additions and 61 deletions

View file

@ -0,0 +1,57 @@
from datetime import datetime
from pydantic import BaseModel, Field
class BackupManifest(BaseModel):
backup_id: str
created_at: datetime
app_version: str
backup_type: str = "full"
database_url_host_anonymized: str
database_name: str
storage_base_path: str
included_sections: list[str] = Field(default_factory=list)
file_count: int = 0
total_size_bytes: int = 0
checksum_sha256: str
created_by_user_id: int | None = None
created_by_username: str = ""
class BackupSummary(BaseModel):
filename: str
size_bytes: int
created_at: datetime | None = None
app_version: str = ""
backup_type: str = "full"
database_name: str = ""
storage_base_path: str = ""
file_count: int = 0
total_size_bytes: int = 0
created_by_user_id: int | None = None
created_by_username: str = ""
validation_status: str = "valid"
validation_message: str = ""
class BackupListResponse(BaseModel):
items: list[BackupSummary] = Field(default_factory=list)
total_count: int = 0
total_size_bytes: int = 0
latest_backup_at: datetime | None = None
class BackupValidationResponse(BaseModel):
filename: str
valid: bool
message: str
issues: list[str] = Field(default_factory=list)
checksum_valid: bool = False
restore_supported: bool = False
requires_cli_restore: bool = True
manifest: BackupManifest | None = None
class BackupRestoreRequest(BaseModel):
confirm_text: str