2521690 2c7714268f feat: 补强 demo 后端任务指标与 edge-agent 执行骨架
- 新增 task_report 任务级聚合指标 task_metrics
- 补充创建任务幂等与失败路径/冲突测试
- 将后端测试基线提升到 20 passed
- 新增 edge-agent 初始化代码、启动脚本与打包脚本
- 新增 http_health_check、check_port、check_process、grep_log 执行器
- 补充 edge-agent 基础测试并提升基线到 10 passed
- 同步更新 backend README 与当前进度总结
2026-04-09 10:51:19 +08:00

46 lines
1.5 KiB
Python

from __future__ import annotations
import os
import platform
from dataclasses import dataclass
def detect_os_type() -> str:
system_name = platform.system().upper()
if system_name.startswith("WIN"):
return "WINDOWS"
if system_name.startswith("LINUX"):
return "LINUX"
return system_name or "UNKNOWN"
@dataclass(slots=True)
class Settings:
backend_base_url: str
edge_id: str
edge_name: str
edge_hostname: str
edge_os_type: str
edge_agent_version: str
edge_access_token: str | None
poll_interval_ms: int
heartbeat_interval_ms: int
request_timeout_ms: int
default_health_check_timeout_ms: int
def get_settings() -> Settings:
return Settings(
backend_base_url=os.getenv("BACKEND_BASE_URL", "http://127.0.0.1:8000").rstrip("/"),
edge_id=os.getenv("EDGE_ID", "edge-shanghai-001"),
edge_name=os.getenv("EDGE_NAME", "edge-agent-demo"),
edge_hostname=os.getenv("EDGE_HOSTNAME", platform.node() or "localhost"),
edge_os_type=os.getenv("EDGE_OS_TYPE", detect_os_type()),
edge_agent_version=os.getenv("EDGE_AGENT_VERSION", "0.1.0"),
edge_access_token=os.getenv("EDGE_ACCESS_TOKEN"),
poll_interval_ms=int(os.getenv("POLL_INTERVAL_MS", "3000")),
heartbeat_interval_ms=int(os.getenv("HEARTBEAT_INTERVAL_MS", "10000")),
request_timeout_ms=int(os.getenv("REQUEST_TIMEOUT_MS", "5000")),
default_health_check_timeout_ms=int(os.getenv("DEFAULT_HEALTH_CHECK_TIMEOUT_MS", "3000")),
)