Add Future parity feature blocks
This commit is contained in:
@@ -21,6 +21,19 @@ class SafetyStage(StrEnum):
|
||||
BLOCKED = "blocked"
|
||||
|
||||
|
||||
class ProposalStatus(StrEnum):
|
||||
DRAFT = "draft"
|
||||
APPROVED = "approved"
|
||||
REJECTED = "rejected"
|
||||
|
||||
|
||||
class JobStatus(StrEnum):
|
||||
QUEUED = "queued"
|
||||
RUNNING = "running"
|
||||
SUCCEEDED = "succeeded"
|
||||
FAILED = "failed"
|
||||
|
||||
|
||||
class EntityState(BaseModel):
|
||||
entity_id: str = Field(pattern=r"^[a-z0-9_]+\.[a-z0-9_]+$")
|
||||
domain: str
|
||||
@@ -89,6 +102,51 @@ class SceneProfile(BaseModel):
|
||||
confidence: float = Field(default=0.0, ge=0.0, le=1.0)
|
||||
|
||||
|
||||
class AutomationProposal(BaseModel):
|
||||
proposal_id: str
|
||||
name: str
|
||||
trigger_entity_id: str
|
||||
trigger_state: str | None = None
|
||||
actuator_entity_id: str
|
||||
target_state: str
|
||||
status: ProposalStatus = ProposalStatus.DRAFT
|
||||
revision: int = 1
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
decided_at: datetime | None = None
|
||||
|
||||
|
||||
class ModelRecord(BaseModel):
|
||||
model_id: str
|
||||
actuator_entity_id: str
|
||||
pattern_count: int
|
||||
confidence: float = Field(default=0.0, ge=0.0, le=1.0)
|
||||
trained_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class JobQueueItem(BaseModel):
|
||||
job_id: str
|
||||
kind: str
|
||||
status: JobStatus = JobStatus.QUEUED
|
||||
message: str = ""
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
finished_at: datetime | None = None
|
||||
|
||||
|
||||
class SensorWeightOverride(BaseModel):
|
||||
actuator_entity_id: str
|
||||
sensor_weights: dict[str, float] = Field(default_factory=dict)
|
||||
note: str | None = Field(default=None, max_length=500)
|
||||
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class HistoryAnalysis(BaseModel):
|
||||
entity_id: str
|
||||
samples: int
|
||||
last_state: str | None = None
|
||||
changed_at: datetime | None = None
|
||||
recommendation: str
|
||||
|
||||
|
||||
class Decision(BaseModel):
|
||||
actuator_entity_id: str
|
||||
target_state: str | None = None
|
||||
@@ -121,6 +179,10 @@ class LearningState(BaseModel):
|
||||
profiles: dict[str, LearningProfile] = Field(default_factory=dict)
|
||||
rooms: dict[str, RoomProfile] = Field(default_factory=dict)
|
||||
scenes: dict[str, SceneProfile] = Field(default_factory=dict)
|
||||
automation_proposals: dict[str, AutomationProposal] = Field(default_factory=dict)
|
||||
models: dict[str, ModelRecord] = Field(default_factory=dict)
|
||||
jobs: dict[str, JobQueueItem] = Field(default_factory=dict)
|
||||
weight_overrides: dict[str, SensorWeightOverride] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class ControlState(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user