Files
evotraders/backend/process/models.py
2026-03-30 17:46:44 +08:00

42 lines
1.1 KiB
Python

# -*- coding: utf-8 -*-
"""Data models for lightweight process supervision."""
from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
from typing import Any, Dict
class ProcessRunState(str, Enum):
"""Execution state for supervised runs."""
PENDING = "pending"
RUNNING = "running"
COMPLETED = "completed"
FAILED = "failed"
CANCELLED = "cancelled"
@dataclass
class ProcessRun:
"""Represents a supervised process run."""
run_id: str
command: str
scope_key: str
state: ProcessRunState = ProcessRunState.PENDING
metadata: Dict[str, Any] = field(default_factory=dict)
created_at: datetime = field(default_factory=datetime.utcnow)
updated_at: datetime = field(default_factory=datetime.utcnow)
def to_dict(self) -> Dict[str, Any]:
return {
"run_id": self.run_id,
"command": self.command,
"scope_key": self.scope_key,
"state": self.state.value,
"metadata": self.metadata,
"created_at": self.created_at.isoformat(),
"updated_at": self.updated_at.isoformat(),
}