feat(cloud): add targeted task governance foundation
Tests / Test passed: 659

This commit is contained in:
2026-07-13 22:21:12 +08:00
parent a3ba94be04
commit 2cd314b183
41 changed files with 2099 additions and 15 deletions
@@ -11,6 +11,8 @@ from pydantic import BaseModel, Field
class TaskConstraintsModel(BaseModel):
driver_type: str | None = None
capability_tags: list[str] = Field(default_factory=list)
target_host_id: str | None = Field(default=None, min_length=1)
target_device_id: str | None = Field(default=None, min_length=1)
class TaskSubmissionRequest(BaseModel):
@@ -33,6 +35,8 @@ class TaskStatusResponse(BaseModel):
attempt_count: int = 0
lease_expires_at: datetime | None = None
failure_reason: str | None = None
target_host_id: str | None = None
target_device_id: str | None = None
class TaskListItem(BaseModel):
@@ -44,6 +48,8 @@ class TaskListItem(BaseModel):
assigned_host_id: str | None = None
attempt_count: int = 0
failure_reason: str | None = None
target_host_id: str | None = None
target_device_id: str | None = None
created_at: datetime
@@ -145,3 +151,32 @@ class PasswordResetRequest(BaseModel):
class ErrorResponse(BaseModel):
detail: str
class DeviceTargetModel(BaseModel):
host_id: str = Field(min_length=1)
device_id: str = Field(min_length=1)
class UserSubmissionPolicyRequest(BaseModel):
submission_enabled: bool = True
allowed_host_ids: list[str] | None = None
allowed_device_targets: list[DeviceTargetModel] | None = None
class UserSubmissionPolicyResponse(UserSubmissionPolicyRequest):
user_id: str
revision: int
updated_at: datetime
class HostGovernancePolicyRequest(BaseModel):
self_submission_enabled: bool = True
max_active_tasks: int | None = Field(default=None, ge=1)
daily_token_budget: int | None = Field(default=None, ge=1)
class HostGovernancePolicyResponse(HostGovernancePolicyRequest):
host_id: str
revision: int
updated_at: datetime