asw_component/__init__.py +3−0 View file@@ -0,0 +1,3 @@
1 +
from .component import execute 2 +
3 +
__all__ = ["execute"][참조 MVP] MIL/HIL 검증 하네스 — 구성요소별 시험 시나리오의 허용오차를 판정하고 감사 가능한 요약을 만듭니다.
https://git.agrithing.ai/kitech/mil-hil-validation.git bf96a7a 4b5c644 45501b9 270ca16 d4135e2 08fe1c0 7d64428 0b3cca6 7d644286874f19bf6929d775851511641fc27f4f asw_component/__init__.py +3−0 View filefrom .component import execute__all__ = ["execute"]asw_component/component.py +11−0 View filefrom __future__ import annotationsdef execute(payload: dict) -> dict: results = [] for case in payload.get("scenarios", []): error = abs(float(case["actual"]) - float(case["expected"])) passed = error <= float(case.get("tolerance", 0)) results.append({"id": case["id"], "passed": passed, "error": round(error, 6), "evidence": case.get("evidence")}) passed_count = sum(item["passed"] for item in results) return {"verdict": "PASS" if results and passed_count == len(results) else "FAIL", "passed": passed_count, "total": len(results), "results": results}examples/input.json +16−0 View file{ "scenarios": [ { "id": "TRACK-001", "actual": 0.18, "expected": 0.2, "tolerance": 0.05 }, { "id": "SAFE-001", "actual": 0, "expected": 0, "tolerance": 0 } ]}pyproject.toml +8−0 View file[project]name = "mil_hil_validation"version = "0.1.0"description = "구성요소별 시험 시나리오의 허용오차를 판정하고 감사 가능한 요약을 만듭니다."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))