- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환 - Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용 - pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관) - worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md) - D:\Rhino-MCP 경로 참조를 새 위치로 치환 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
"""Print the app-check distribution of the real piers (stage B, 2026-10-16) without touching data/: the piers are copied (without runs,
|
|
backup and the DWG / DXF files) into 검증/autocheck_report_data and checked there.
|
|
usage: python tools/report_autocheck.py [pier ...] -> per pier: counts of required bundles per status and the non-g bundles."""
|
|
import json
|
|
import os
|
|
import shutil
|
|
import sys
|
|
import time
|
|
from pathlib import Path
|
|
|
|
APP = Path(__file__).resolve().parents[1]
|
|
TD = APP / "검증" / "autocheck_report_data"
|
|
if TD.exists():
|
|
shutil.rmtree(TD)
|
|
names = sys.argv[1:] or [d.name for d in sorted((APP / "data").iterdir()) if (d / "params.json").exists() and not d.name.startswith("_")]
|
|
for n in names:
|
|
shutil.copytree(APP / "data" / n, TD / n, ignore=shutil.ignore_patterns("runs", "backup", "dwg", "dxf"))
|
|
shutil.copytree(APP / "data" / "_템플릿", TD / "_템플릿", ignore=shutil.ignore_patterns("_이전"))
|
|
os.environ["PIERAPP_DATA"] = str(TD)
|
|
sys.path.insert(0, str(APP / "web"))
|
|
sys.path.insert(0, str(APP))
|
|
import app as webapp # noqa: E402
|
|
import store # noqa: E402
|
|
from engine import verify # noqa: E402
|
|
|
|
for n in names:
|
|
p = store.Pier(n)
|
|
t0 = time.time()
|
|
a = p.run_autocheck(force=True)
|
|
req = {f"{f}:{k}" for f, k in webapp.required(p)}
|
|
c = verify.counts(a["sections"], req)
|
|
print(f"== {n}: required {len(req)} -> " + " ".join(f"{verify.ST_NAME[k]} {v}" for k, v in c.items()) + f" ({time.time() - t0:.1f}s)")
|
|
for b, r in sorted(a["sections"].items()):
|
|
if b in req and r["st"] != "g":
|
|
print(f" {verify.ST_NAME[r['st']]:5s} {b:28s} {r['summary'][:110]}")
|