feat: implement update backend API and client logic
Add complete update mechanism for client-side updates: - backend/update.py: Core update logic (check, apply, rollback, status/logs) - backend/app.py: REST API endpoints (GET /update/status, POST /update/check, POST /update/apply, POST /update/rollback, GET /update/logs) - backend/models.py: Pydantic models for update API responses - backend/settings.py: Update config (status/log file paths) - scripts/rollback_client.sh: Rollback script for failed updates - scripts/update_client.sh: Enhanced update client script - CLAUDE.md: Documentation for future Claude Code instances Complete US_000026-028 and TASK_000027-029: - US_000026: Client pulls updates from remote service - US_000027: Client verifies and applies updates atomically - US_000028: Client reports update status to backend All endpoints require authentication. Updates run asynchronously. Documentation updated per SOP (CHANGELOG, PROJECT_STATUS, stories/tasks). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -34,3 +34,32 @@ class LoginRequest(BaseModel):
|
||||
class LoginResponse(BaseModel):
|
||||
token: str
|
||||
expires_in: int
|
||||
|
||||
|
||||
class UpdateStatus(BaseModel):
|
||||
current_version: str
|
||||
last_status: str
|
||||
last_error: Optional[str] = None
|
||||
last_timestamp: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateCheckResponse(BaseModel):
|
||||
available: bool
|
||||
latest_version: str
|
||||
artifact_url: str
|
||||
sha256: str
|
||||
message: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateActionResponse(BaseModel):
|
||||
started: bool
|
||||
message: str
|
||||
|
||||
|
||||
class UpdateLogEntry(BaseModel):
|
||||
timestamp: str
|
||||
status: str
|
||||
message: Optional[str] = None
|
||||
version: Optional[str] = None
|
||||
error: Optional[str] = None
|
||||
device_id: Optional[str] = None
|
||||
|
||||
Reference in New Issue
Block a user