chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합

- 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>
This commit is contained in:
ahnyongjooandClaude Sonnet 5.5 committed 2026-10-28 11:20:18 +09:00
commit 964a841de1
3978 files changed
+58013356

No files matched your search

File diff suppressed because it is too large. Load diff
@@ -0,0 +1,137 @@
{
"params:pier_id": {
"sha": "97086571f822df69",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:rebar_marks": {
"sha": "d45ee3c154a37c89",
"by": "심영표",
"at": "2026-10-14 16:28:33"
},
"params:display": {
"sha": "4a8afc994a7b21ec",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:pier_id": {
"sha": "97086571f822df69",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:tol_mm": {
"sha": "d0ff5974b6aa52cf",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:rebar_palette": {
"sha": "cc2556d92248194c",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:planned_fail": {
"sha": "4f53cda18c2baa0c",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:scope": {
"sha": "dfbd41ca7117a548",
"by": "심영표",
"at": "2026-10-14 16:28:33"
},
"params:builders": {
"sha": "695f046fbde07d23",
"by": "심영표",
"at": "2026-10-14 16:28:33"
},
"expected:checkers": {
"sha": "35c885ae5314eebb",
"by": "심영표",
"at": "2026-10-16 16:38:03"
},
"expected:negative": {
"sha": "19a64b9aa5ccf45f",
"by": "심영표",
"at": "2026-10-14 16:28:33"
},
"params:lean_concrete": {
"sha": "303ab725158f61d2",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:footing": {
"sha": "129cbe6b814ea11a",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:column": {
"sha": "ac82f0b5b2f08f19",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:coping": {
"sha": "b5314087fa0858bf",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:piles": {
"sha": "9a8c08f966706173",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:bearing_seats": {
"sha": "8b1ebdeb7587481c",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:materials": {
"sha": "b8260acfe318c39a",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:G1": {
"sha": "dbbd9eb8ef54d271",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:column_rebar": {
"sha": "edc4699e09fc7179",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:G2": {
"sha": "fc75c937d44e549f",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:footing_rebar": {
"sha": "28b1b1c7ed4191c9",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:G3": {
"sha": "7321a355c4ae2a35",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:sole_plates": {
"sha": "db761fed46edc840",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"expected:G5": {
"sha": "e7983de8e165c853",
"by": "심영표",
"at": "2026-10-14 11:18:23"
},
"params:coping_rebar": {
"sha": "0ad27b3b2c5d90ca",
"by": "심영표",
"at": "2026-10-14 16:28:33"
},
"expected:G4": {
"sha": "65b2807bc9da34da",
"by": "심영표",
"at": "2026-10-14 16:28:33"
}
}
@@ -0,0 +1,10 @@
[
{
"source": "옥성교P1.dwg",
"source_sha256": "8cfa9ac10f9412ae04184d25a6f1a04e5bed2c5e2f3c8a4992eecd7bac444720",
"dxf": "옥성교P1.dxf",
"dxf_sha256": "d39ff26d9f272d9e16f9e977b6347019595ffe1c1624063c4f18faf8417ecc26",
"engine": "ODA File Converter 27.1.0",
"label": "D1"
}
]
File diff suppressed because it is too large. Load diff
@@ -0,0 +1 @@
[{"dwg": "D1", "layer": "CS-DIMT", "x": 437103.3, "y": 366627.1, "h": 320.0, "text": "설 계 법", "handle": "FAB7"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 437105.5, "y": 364445.9, "h": 320.0, "text": "철 근 항 복 강 도", "handle": "FAB8"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 437103.3, "y": 366073.9, "h": 320.0, "text": "콘크리트 설계기준 강도", "handle": "FAB9"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442672.1, "y": 366064.7, "h": 320.0, "text": "ck=35 Mpa (두부보)", "handle": "FABA"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442664.7, "y": 364488.6, "h": 320.0, "text": "y=400 Mpa", "handle": "FABB"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442464.5, "y": 366627.1, "h": 320.0, "text": "한계상태설계법", "handle": "FABC"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442458.4, "y": 364509.4, "h": 320.0, "text": "f", "handle": "FABD"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442490.1, "y": 366085.5, "h": 320.0, "text": "f", "handle": "FABE"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442068.4, "y": 364536.5, "h": 320.0, "text": ":", "handle": "FABF"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442068.4, "y": 366144.8, "h": 320.0, "text": ":", "handle": "FAC0"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 437124.2, "y": 363907.3, "h": 320.0, "text": "설 계 하 중", "handle": "FAC1"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442437.1, "y": 363907.3, "h": 320.0, "text": "KL-510", "handle": "FAC2"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442068.4, "y": 363987.3, "h": 320.0, "text": ":", "handle": "FAC3"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442672.1, "y": 365520.4, "h": 320.0, "text": "ck=35 Mpa (기둥부)", "handle": "FAC4"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442490.1, "y": 365541.2, "h": 320.0, "text": "f", "handle": "FAC5"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 442068.4, "y": 365600.5, "h": 320.0, "text": ":", "handle": "FAC6"}, {"dwg": "D1", "layer": "CZ-TEX2", "x": 391321.9, "y": 357892.1, "h": 500.0, "text": "S=1:100", "handle": "10F73"}, {"dwg": "D1", "layer": "CZ-TEX2", "x": 392285.8, "y": 340724.6, "h": 500.0, "text": "S=1:100", "handle": "10F74"}, {"dwg": "D1", "layer": "CZ-TEX2", "x": 418035.9, "y": 339199.6, "h": 500.0, "text": "S=1:100", "handle": "10F75"}, {"dwg": "D1", "layer": "CZ-TEX2", "x": 421077.5, "y": 358298.5, "h": 500.0, "text": "S=1:100", "handle": "10F76"}, {"dwg": "D1", "layer": "CZ-TEX2", "x": 440167.7, "y": 342613.4, "h": 500.0, "text": "S=1:100", "handle": "10F77"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 424532.0, "y": 344798.5, "h": 250.0, "text": "Y : 207593.68452", "handle": "10F91"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 410866.0, "y": 350927.4, "h": 250.0, "text": "9.600", "handle": "10F92"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 423911.7, "y": 344548.5, "h": 250.0, "text": "100", "handle": "10F93"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 422911.7, "y": 344548.5, "h": 250.0, "text": "800", "handle": "10F94"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 417496.9, "y": 344548.5, "h": 250.0, "text": "5@1.600=8.000", "handle": "10F95"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 414111.7, "y": 344548.5, "h": 250.0, "text": "800", "handle": "10F96"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 413236.7, "y": 344548.5, "h": 250.0, "text": "100", "handle": "10F97"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 418345.0, "y": 343548.5, "h": 250.0, "text": "9.600", "handle": "10F98"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 411866.0, "y": 356494.1, "h": 250.0, "text": "100", "handle": "10F99"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 411866.0, "y": 355494.1, "h": 250.0, "text": "800", "handle": "10F9A"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 411866.0, "y": 350079.4, "h": 250.0, "text": "5@1.600=8.000", "handle": "10F9B"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 411866.0, "y": 346694.1, "h": 250.0, "text": "800", "handle": "10F9C"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 411866.0, "y": 345819.1, "h": 250.0, "text": "100", "handle": "10F9D"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 424531.8, "y": 345148.5, "h": 250.0, "text": "X : 429979.20561", "handle": "10F9E"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 424531.8, "y": 357748.5, "h": 250.0, "text": "X : 429970.17390", "handle": "10F9F"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 410177.2, "y": 357748.5, "h": 250.0, "text": "X : 429973.42786", "handle": "10FA0"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 410177.2, "y": 345148.5, "h": 250.0, "text": "X : 429982.45957", "handle": "10FA1"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 410177.5, "y": 344798.5, "h": 250.0, "text": "Y : 207602.71623", "handle": "10FA2"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 410177.5, "y": 357398.5, "h": 250.0, "text": "Y : 207605.97018", "handle": "10FA3"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 424532.0, "y": 357398.5, "h": 250.0, "text": "Y : 207596.93847", "handle": "10FA4"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 380729.3, "y": 334328.8, "h": 250.0, "text": "1.500", "handle": "10FA5"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 380729.3, "y": 332828.8, "h": 250.Line truncated
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,6 @@
{
"name": "옥성교P1",
"type": "T형",
"created": "2026-10-14 09:19:47",
"template": "신규 판독 (옥성교 P1 판독서 v0.1.00)"
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,68 @@
{
"gate": "G1",
"checker": "g1_pedestal.py",
"verdict": "PASS",
"summary": {
"total": 147,
"passed": 147,
"failed": 0,
"volumes_m3": {
"lean": 8.876,
"footing": 202.752,
"column": 18.653,
"coping": 92.869,
"pile_each": 6.408
}
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"id": "BP02",
"d": [
3,
0,
0
]
},
"new_fails": [
"NO.2 pad centre X (bbox)"
],
"detected": true
},
"negV": {
"move": {
"id": "BS03",
"d": [
0,
0,
2
]
},
"new_fails": [
"NO.3 on one pedestal",
"NO.8 on one pedestal"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 6.9,
"session_secs": 170.5,
"inputs_sha": "0807396bf52094b5",
"job_id": "048cd5aee12e"
}
@@ -0,0 +1,15 @@
{
"id": "048cd5aee12e",
"pid": 14152,
"state": "완료",
"at": "2026-10-16 16:41:04",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 147/147 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 39/39 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 75/75 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 251/251 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 171.0s, objects 3862, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\옥성교P1\\runs\\current\\G5.3dm"
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,382 @@
{
"summary": {
"total": 39,
"passed": 39,
"failed": 0,
"min_cover": {
"P1": 112.5,
"P2": 137.5,
"P3": 87.5,
"P4": 93.5,
"P5": 71.5
}
},
"results": [
{
"check": "C8",
"item": "P1 bar count",
"expected": 60,
"actual": 60,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 pipes closed & paired with centrelines",
"detail": "60/60",
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bar count",
"expected": 60,
"actual": 60,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 pipes closed & paired with centrelines",
"detail": "60/60",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 bar count",
"expected": 13,
"actual": 13,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 pipes closed & paired with centrelines",
"detail": "26/26",
"result": "PASS"
},
{
"check": "C8",
"item": "P4 bar count",
"expected": 16,
"actual": 16,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 pipes closed & paired with centrelines",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C8",
"item": "P5 bar count",
"expected": 40,
"actual": 40,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 pipes closed & paired with centrelines",
"detail": "40/40",
"result": "PASS"
},
{
"check": "C8",
"item": "P1 original length (+coupler) vs schedule L (worst of 60)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 curve length - L (record)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 original length (+coupler) vs schedule L (worst of 60)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 curve length - L (record)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P2 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 original length (+coupler) vs schedule L (worst of 13)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 curve length - L (record)",
"detail": "min -0.3 / max -0.3 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P3 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.337,
"diff": 0.337,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 original length (+coupler) vs schedule L (worst of 16)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 curve length - L (record)",
"detail": "min 0.8 / max 0.8 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.814,
"diff": 0.814,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 original length (+coupler) vs schedule L (worst of 40)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 curve length - L (record)",
"detail": "min -140.6 / max -140.6 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 angle vs start + i*360/60 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 top EL (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 hook leg EL (footing bottom + 150) (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop level count 29",
"detail": "29",
"result": "PASS"
},
{
"check": "C8",
"item": "hoop levels vs dim chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop marks by zone (P3 x3, P4 x16, P3 x10)",
"detail": "",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 radius (mid point)",
"expected": 1150,
"actual": 1150.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 radius (mid point)",
"expected": 1147,
"actual": 1147.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 radius (mid point)",
"expected": 1150,
"actual": 1150.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 inner ring radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 hooks bent inwards",
"detail": "",
"result": "PASS"
},
{
"check": "C8",
"item": "tie X / Y levels 20 each",
"detail": "X 20 Y 20",
"result": "PASS"
},
{
"check": "C8",
"item": "tie X levels vs chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "tie Y = X + 16 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "concrete union for cover",
"detail": "1 brep",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "min cover to concrete surface per mark (record)",
"detail": "{\"P1\": 112.5, \"P2\": 137.5, \"P3\": 87.5, \"P4\": 93.5, \"P5\": 71.5}",
"result": "INFO"
}
]
}
@@ -0,0 +1,69 @@
{
"gate": "G2",
"checker": "g2_ring.py",
"verdict": "PASS",
"summary": {
"total": 39,
"passed": 39,
"failed": 0,
"min_cover": {
"P1": 112.5,
"P2": 137.5,
"P3": 87.5,
"P4": 93.5,
"P5": 71.5
}
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"mark": "P1",
"d": [
5,
0,
0
]
},
"new_fails": [
"P1 radius (worst)"
],
"detected": true
},
"negV": {
"move": {
"mark": "P3",
"d": [
0,
0,
5
]
},
"new_fails": [
"hoop level count 29",
"hoop levels vs dim chain (worst)",
"hoop marks by zone (P3 x3, P4 x16, P3 x10)"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 22.2,
"session_secs": 170.5,
"inputs_sha": "0807396bf52094b5",
"job_id": "048cd5aee12e"
}
@@ -0,0 +1,15 @@
{
"id": "048cd5aee12e",
"pid": 14152,
"state": "완료",
"at": "2026-10-16 16:41:04",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 147/147 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 39/39 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 75/75 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 251/251 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 171.0s, objects 3862, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\옥성교P1\\runs\\current\\G5.3dm"
]
}
@@ -0,0 +1,382 @@
{
"summary": {
"total": 39,
"passed": 38,
"failed": 1,
"min_cover": {
"P1": 107.5,
"P2": 137.5,
"P3": 87.5,
"P4": 93.5,
"P5": 71.5
}
},
"results": [
{
"check": "C8",
"item": "P1 bar count",
"expected": 60,
"actual": 60,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 pipes closed & paired with centrelines",
"detail": "60/60",
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bar count",
"expected": 60,
"actual": 60,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 pipes closed & paired with centrelines",
"detail": "60/60",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 bar count",
"expected": 13,
"actual": 13,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 pipes closed & paired with centrelines",
"detail": "26/26",
"result": "PASS"
},
{
"check": "C8",
"item": "P4 bar count",
"expected": 16,
"actual": 16,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 pipes closed & paired with centrelines",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C8",
"item": "P5 bar count",
"expected": 40,
"actual": 40,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 pipes closed & paired with centrelines",
"detail": "40/40",
"result": "PASS"
},
{
"check": "C8",
"item": "P1 original length (+coupler) vs schedule L (worst of 60)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 curve length - L (record)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 original length (+coupler) vs schedule L (worst of 60)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 curve length - L (record)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P2 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 original length (+coupler) vs schedule L (worst of 13)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 curve length - L (record)",
"detail": "min -0.3 / max -0.3 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P3 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.337,
"diff": 0.337,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 original length (+coupler) vs schedule L (worst of 16)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 curve length - L (record)",
"detail": "min 0.8 / max 0.8 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.814,
"diff": 0.814,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 original length (+coupler) vs schedule L (worst of 40)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 curve length - L (record)",
"detail": "min -140.6 / max -140.6 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 radius (worst)",
"expected": 0,
"actual": 5.0,
"diff": 5.0,
"tol": 0.5,
"result": "FAIL"
},
{
"check": "C8",
"item": "P1 angle vs start + i*360/60 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 top EL (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 hook leg EL (footing bottom + 150) (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop level count 29",
"detail": "29",
"result": "PASS"
},
{
"check": "C8",
"item": "hoop levels vs dim chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop marks by zone (P3 x3, P4 x16, P3 x10)",
"detail": "",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 radius (mid point)",
"expected": 1150,
"actual": 1150.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 radius (mid point)",
"expected": 1147,
"actual": 1147.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 radius (mid point)",
"expected": 1150,
"actual": 1150.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 inner ring radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 hooks bent inwards",
"detail": "",
"result": "PASS"
},
{
"check": "C8",
"item": "tie X / Y levels 20 each",
"detail": "X 20 Y 20",
"result": "PASS"
},
{
"check": "C8",
"item": "tie X levels vs chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "tie Y = X + 16 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "concrete union for cover",
"detail": "1 brep",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "min cover to concrete surface per mark (record)",
"detail": "{\"P1\": 107.5, \"P2\": 137.5, \"P3\": 87.5, \"P4\": 93.5, \"P5\": 71.5}",
"result": "INFO"
}
]
}
@@ -0,0 +1,382 @@
{
"summary": {
"total": 39,
"passed": 36,
"failed": 3,
"min_cover": {
"P1": 112.5,
"P2": 137.5,
"P3": 87.5,
"P4": 93.5,
"P5": 71.5
}
},
"results": [
{
"check": "C8",
"item": "P1 bar count",
"expected": 60,
"actual": 60,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 pipes closed & paired with centrelines",
"detail": "60/60",
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bar count",
"expected": 60,
"actual": 60,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 pipes closed & paired with centrelines",
"detail": "60/60",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 bar count",
"expected": 13,
"actual": 13,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 pipes closed & paired with centrelines",
"detail": "26/26",
"result": "PASS"
},
{
"check": "C8",
"item": "P4 bar count",
"expected": 16,
"actual": 16,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 pipes closed & paired with centrelines",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C8",
"item": "P5 bar count",
"expected": 40,
"actual": 40,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 pipes closed & paired with centrelines",
"detail": "40/40",
"result": "PASS"
},
{
"check": "C8",
"item": "P1 original length (+coupler) vs schedule L (worst of 60)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 curve length - L (record)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 original length (+coupler) vs schedule L (worst of 60)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 curve length - L (record)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P2 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.115,
"diff": 0.115,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 original length (+coupler) vs schedule L (worst of 13)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 curve length - L (record)",
"detail": "min -0.3 / max -0.3 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P3 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.337,
"diff": 0.337,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 original length (+coupler) vs schedule L (worst of 16)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 curve length - L (record)",
"detail": "min 0.8 / max 0.8 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 curve length (+coupler) vs L (no fillet)",
"expected": 0,
"actual": 0.814,
"diff": 0.814,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 original length (+coupler) vs schedule L (worst of 40)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 curve length - L (record)",
"detail": "min -140.6 / max -140.6 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 angle vs start + i*360/60 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 top EL (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 hook leg EL (footing bottom + 150) (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop level count 29",
"detail": "30",
"result": "FAIL"
},
{
"check": "C8",
"item": "hoop levels vs dim chain (worst)",
"expected": 0,
"actual": 600.0,
"diff": 600.0,
"tol": 1.0,
"result": "FAIL"
},
{
"check": "C8",
"item": "hoop marks by zone (P3 x3, P4 x16, P3 x10)",
"detail": "",
"result": "FAIL"
},
{
"check": "C8",
"item": "P3 radius (mid point)",
"expected": 1150,
"actual": 1150.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 radius (mid point)",
"expected": 1147,
"actual": 1147.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 radius (mid point)",
"expected": 1150,
"actual": 1150.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 inner ring radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 hooks bent inwards",
"detail": "",
"result": "PASS"
},
{
"check": "C8",
"item": "tie X / Y levels 20 each",
"detail": "X 20 Y 20",
"result": "PASS"
},
{
"check": "C8",
"item": "tie X levels vs chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "tie Y = X + 16 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "concrete union for cover",
"detail": "1 brep",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "min cover to concrete surface per mark (record)",
"detail": "{\"P1\": 112.5, \"P2\": 137.5, \"P3\": 87.5, \"P4\": 93.5, \"P5\": 71.5}",
"result": "INFO"
}
]
}
@@ -0,0 +1,644 @@
{
"summary": {
"total": 75,
"passed": 75,
"failed": 0,
"cover": {
"B1": 85.5,
"B2": 85.5,
"B3": 85.5,
"B4": 85.5,
"B5": 85.5,
"B6": 63.0,
"B7": 85.5,
"B8": 63.0,
"B9": 66.5,
"B10": 68.0,
"B11": 90.5,
"B12": 90.5
}
},
"results": [
{
"check": "C9",
"item": "B1 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B2 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B3 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B4 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B5 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 bar count vs schedule",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 pipes closed & paired",
"detail": "37/37",
"result": "PASS"
},
{
"check": "C9",
"item": "B7 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 bar count vs schedule",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 pipes closed & paired",
"detail": "37/37",
"result": "PASS"
},
{
"check": "C9",
"item": "B8 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 bar count vs schedule",
"expected": 171,
"actual": 171,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 pipes closed & paired",
"detail": "171/171",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 bar count vs schedule",
"expected": 5,
"actual": 5,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 pipes closed & paired",
"detail": "5/5",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 bar count vs schedule",
"expected": 19,
"actual": 19,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 pipes closed & paired",
"detail": "19/19",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 bar count vs schedule",
"expected": 19,
"actual": 19,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 pipes closed & paired",
"detail": "19/19",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom positions vs chain (77/77, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom straight part level 12325 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom leg 1800 up (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom B2/B4 alternate from the edge (F3)",
"detail": "B2 39",
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom positions vs chain (75/75, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom straight part level 12347.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom leg 1950 up (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom B6/B8 alternate from the edge (F3)",
"detail": "B6 38",
"result": "PASS"
},
{
"check": "C9",
"item": "y_top positions vs chain (77/77, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top straight part level 14275 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top leg 900 down (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top B1/B3 alternate from the edge (F3)",
"detail": "B1 39",
"result": "PASS"
},
{
"check": "C9",
"item": "x_top positions vs chain (75/75, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top straight part level 14252.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top leg 975 down (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top B5/B7 alternate from the edge (F3)",
"detail": "B5 38",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 levels / positions (19)",
"detail": "[(12844.0, -4500.0), (12844.0, -3500.0), (12844.0, -2500.0)] vs [(12844, -4500.0), (12844, -3500.0), (12844, -2500.0)]",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 levels / positions (19)",
"detail": "[(12825.0, -4537.5), (12825.0, -3500.0), (12825.0, -2500.0)] vs [(12825, -4537.5), (12825, -3500.0), (12825, -2500.0)]",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 levels (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 loop size X (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 columns 19 @500",
"detail": "19",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 height top-bottom (worst)",
"expected": 1998,
"actual": 1998.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 hooks the top and bottom Y bars",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "min cover to the footing surface per mark (record)",
"detail": "{\"B1\": 85.5, \"B2\": 85.5, \"B3\": 85.5, \"B4\": 85.5, \"B5\": 85.5, \"B6\": 63.0, \"B7\": 85.5, \"B8\": 63.0, \"B9\": 66.5, \"B10\": 68.0, \"B11\": 90.5, \"B12\": 90.5}",
"result": "INFO"
}
]
}
@@ -0,0 +1,75 @@
{
"gate": "G3",
"checker": "g3_poly.py",
"verdict": "PASS",
"summary": {
"total": 75,
"passed": 75,
"failed": 0,
"cover": {
"B1": 85.5,
"B2": 85.5,
"B3": 85.5,
"B4": 85.5,
"B5": 85.5,
"B6": 63.0,
"B7": 85.5,
"B8": 63.0,
"B9": 66.5,
"B10": 68.0,
"B11": 90.5,
"B12": 90.5
}
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"mark": "B1",
"d": [
5,
0,
0
]
},
"new_fails": [
"y_top positions vs chain (77/77, worst)",
"y_top B1/B3 alternate from the edge (F3)"
],
"detected": true
},
"negV": {
"move": {
"mark": "B10",
"d": [
0,
0,
5
]
},
"new_fails": [
"B10 levels (worst)"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 27.1,
"session_secs": 170.5,
"inputs_sha": "0807396bf52094b5",
"job_id": "048cd5aee12e"
}
@@ -0,0 +1,15 @@
{
"id": "048cd5aee12e",
"pid": 14152,
"state": "완료",
"at": "2026-10-16 16:41:04",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 147/147 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 39/39 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 75/75 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 251/251 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 171.0s, objects 3862, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\옥성교P1\\runs\\current\\G5.3dm"
]
}
@@ -0,0 +1,644 @@
{
"summary": {
"total": 75,
"passed": 73,
"failed": 2,
"cover": {
"B1": 85.5,
"B2": 85.5,
"B3": 85.5,
"B4": 85.5,
"B5": 85.5,
"B6": 63.0,
"B7": 85.5,
"B8": 63.0,
"B9": 66.5,
"B10": 68.0,
"B11": 90.5,
"B12": 90.5
}
},
"results": [
{
"check": "C9",
"item": "B1 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B2 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B3 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B4 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B5 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 bar count vs schedule",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 pipes closed & paired",
"detail": "37/37",
"result": "PASS"
},
{
"check": "C9",
"item": "B7 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 bar count vs schedule",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 pipes closed & paired",
"detail": "37/37",
"result": "PASS"
},
{
"check": "C9",
"item": "B8 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 bar count vs schedule",
"expected": 171,
"actual": 171,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 pipes closed & paired",
"detail": "171/171",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 bar count vs schedule",
"expected": 5,
"actual": 5,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 pipes closed & paired",
"detail": "5/5",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 bar count vs schedule",
"expected": 19,
"actual": 19,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 pipes closed & paired",
"detail": "19/19",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 bar count vs schedule",
"expected": 19,
"actual": 19,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 pipes closed & paired",
"detail": "19/19",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom positions vs chain (77/77, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom straight part level 12325 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom leg 1800 up (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom B2/B4 alternate from the edge (F3)",
"detail": "B2 39",
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom positions vs chain (75/75, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom straight part level 12347.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom leg 1950 up (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom B6/B8 alternate from the edge (F3)",
"detail": "B6 38",
"result": "PASS"
},
{
"check": "C9",
"item": "y_top positions vs chain (77/77, worst)",
"expected": 0,
"actual": 5.0,
"diff": 5.0,
"tol": 1.0,
"result": "FAIL"
},
{
"check": "C9",
"item": "y_top straight part level 14275 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top leg 900 down (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top B1/B3 alternate from the edge (F3)",
"detail": "B1 39",
"result": "FAIL"
},
{
"check": "C9",
"item": "x_top positions vs chain (75/75, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top straight part level 14252.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top leg 975 down (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top B5/B7 alternate from the edge (F3)",
"detail": "B5 38",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 levels / positions (19)",
"detail": "[(12844.0, -4500.0), (12844.0, -3500.0), (12844.0, -2500.0)] vs [(12844, -4500.0), (12844, -3500.0), (12844, -2500.0)]",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 levels / positions (19)",
"detail": "[(12825.0, -4537.5), (12825.0, -3500.0), (12825.0, -2500.0)] vs [(12825, -4537.5), (12825, -3500.0), (12825, -2500.0)]",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 levels (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 loop size X (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 columns 19 @500",
"detail": "19",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 height top-bottom (worst)",
"expected": 1998,
"actual": 1998.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 hooks the top and bottom Y bars",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "min cover to the footing surface per mark (record)",
"detail": "{\"B1\": 85.5, \"B2\": 85.5, \"B3\": 85.5, \"B4\": 85.5, \"B5\": 85.5, \"B6\": 63.0, \"B7\": 85.5, \"B8\": 63.0, \"B9\": 66.5, \"B10\": 68.0, \"B11\": 90.5, \"B12\": 90.5}",
"result": "INFO"
}
]
}
@@ -0,0 +1,644 @@
{
"summary": {
"total": 75,
"passed": 74,
"failed": 1,
"cover": {
"B1": 85.5,
"B2": 85.5,
"B3": 85.5,
"B4": 85.5,
"B5": 85.5,
"B6": 63.0,
"B7": 85.5,
"B8": 63.0,
"B9": 66.5,
"B10": 68.0,
"B11": 90.5,
"B12": 90.5
}
},
"results": [
{
"check": "C9",
"item": "B1 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B2 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B3 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B4 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B5 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 bar count vs schedule",
"expected": 38,
"actual": 38,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 pipes closed & paired",
"detail": "38/38",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 bar count vs schedule",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 pipes closed & paired",
"detail": "37/37",
"result": "PASS"
},
{
"check": "C9",
"item": "B7 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 bar count vs schedule",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 pipes closed & paired",
"detail": "37/37",
"result": "PASS"
},
{
"check": "C9",
"item": "B8 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 bar count vs schedule",
"expected": 171,
"actual": 171,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 pipes closed & paired",
"detail": "171/171",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 bar count vs schedule",
"expected": 5,
"actual": 5,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 pipes closed & paired",
"detail": "5/5",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 bar count vs schedule",
"expected": 19,
"actual": 19,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 pipes closed & paired",
"detail": "19/19",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 bar count vs schedule",
"expected": 19,
"actual": 19,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 pipes closed & paired",
"detail": "19/19",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom positions vs chain (77/77, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom straight part level 12325 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom leg 1800 up (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_bottom B2/B4 alternate from the edge (F3)",
"detail": "B2 39",
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom positions vs chain (75/75, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom straight part level 12347.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom leg 1950 up (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_bottom B6/B8 alternate from the edge (F3)",
"detail": "B6 38",
"result": "PASS"
},
{
"check": "C9",
"item": "y_top positions vs chain (77/77, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top straight part level 14275 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top leg 900 down (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "y_top B1/B3 alternate from the edge (F3)",
"detail": "B1 39",
"result": "PASS"
},
{
"check": "C9",
"item": "x_top positions vs chain (75/75, worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top straight part level 14252.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top span 2 x 4700 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top leg 975 down (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "x_top B5/B7 alternate from the edge (F3)",
"detail": "B5 38",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 levels / positions (19)",
"detail": "[(12844.0, -4500.0), (12844.0, -3500.0), (12844.0, -2500.0)] vs [(12844, -4500.0), (12844, -3500.0), (12844, -2500.0)]",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 levels / positions (19)",
"detail": "[(12825.0, -4537.5), (12825.0, -3500.0), (12825.0, -2500.0)] vs [(12825, -4537.5), (12825, -3500.0), (12825, -2500.0)]",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 levels (worst)",
"expected": 0,
"actual": 5.0,
"diff": 5.0,
"tol": 1.0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B10 loop size X (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 columns 19 @500",
"detail": "19",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 height top-bottom (worst)",
"expected": 1998,
"actual": 1998.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 hooks the top and bottom Y bars",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 sample points outside the footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "min cover to the footing surface per mark (record)",
"detail": "{\"B1\": 85.5, \"B2\": 85.5, \"B3\": 85.5, \"B4\": 85.5, \"B5\": 85.5, \"B6\": 63.0, \"B7\": 85.5, \"B8\": 63.0, \"B9\": 66.5, \"B10\": 68.0, \"B11\": 90.5, \"B12\": 90.5}",
"result": "INFO"
}
]
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,92 @@
{
"gate": "G4",
"checker": "g4_okseong.py",
"verdict": "PASS",
"summary": {
"total": 251,
"passed": 251,
"failed": 0,
"cover": {
"S6": 168.1,
"S5": 157.7,
"S8": 161.0,
"S7": 180.0,
"S2": 172.1,
"S1": 136.8,
"C20": 109.4,
"C19": 110.5,
"C18": 115.5,
"S4": 156.5,
"S3": 178.5,
"C17": 107.9,
"C16": 107.9,
"C15": 108.4,
"C14": 108.4,
"C13": 79.5,
"C12": 84.9,
"C11": 84.9,
"C10": 84.9,
"C9": 85.0,
"C8": 85.0,
"C7": 97.5,
"C6": 102.9,
"C5": 102.9,
"C4": 102.9,
"C3": 102.9,
"C2": 102.9,
"C1": 102.9
}
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"mark": "C1",
"d": [
0,
5,
0
]
},
"new_fails": [
"C1 y rows vs chain (worst, n=13/13)",
"C1 x ends +-5875 sheared (worst)"
],
"detected": true
},
"negV": {
"move": {
"mark": "C7",
"d": [
0,
0,
5
]
},
"new_fails": [
"C7 lowest level per bar vs drawn (worst)",
"C7 top end EL 20.3672 (bars not on the side face, worst)"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 101.9,
"session_secs": 170.5,
"inputs_sha": "0807396bf52094b5",
"job_id": "048cd5aee12e"
}
@@ -0,0 +1,15 @@
{
"id": "048cd5aee12e",
"pid": 14152,
"state": "완료",
"at": "2026-10-16 16:41:04",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 147/147 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 39/39 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 75/75 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 251/251 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 171.0s, objects 3862, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\옥성교P1\\runs\\current\\G5.3dm"
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,60 @@
{
"gate": "G5",
"checker": "g5_bearings.py",
"verdict": "PASS",
"summary": {
"total": 183,
"passed": 183,
"failed": 0
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"id": "BB04",
"d": [
5,
0,
0
]
},
"new_fails": [
"NO.4 bearing plan centre offset from pad (mm)"
],
"detected": true
},
"negV": {
"move": {
"id": "SP03",
"d": [
0,
0,
5
]
},
"new_fails": [
"NO.3 sole plate bottom = bearing top"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": "C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\옥성교P1\\runs\\current\\G5.3dm",
"mode": "batch",
"secs": 0.8,
"session_secs": 170.5,
"inputs_sha": "0807396bf52094b5",
"job_id": "048cd5aee12e"
}
@@ -0,0 +1,15 @@
{
"id": "048cd5aee12e",
"pid": 14152,
"state": "완료",
"at": "2026-10-16 16:41:04",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 147/147 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 39/39 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 75/75 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 251/251 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 171.0s, objects 3862, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\옥성교P1\\runs\\current\\G5.3dm"
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,37 @@
{
"G1": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-16 16:41:04",
"inputs_sha": "0807396bf52094b5"
},
"G2": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-16 16:41:04",
"inputs_sha": "0807396bf52094b5"
},
"G3": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-16 16:41:04",
"inputs_sha": "0807396bf52094b5"
},
"G5": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-16 16:41:04",
"inputs_sha": "0807396bf52094b5"
},
"G4": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-16 16:41:04",
"inputs_sha": "0807396bf52094b5"
}
}
@@ -0,0 +1,21 @@
{
"state": "완료",
"by": "심영표",
"pid": 14152,
"at": "2026-10-16 16:41:04",
"log": [
"G1~G5 단일 세션 실행 (게이트 검사·음성 시험만, 중간 저장·재로드 없음)",
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 147/147 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 39/39 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 75/75 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 251/251 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 171.0s, objects 3862, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\옥성교P1\\runs\\current\\G5.3dm",
"G1 PASS 147/147 (계획 FAIL 0) → 승인",
"G2 PASS 39/39 (계획 FAIL 0) → 승인",
"G3 PASS 75/75 (계획 FAIL 0) → 승인",
"G4 PASS 251/251 (계획 FAIL 0) → 승인",
"G5 PASS 183/183 (계획 FAIL 0) → 승인"
]
}
@@ -0,0 +1,115 @@
[
{
"gate": "G1",
"verdict": "PASS",
"summary": {
"total": 147,
"passed": 147,
"failed": 0,
"volumes_m3": {
"lean": 8.876,
"footing": 202.752,
"column": 18.653,
"coping": 92.869,
"pile_each": 6.408
}
},
"unplanned_fails": [],
"secs": 37.7
},
{
"gate": "G2",
"verdict": "PASS",
"summary": {
"total": 39,
"passed": 39,
"failed": 0,
"min_cover": {
"P1": 112.5,
"P2": 137.5,
"P3": 87.5,
"P4": 93.5,
"P5": 71.5
}
},
"unplanned_fails": [],
"secs": 51.1
},
{
"gate": "G3",
"verdict": "PASS",
"summary": {
"total": 75,
"passed": 75,
"failed": 0,
"cover": {
"B1": 85.5,
"B2": 85.5,
"B3": 85.5,
"B4": 85.5,
"B5": 85.5,
"B6": 63.0,
"B7": 85.5,
"B8": 63.0,
"B9": 66.5,
"B10": 68.0,
"B11": 90.5,
"B12": 90.5
}
},
"unplanned_fails": [],
"secs": 59.4
},
{
"gate": "G4",
"verdict": "PASS",
"summary": {
"total": 251,
"passed": 251,
"failed": 0,
"cover": {
"S6": 168.1,
"S5": 157.7,
"S8": 161.0,
"S7": 180.0,
"S2": 172.1,
"S1": 136.8,
"C20": 109.4,
"C19": 110.5,
"C18": 115.5,
"S4": 156.5,
"S3": 178.5,
"C17": 107.9,
"C16": 107.9,
"C15": 108.4,
"C14": 108.4,
"C13": 79.5,
"C12": 84.9,
"C11": 84.9,
"C10": 84.9,
"C9": 85.0,
"C8": 85.0,
"C7": 97.5,
"C6": 102.9,
"C5": 102.9,
"C4": 102.9,
"C3": 102.9,
"C2": 102.9,
"C1": 102.9
}
},
"unplanned_fails": [],
"secs": 140.8
},
{
"gate": "G5",
"verdict": "PASS",
"summary": {
"total": 183,
"passed": 183,
"failed": 0
},
"unplanned_fails": [],
"secs": 38.5
}
]
@@ -0,0 +1,11 @@
{
"chapters_missing": [],
"vocab_bad": [],
"finding_rows": 0,
"finding_rows_without_source": 0,
"schedule_rows": 0,
"schedule_marks": 0,
"gate_rows": 5,
"schedule_unread": true,
"ok": false
}
@@ -0,0 +1,111 @@
# 옥성교P1 교각 모델링 검토보고서 (초안)
> 앱이 게이트 결과·도면 표·승인 기록으로 자동 작성한 **초안**입니다. '오류'·'불일치' 판정과 3~5장의 서술은 담당자가 확인·확정해야 합니다. 작성일 2026-10-14 · 작성 심영표.
## 1. 개요
- 교각: 옥성교P1 (T형) · 좌표: 로컬(교각 중심 원점, X 교축직각, Y 교축, Z = EL×1000, mm) · 산출: .3dm
- 게이트 진행: 5/5 실행, **전 게이트 PASS·승인**
### 1.1 입력 도면
| 구분 | DWG | SHA-256(앞 16자) |
| :--- | :--- | :--- |
| D1 | 옥성교P1.dwg | 8cfa9ac10f9412ae |
### 1.2 게이트 결과
| 게이트 | 내용 | 판정 | 검사 PASS | 승인 | 의견 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| G1 | 형상(콘크리트·말뚝·받침대좌·패드) | PASS | 147/147 | 승인 심영표 2026-10-14 16:31:38 | 일괄 실행 자동 승인 |
| G2 | 기둥 철근 | PASS | 39/39 | 승인 심영표 2026-10-14 16:31:38 | 일괄 실행 자동 승인 |
| G3 | 확대기초 철근 | PASS | 75/75 | 승인 심영표 2026-10-14 16:31:38 | 일괄 실행 자동 승인 |
| G4 | 코핑 철근 | PASS | 251/251 | 승인 심영표 2026-10-14 16:31:38 | 일괄 실행 자동 승인 |
| G5 | 교량받침·솔플레이트 | PASS | 183/183 | 승인 심영표 2026-10-14 16:31:38 | 일괄 실행 자동 승인 |
## 2. 도면 오류·불일치
자동 등재 기준: 승인된 계획 FAIL → '불일치', 계획되지 않은 FAIL과 도면 표 값·입력값 차이 → '확인 필요'.
자동으로 찾은 항목이 없습니다.
## 3. 개선방안
[담당자 작성] 2장 항목별로 도면 수정·설계자 확인 방안을 적습니다.
## 4. 추가되어야 할 사항
[담당자 작성] 도면에 없어 추정·가정으로 모델링한 사항(입력 묶음의 `[추론]` 표기)을 정리합니다.
- 자동 확인: `[추론]` 표기가 있는 입력 묶음 — bearing_seats, column_rebar, coping_rebar, footing_rebar, materials, sole_plates
## 5. 누락사항
[담당자 작성] 도면에서 빠진 치수·표·상세를 적습니다.
## 6. 철근재료표 (원본 vs 모델)
원본 = 도면 재료표 판독값(동일 기호 " 해석 포함), 모델 = 게이트 검사의 본수 실측값.
도면 재료표를 인식하지 못했습니다(도면 미등록 또는 표 형식 상이).
## 7. 철근상세 (기록)
원길이·곡선길이·피복은 판정이 아닌 기록 값입니다(요구사항 §6.2).
### 7.1 기둥 (G2)
| 항목 | 값 |
| :--- | :--- |
| P1 curve length - L (record) | min 0.1 / max 0.1 mm |
| P2 curve length - L (record) | min 0.1 / max 0.1 mm |
| P3 curve length - L (record) | min -0.3 / max -0.3 mm |
| P4 curve length - L (record) | min 0.8 / max 0.8 mm |
| P5 curve length - L (record) | min -140.6 / max -140.6 mm |
| concrete union for cover | 1 brep |
| min cover to concrete surface per mark (record) | {"P1": 112.5, "P2": 137.5, "P3": 87.5, "P4": 93.5, "P5": 71.5} |
### 7.2 확대기초 (G3)
| 항목 | 값 |
| :--- | :--- |
| min cover to the footing surface per mark (record) | {"B1": 85.5, "B2": 85.5, "B3": 85.5, "B4": 85.5, "B5": 85.5, "B6": 63.0, "B7": 85.5, "B8": 63.0, "B9": 66.5, "B10": 68.0, "B11": 90.5, "B12": 90.5} |
### 7.3 코핑 (G4)
| 항목 | 값 |
| :--- | :--- |
| C20 mean polyline length vs L (variable mark, record) | mean 3008.3 / L 2967 (diff +41.3); min 2842 max 3091 |
| C18 mean polyline length vs L (variable mark, record) | mean 3912.2 / L 3790 (diff +122.2); min 3334 max 3947 |
| C17 mean polyline length vs L (variable mark, record) | mean 11750.0 / L 13001 (diff -1251.0); min 11750 max 11750 |
| C16 mean polyline length vs L (variable mark, record) | mean 29819.3 / L 32222 (diff -2402.7); min 29819 max 29819 |
| C15 mean polyline length vs L (variable mark, record) | mean 6674.3 / L 7632 (diff -957.7); min 3442 max 10421 |
| C14 mean polyline length vs L (variable mark, record) | mean 18827.6 / L 22584 (diff -3756.4); min 11778 max 26998 |
| C13 mean polyline length vs L (variable mark, record) | mean 6224.7 / L 6662 (diff -437.3); min 4804 max 7424 |
| C12 mean polyline length vs L (variable mark, record) | mean 8457.3 / L 9502 (diff -1044.7); min 6854 max 9814 |
| C11 mean polyline length vs L (variable mark, record) | mean 7539.9 / L 7992 (diff -452.1); min 7449 max 7557 |
| C10 mean polyline length vs L (variable mark, record) | mean 9933.3 / L 11065 (diff -1131.7); min 9843 max 9950 |
| C9 mean polyline length vs L (variable mark, record) | mean 6291.2 / L 7401 (diff -1109.8); min 4931 max 7436 |
| C8 mean polyline length vs L (variable mark, record) | mean 8523.5 / L 9570 (diff -1046.5); min 6981 max 9822 |
| C7 mean polyline length vs L (variable mark, record) | mean 13094.0 / L 14474 (diff -1380.0); min 11280 max 13424 |
| min cover to the coping surface per mark (record; seat bars measured to the coping only) | {"S6": 168.1, "S5": 157.7, "S8": 161.0, "S7": 180.0, "S2": 172.1, "S1": 136.8, "C20": 109.4, "C19": 110.5, "C18": 115.5, "S4": 156.5, "S3": 178.5, "C17": 107.9, "C16": 107.9, "C15": 108.4, "C14": 108.4, "C13": 79.5, "C12": 84.9, "C11": 84.9, "C10": 84.9, "C9": 85.0, "C8": 85.0, "C7": 97.5, "C6": 102.9, "C5": 102.9, "C4": 102.9, "C3": 102.9, "C2": 102.9, "C1": 102.9} |
## 8. 검증 방법
- 검사기는 생성 입력(params)이 아니라 도면 문자·표에서 옮긴 독립 기대값(expected)만 읽습니다.
- 게이트마다 G1부터 새로 생성 → 저장 파일을 다시 열어 검사(재로드) → 객체를 수평·수직으로 옮겨 FAIL이 나는지 확인(음성 시험) → 앞 게이트 객체 지문 비교.
- 일괄 실행(단일 Rhino 세션)으로 검사한 게이트는 중간 저장·재로드와 앞 게이트 비교를 하지 않으며, 표에 '생략(일괄 실행)'으로 적습니다. 모델은 마지막 G5만 저장합니다.
| 게이트 | 재로드 | 음성 시험 | 앞 게이트 객체 |
| :--- | :--- | :--- | :--- |
| G1 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G2 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G3 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G4 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G5 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
## 변경 이력
| 버전 | 일자 | 내용 |
| :--- | :--- | :--- |
| v0.1.00 | 2026-10-14 | 앱 자동 생성 초안 |
@@ -0,0 +1,147 @@
# 옥성교P1 교각 모델링 검토보고서 (초안)
> 앱이 게이트 결과·도면 표·승인 기록으로 자동 작성한 **초안**입니다. '오류'·'불일치' 판정과 3~5장의 서술은 담당자가 확인·확정해야 합니다. 작성일 2026-10-19 · 작성 심영표.
## 1. 개요
- 교각: 옥성교P1 (T형) · 좌표: 로컬(교각 중심 원점, X 교축직각, Y 교축, Z = EL×1000, mm) · 산출: .3dm
- 게이트 진행: 5/5 실행, **전 게이트 PASS·승인**
### 1.1 입력 도면
| 구분 | DWG | SHA-256(앞 16자) |
| :--- | :--- | :--- |
| D1 | 옥성교P1.dwg | 8cfa9ac10f9412ae |
### 1.2 게이트 결과
| 게이트 | 내용 | 판정 | 검사 PASS | 승인 | 의견 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| G1 | 형상(콘크리트·말뚝·받침대좌·패드) | PASS | 147/147 | 승인 심영표 2026-10-16 16:41:04 | 일괄 실행 자동 승인 |
| G2 | 기둥 철근 | PASS | 39/39 | 승인 심영표 2026-10-16 16:41:04 | 일괄 실행 자동 승인 |
| G3 | 확대기초 철근 | PASS | 75/75 | 승인 심영표 2026-10-16 16:41:04 | 일괄 실행 자동 승인 |
| G4 | 코핑 철근 | PASS | 251/251 | 승인 심영표 2026-10-16 16:41:04 | 일괄 실행 자동 승인 |
| G5 | 교량받침·솔플레이트 | PASS | 183/183 | 승인 심영표 2026-10-16 16:41:04 | 일괄 실행 자동 승인 |
## 2. 도면 오류·불일치
자동 등재 기준: 승인된 계획 FAIL → '불일치', 계획되지 않은 FAIL과 도면 표 값·입력값 차이 → '확인 필요'.
자동으로 찾은 항목이 없습니다.
## 3. 개선방안
[담당자 작성] 2장 항목별로 도면 수정·설계자 확인 방안을 적습니다.
## 4. 추가되어야 할 사항
[담당자 작성] 도면에 없어 추정·가정으로 모델링한 사항(입력 묶음의 `[추론]` 표기)을 정리합니다.
- 자동 확인: `[추론]` 표기가 있는 입력 묶음 — bearing_seats, column_rebar, coping_rebar, footing_rebar, materials, sole_plates
## 5. 누락사항
[담당자 작성] 도면에서 빠진 치수·표·상세를 적습니다.
## 6. 철근재료표 (원본 vs 모델)
원본 = 도면 재료표 판독값(동일 기호 " 해석 포함), 모델 = 게이트 검사의 본수 실측값.
도면 재료표를 인식하지 못했습니다(도면 미등록 또는 표 형식 상이).
## 7. 철근상세 (기록)
원길이·곡선길이·피복은 판정이 아닌 기록 값입니다(요구사항 §6.2).
### 7.1 기둥 (G2)
| 항목 | 값 |
| :--- | :--- |
| P1 curve length - L (record) | min 0.1 / max 0.1 mm |
| P2 curve length - L (record) | min 0.1 / max 0.1 mm |
| P3 curve length - L (record) | min -0.3 / max -0.3 mm |
| P4 curve length - L (record) | min 0.8 / max 0.8 mm |
| P5 curve length - L (record) | min -140.6 / max -140.6 mm |
| concrete union for cover | 1 brep |
| min cover to concrete surface per mark (record) | {"P1": 112.5, "P2": 137.5, "P3": 87.5, "P4": 93.5, "P5": 71.5} |
### 7.2 확대기초 (G3)
| 항목 | 값 |
| :--- | :--- |
| min cover to the footing surface per mark (record) | {"B1": 85.5, "B2": 85.5, "B3": 85.5, "B4": 85.5, "B5": 85.5, "B6": 63.0, "B7": 85.5, "B8": 63.0, "B9": 66.5, "B10": 68.0, "B11": 90.5, "B12": 90.5} |
### 7.3 코핑 (G4)
| 항목 | 값 |
| :--- | :--- |
| C20 mean polyline length vs L (variable mark, record) | mean 3008.3 / L 2967 (diff +41.3); min 2842 max 3091 |
| C18 mean polyline length vs L (variable mark, record) | mean 3912.2 / L 3790 (diff +122.2); min 3334 max 3947 |
| C17 mean polyline length vs L (variable mark, record) | mean 11750.0 / L 13001 (diff -1251.0); min 11750 max 11750 |
| C16 mean polyline length vs L (variable mark, record) | mean 29819.3 / L 32222 (diff -2402.7); min 29819 max 29819 |
| C15 mean polyline length vs L (variable mark, record) | mean 6674.3 / L 7632 (diff -957.7); min 3442 max 10421 |
| C14 mean polyline length vs L (variable mark, record) | mean 18827.6 / L 22584 (diff -3756.4); min 11778 max 26998 |
| C13 mean polyline length vs L (variable mark, record) | mean 6224.7 / L 6662 (diff -437.3); min 4804 max 7424 |
| C12 mean polyline length vs L (variable mark, record) | mean 8457.3 / L 9502 (diff -1044.7); min 6854 max 9814 |
| C11 mean polyline length vs L (variable mark, record) | mean 7539.9 / L 7992 (diff -452.1); min 7449 max 7557 |
| C10 mean polyline length vs L (variable mark, record) | mean 9933.3 / L 11065 (diff -1131.7); min 9843 max 9950 |
| C9 mean polyline length vs L (variable mark, record) | mean 6291.2 / L 7401 (diff -1109.8); min 4931 max 7436 |
| C8 mean polyline length vs L (variable mark, record) | mean 8523.5 / L 9570 (diff -1046.5); min 6981 max 9822 |
| C7 mean polyline length vs L (variable mark, record) | mean 13094.0 / L 14474 (diff -1380.0); min 11280 max 13424 |
| min cover to the coping surface per mark (record; seat bars measured to the coping only) | {"S6": 168.1, "S5": 157.7, "S8": 161.0, "S7": 180.0, "S2": 172.1, "S1": 136.8, "C20": 109.4, "C19": 110.5, "C18": 115.5, "S4": 156.5, "S3": 178.5, "C17": 107.9, "C16": 107.9, "C15": 108.4, "C14": 108.4, "C13": 79.5, "C12": 84.9, "C11": 84.9, "C10": 84.9, "C9": 85.0, "C8": 85.0, "C7": 97.5, "C6": 102.9, "C5": 102.9, "C4": 102.9, "C3": 102.9, "C2": 102.9, "C1": 102.9} |
## 8. 검증 방법
- 검사기는 생성 입력(params)이 아니라 도면 문자·표에서 옮긴 독립 기대값(expected)만 읽습니다.
- 게이트마다 G1부터 새로 생성 → 저장 파일을 다시 열어 검사(재로드) → 객체를 수평·수직으로 옮겨 FAIL이 나는지 확인(음성 시험) → 앞 게이트 객체 지문 비교.
- 일괄 실행(단일 Rhino 세션)으로 검사한 게이트는 중간 저장·재로드와 앞 게이트 비교를 하지 않으며, 표에 '생략(일괄 실행)'으로 적습니다. 모델은 마지막 G5만 저장합니다.
| 게이트 | 재로드 | 음성 시험 | 앞 게이트 객체 |
| :--- | :--- | :--- | :--- |
| G1 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G2 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G3 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G4 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
| G5 | 생략(일괄 실행) | 수평 검출 / 수직 검출 | 생략(일괄 실행) |
### 8.1 입력 묶음 앱 확인 결과 요약
- 앱 확인(검사 버전 B1, 2026-10-19 09:29:40): 일치 9 · 주의 4 · 불일치 0 · 근거 없음 11 · 해당 없음 8 (전체 묶음 32개).
- 앱 확인은 도면 표·재료표 수량·고정 항목을 앱이 대조한 결과입니다. '일치'는 독립 근거와 값이 같다는 뜻이며 도면이 맞다는 보증이 아닙니다. 확정은 사람이 했고, 앱 확인이 일치가 아닌 묶음은 사유가 기록되어 있습니다.
| 묶음 | 앱 확인 | 근거 | 사람 확정 |
| :--- | :--- | :--- | :--- |
| expected:G1 | 일치 | C2 표 후보 10건이 현재 값과 모두 같다 | 심영표 2026-10-14 11:18:23 |
| expected:G5 | 일치 | C2 표 후보 60건이 현재 값과 모두 같다 | 심영표 2026-10-14 11:18:23 |
| expected:checkers | 일치 | C7 템플릿 복사 기록은 없지만 보호 템플릿 1종(옥성교P1형)과 같은 값이다 | 심영표 2026-10-16 16:38:03 |
| expected:negative | 일치 | C7 템플릿 복사 기록은 없지만 보호 템플릿 2종(새재1교P1형, 옥성교P1형)과 같은 값이다 | 심영표 2026-10-14 16:28:33 |
| params:bearing_seats | 일치 | C2 표 후보 50건이 현재 값과 모두 같다 | 심영표 2026-10-14 11:18:23 |
| params:builders | 일치 | C7 템플릿 복사 기록은 없지만 보호 템플릿 2종(새재1교P1형, 옥성교P1형)과 같은 값이다 | 심영표 2026-10-14 16:28:33 |
| params:display | 일치 | C7 템플릿 복사 기록은 없지만 보호 템플릿 4종(산외교울산P1형, 산외교울산P2형, 새재1교P1형)과 같은 값이다 | 심영표 2026-10-14 11:18:23 |
| params:scope | 일치 | C7 템플릿 복사 기록은 없지만 보호 템플릿 5종(Ramp-A교P1형, 산외교울산P1형, 산외교울산P2형)과 같은 값이다 | 심영표 2026-10-14 16:28:33 |
| params:sole_plates | 일치 | C2 표 후보 41건이 현재 값과 모두 같다 | 심영표 2026-10-14 11:18:23 |
| expected:G3 | 주의 | C4 생성 목록 수량 12건이 재료표 수량과 같다 (위치·좌표는 확인하지 않음) — 수량만 확인, 위치·좌표는 도면과 직접 대조 | 심영표 2026-10-14 11:18:23 |
| expected:G4 | 주의 | C4 생성 목록 수량 28건이 재료표 수량과 같다 (위치·좌표는 확인하지 않음) — 수량만 확인, 위치·좌표는 도면과 직접 대조 | 심영표 2026-10-14 16:28:33 |
| params:coping_rebar | 주의 | C4 생성 목록 수량 28건이 재료표 수량과 같다 (위치·좌표는 확인하지 않음) — 수량만 확인, 위치·좌표는 도면과 직접 대조 | 심영표 2026-10-14 16:28:33 |
| params:footing_rebar | 주의 | C4 생성 목록 수량 12건이 재료표 수량과 같다 (위치·좌표는 확인하지 않음) — 수량만 확인, 위치·좌표는 도면과 직접 대조 | 심영표 2026-10-14 11:18:23 |
| expected:G2 | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| expected:pier_id | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:column | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:column_rebar | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:coping | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:footing | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:lean_concrete | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:materials | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:pier_id | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:piles | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 11:18:23 |
| params:rebar_marks | 근거 없음 | 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 심영표 2026-10-14 16:28:33 |
| expected:planned_fail | 해당 없음 | 사람 결정 기록 또는 참고 정보 — 앱이 도면과 대조하지 않는다 | 심영표 2026-10-14 11:18:23 |
| expected:rebar_palette | 해당 없음 | 사람 결정 기록 또는 참고 정보 — 앱이 도면과 대조하지 않는다 | 심영표 2026-10-14 11:18:23 |
| expected:tol_mm | 해당 없음 | 사람 결정 기록 또는 참고 정보 — 앱이 도면과 대조하지 않는다 | 심영표 2026-10-14 11:18:23 |
| params:rebar_marks_src | 해당 없음 | 참고 정보 | 미확정 |
## 변경 이력
| 버전 | 일자 | 내용 |
| :--- | :--- | :--- |
| v0.1.00 | 2026-10-19 | 앱 자동 생성 초안 |