asw_component/__init__.py +3−0 View file@@ -0,0 +1,3 @@
1 +
from .component import execute 2 +
3 +
__all__ = ["execute"][참조 MVP] ICU 안전·실시간 런타임 — 비상정지, 통신 Watchdog과 치명 고장을 단일 안전상태로 집계합니다.
https://git.agrithing.ai/tymict/icu-safety-runtime.git 79f7434 851fe1c debf6aa a2896f9 71a0f42 01e4af2 ef5795a b51bddf ef5795a036a0bb74000c9f467a3d55732e0c667b asw_component/__init__.py +3−0 View filefrom .component import execute__all__ = ["execute"]asw_component/component.py +12−0 View filefrom __future__ import annotationsdef execute(payload: dict) -> dict: reasons = [] if payload.get("emergency_stop"): reasons.append("emergency_stop") if payload.get("critical_faults"): reasons.extend(f"fault:{code}" for code in payload["critical_faults"]) if float(payload.get("watchdog_age_ms", 0)) > float(payload.get("watchdog_limit_ms", 100)): reasons.append("watchdog_timeout") state = "SAFE_STOP" if reasons else "RUN" return {"state": state, "traction_enabled": state == "RUN", "reasons": reasons, "reset_required": bool(reasons)}examples/input.json +6−0 View file{ "emergency_stop": false, "critical_faults": [], "watchdog_age_ms": 45, "watchdog_limit_ms": 100}pyproject.toml +8−0 View file[project]name = "icu_safety_runtime"version = "0.1.0"description = "비상정지, 통신 Watchdog과 치명 고장을 단일 안전상태로 집계합니다."requires-python = ">=3.11"[tool.unittest]test-path = "tests"run.py +10−0 View filefrom __future__ import annotationsimport jsonimport sysfrom asw_component import executeif __name__ == "__main__": path = sys.argv[1] if len(sys.argv) > 1 else None with open(path, encoding="utf-8") if path else sys.stdin as source: payload = json.load(source) print(json.dumps(execute(payload), ensure_ascii=False, indent=2))