From 081d9d70fb4a831412ceb937a976c9bb56906047 Mon Sep 17 00:00:00 2001 From: Yun Chan Date: Fri, 28 Aug 2026 21:03:25 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=84=EC=83=81=20=EA=B4=80=EC=B0=B0=20?= =?UTF-8?q?=EC=A6=9D=EA=B1=B0=20=EC=B6=9C=EB=A0=A5=EC=9D=84=20=EA=B3=A0?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...n-clinical-crisis-technical-observations.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/scripts/run-clinical-crisis-technical-observations.py b/scripts/run-clinical-crisis-technical-observations.py index 3de40bb..2240ee1 100644 --- a/scripts/run-clinical-crisis-technical-observations.py +++ b/scripts/run-clinical-crisis-technical-observations.py @@ -470,13 +470,29 @@ def _parser() -> argparse.ArgumentParser: required=True, help="증거에 고정할 UTC ISO-8601 시각(예: 2026-08-28T12:00:00Z)", ) + parser.add_argument( + "--output", + type=Path, + help="JSON을 저장할 저장소 내부 경로. 생략하면 stdout으로 출력한다.", + ) return parser def main(argv: list[str] | None = None) -> int: args = _parser().parse_args(argv) payload = asyncio.run(build_observations(args.generated_at)) - print(json.dumps(payload, ensure_ascii=False, indent=2)) + rendered = json.dumps(payload, ensure_ascii=False, indent=2) + "\n" + if args.output is None: + print(rendered, end="") + else: + output_path = args.output if args.output.is_absolute() else REPO_ROOT / args.output + output_path = output_path.resolve() + try: + output_path.relative_to(REPO_ROOT.resolve()) + except ValueError as error: + raise SystemExit("--output은 저장소 내부 경로여야 한다") from error + output_path.parent.mkdir(parents=True, exist_ok=True) + output_path.write_text(rendered, encoding="utf-8") return 1 if payload["summary"]["technical_fail_count"] else 0